Commit | Line | Data |
---|---|---|
7d00a340 N |
1 | /* just define a list of macros to push elements in INC |
2 | * so we can easily use them and change order on demand | |
3 | * | |
4 | * list of available INCPUSH macros | |
5 | * - INCPUSH_APPLLIB_EXP | |
6 | * - INCPUSH_SITEARCH_EXP | |
7 | * - INCPUSH_SITELIB_EXP | |
8 | * - INCPUSH_PERL_VENDORARCH_EXP | |
9 | * - INCPUSH_PERL_VENDORLIB_EXP | |
10 | * - INCPUSH_ARCHLIB_EXP | |
11 | * - INCPUSH_PRIVLIB_EXP | |
12 | * - INCPUSH_PERL_OTHERLIBDIRS | |
13 | * - INCPUSH_PERL5LIB | |
14 | * - INCPUSH_APPLLIB_OLD_EXP | |
15 | * - INCPUSH_SITELIB_STEM | |
16 | * - INCPUSH_PERL_VENDORLIB_STEM | |
17 | * - INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY | |
18 | */ | |
19 | ||
20 | #ifndef DEFINE_INC_MACROS | |
21 | ||
22 | /* protect against multiple inclusions */ | |
23 | #define DEFINE_INC_MACROS 1 | |
24 | ||
25 | #ifdef APPLLIB_EXP | |
26 | # define INCPUSH_APPLLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ | |
27 | INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); | |
28 | #endif | |
29 | ||
30 | #ifdef SITEARCH_EXP | |
31 | /* sitearch is always relative to sitelib on Windows for | |
32 | * DLL-based path intuition to work correctly */ | |
33 | # if !defined(WIN32) | |
34 | # define INCPUSH_SITEARCH_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITEARCH_EXP), \ | |
35 | INCPUSH_CAN_RELOCATE); | |
36 | # endif | |
37 | #endif | |
38 | ||
39 | #ifdef SITELIB_EXP | |
40 | # if defined(WIN32) | |
41 | /* this picks up sitearch as well */ | |
42 | # define INCPUSH_SITELIB_EXP s = PerlEnv_sitelib_path(PERL_FS_VERSION, &len); \ | |
43 | if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); | |
44 | # else | |
45 | # define INCPUSH_SITELIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_EXP), \ | |
46 | INCPUSH_CAN_RELOCATE); | |
47 | # endif | |
48 | #endif | |
49 | ||
50 | #ifdef PERL_VENDORARCH_EXP | |
51 | /* vendorarch is always relative to vendorlib on Windows for | |
52 | * DLL-based path intuition to work correctly */ | |
53 | # if !defined(WIN32) | |
54 | # define INCPUSH_PERL_VENDORARCH_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORARCH_EXP), INCPUSH_CAN_RELOCATE); | |
55 | # endif | |
56 | #endif | |
57 | ||
58 | #ifdef PERL_VENDORLIB_EXP | |
59 | # if defined(WIN32) | |
60 | /* this picks up vendorarch as well */ | |
61 | # define INCPUSH_PERL_VENDORLIB_EXP s = PerlEnv_vendorlib_path(PERL_FS_VERSION, &len); \ | |
62 | if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); | |
63 | # else | |
64 | # define INCPUSH_PERL_VENDORLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_EXP), INCPUSH_CAN_RELOCATE); | |
65 | # endif | |
66 | #endif | |
67 | ||
68 | #ifdef ARCHLIB_EXP | |
69 | # define INCPUSH_ARCHLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(ARCHLIB_EXP), INCPUSH_CAN_RELOCATE); | |
70 | #endif | |
71 | ||
72 | /* used by INCPUSH_PRIVLIB_EXP */ | |
73 | #ifndef PRIVLIB_EXP | |
74 | # define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" | |
75 | #endif | |
76 | ||
77 | #if defined(WIN32) | |
78 | # define INCPUSH_PRIVLIB_EXP s = PerlEnv_lib_path(PERL_FS_VERSION, &len); \ | |
79 | if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE); | |
80 | #elif defined(NETWARE) | |
81 | # define INCPUSH_PRIVLIB_EXP S_incpush_use_sep(aTHX_ PRIVLIB_EXP, 0, INCPUSH_CAN_RELOCATE); | |
82 | #else | |
83 | # define INCPUSH_PRIVLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PRIVLIB_EXP), INCPUSH_CAN_RELOCATE); | |
84 | #endif | |
85 | ||
86 | #ifdef PERL_OTHERLIBDIRS | |
87 | # define INCPUSH_PERL_OTHERLIBDIRS S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ | |
88 | INCPUSH_ADD_VERSIONED_SUB_DIRS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); | |
89 | #endif | |
90 | ||
91 | ||
92 | /* submacros for INCPUSH_PERL5LIB */ | |
93 | ||
94 | #if defined(PERL_USE_SAFE_PUTENV) && ! defined(HAS_UNSETENV) | |
95 | # define _INCPUSH_PERL5LIB_IF if (perl5lib && *perl5lib != '\0') | |
96 | #else | |
97 | # define _INCPUSH_PERL5LIB_IF if (perl5lib) | |
98 | #endif | |
99 | ||
100 | #ifndef VMS | |
101 | /* | |
102 | * It isn't possible to delete an environment variable with | |
103 | * PERL_USE_SAFE_PUTENV set unless unsetenv() is also available, so in that | |
104 | * case we treat PERL5LIB as undefined if it has a zero-length value. | |
105 | */ | |
106 | # define _INCPUSH_PERL5LIB_ADD _INCPUSH_PERL5LIB_IF incpush_use_sep(perl5lib, 0, INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR); | |
107 | #else | |
108 | /* VMS */ | |
109 | /* Treat PERL5?LIB as a possible search list logical name -- the | |
110 | * "natural" VMS idiom for a Unix path string. We allow each | |
111 | * element to be a set of |-separated directories for compatibility. | |
112 | */ | |
113 | # define _INCPUSH_PERL5LIB_ADD char buf[256]; \ | |
114 | int idx = 0; \ | |
115 | if (vmstrnenv("PERL5LIB",buf,0,NULL,0)) \ | |
116 | do { \ | |
117 | incpush_use_sep(buf, 0, \ | |
118 | INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR); \ | |
119 | } while (vmstrnenv("PERL5LIB",buf,++idx,NULL,0)); | |
120 | #endif | |
121 | ||
122 | /* this macro is special and use submacros from above */ | |
123 | #define INCPUSH_PERL5LIB if (!TAINTING_get) { _INCPUSH_PERL5LIB_ADD } | |
124 | ||
125 | /* Use the ~-expanded versions of APPLLIB (undocumented), | |
126 | SITELIB and VENDORLIB for older versions | |
127 | */ | |
128 | #ifdef APPLLIB_EXP | |
129 | # define INCPUSH_APPLLIB_OLD_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), \ | |
130 | INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); | |
131 | #endif | |
132 | ||
133 | #if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST) | |
134 | /* Search for version-specific dirs below here */ | |
135 | # define INCPUSH_SITELIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_STEM), \ | |
136 | INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); | |
137 | #endif | |
138 | ||
139 | ||
140 | #if defined(PERL_VENDORLIB_STEM) && defined(PERL_INC_VERSION_LIST) | |
141 | /* Search for version-specific dirs below here */ | |
142 | # define INCPUSH_PERL_VENDORLIB_STEM S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_STEM), \ | |
143 | INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); | |
144 | #endif | |
145 | ||
146 | #ifdef PERL_OTHERLIBDIRS | |
147 | # define INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), \ | |
148 | INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS|INCPUSH_CAN_RELOCATE); | |
149 | #endif | |
150 | ||
151 | ||
152 | /* define all undefined macros... */ | |
153 | #ifndef INCPUSH_APPLLIB_EXP | |
154 | #define INCPUSH_APPLLIB_EXP | |
155 | #endif | |
156 | #ifndef INCPUSH_SITEARCH_EXP | |
157 | #define INCPUSH_SITEARCH_EXP | |
158 | #endif | |
159 | #ifndef INCPUSH_SITELIB_EXP | |
160 | #define INCPUSH_SITELIB_EXP | |
161 | #endif | |
162 | #ifndef INCPUSH_PERL_VENDORARCH_EXP | |
163 | #define INCPUSH_PERL_VENDORARCH_EXP | |
164 | #endif | |
165 | #ifndef INCPUSH_PERL_VENDORLIB_EXP | |
166 | #define INCPUSH_PERL_VENDORLIB_EXP | |
167 | #endif | |
ea5f21e3 SH |
168 | #ifndef INCPUSH_ARCHLIB_EXP |
169 | #define INCPUSH_ARCHLIB_EXP | |
170 | #endif | |
7d00a340 N |
171 | #ifndef INCPUSH_PRIVLIB_EXP |
172 | #define INCPUSH_PRIVLIB_EXP | |
173 | #endif | |
174 | #ifndef INCPUSH_PERL_OTHERLIBDIRS | |
175 | #define INCPUSH_PERL_OTHERLIBDIRS | |
176 | #endif | |
177 | #ifndef INCPUSH_PERL5LIB | |
178 | #define INCPUSH_PERL5LIB | |
179 | #endif | |
180 | #ifndef INCPUSH_APPLLIB_OLD_EXP | |
181 | #define INCPUSH_APPLLIB_OLD_EXP | |
182 | #endif | |
183 | #ifndef INCPUSH_SITELIB_STEM | |
184 | #define INCPUSH_SITELIB_STEM | |
185 | #endif | |
186 | #ifndef INCPUSH_PERL_VENDORLIB_STEM | |
187 | #define INCPUSH_PERL_VENDORLIB_STEM | |
188 | #endif | |
189 | #ifndef INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY | |
190 | #define INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY | |
191 | #endif | |
192 | ||
ea5f21e3 | 193 | #endif /* DEFINE_INC_MACROS */ |