Commit | Line | Data |
5f51ce50 |
1 | ?RCS: $Id: dlsrc.U,v$ |
2 | ?RCS: |
3 | ?RCS: You may redistribute only under the terms of the Artistic Licence, |
4 | ?RCS: as specified in the README file that comes with the distribution. |
5 | ?RCS: You may reuse parts of this distribution only within the terms of |
6 | ?RCS: that same Artistic Licence; a copy of which may be found at the root |
7 | ?RCS: of the source tree for dist 3.0. |
8 | ?RCS: |
9 | ?RCS: $Log: dlsrc.U,v $ |
10 | ?RCS: |
11 | ?X: hpux support thanks to Jeff Okamoto <okamoto@hpcc101.corp.hp.com> |
12 | ?X: |
13 | ?X: To create a shared library, you must compile ALL source files in the |
14 | ?X: library with +z (or possibly +Z if the library is whopping huge), |
15 | ?X: then link the library with -b. Example: |
16 | ?X: cc -c +z module_a.c |
17 | ?X: cc -c +z module_b.c |
18 | ?X: ld -b module_a.o module_b.o -o module.sl |
19 | ?X: |
20 | ?MAKE:usedl dlsrc cccdlflags lddlflags ccdlflags d_shrplib shrpdir: \ |
21 | Getfile Myread test osname sed i_dld d_dlopen Findhdr Setvar \ |
22 | cc ldflags cat archlib |
23 | ?MAKE: -pick add $@ %< |
24 | ?S:usedl: |
25 | ?S: This variable indicates if the the system supports dynamic |
26 | ?S: loading of some sort. See also dlsrc and dlobj. |
27 | ?S:. |
28 | ?S:dlsrc: |
29 | ?S: This variable contains the name of the dynamic loading file that |
30 | ?S: will be used with the package. |
31 | ?S:. |
32 | ?S:cccdlflags: |
33 | ?S: This variable contains any special flags that might need to be |
34 | ?S: passed with cc -c to compile modules to be used to create a shared |
35 | ?S: library that will be used for dynamic loading. For hpux, this |
36 | ?S: should be +z. It is up to the makefile to use it. |
37 | ?S:. |
38 | ?S:lddlflags: |
39 | ?S: This variable contains any special flags that might need to be |
40 | ?S: passed to ld to create a shared library suitable for dynamic |
41 | ?S: loading. It is up to the makefile to use it. For hpux, it |
42 | ?S: should be -b. For sunos 4.1, it is empty. |
43 | ?S:. |
44 | ?S:ccdlflags: |
45 | ?S: This variable contains any special flags that might need to be |
46 | ?S: passed to cc to link with a shared library for dynamic loading. |
47 | ?S: It is up to the makefile to use it. For sunos 4.1, it should |
48 | ?S: be empty. |
49 | ?S:. |
50 | ?S:d_shrplib: |
51 | ?S: This variable indicates whether libperl should be made as a |
52 | ?S: shared library. This must be true for dynamic loading to |
53 | ?S: work on (some) System V Release 4 systems. |
54 | ?S:. |
55 | ?S:shrpdir: |
56 | ?S: This variable contains the directory where the libperl shared |
57 | ?S: library will be installed. LD_RUN_PATH is set to this when |
58 | ?S: linking with libperl (unless it is /usr/lib, the default). |
59 | ?S:. |
60 | ?C:USE_DYNAMIC_LOADING ~ %<: |
61 | ?C: This symbol, if defined, indicates that dynamic loading of |
62 | ?C: some sort is available. |
63 | ?C:. |
64 | ?H:?%<:#$usedl USE_DYNAMIC_LOADING /**/ |
65 | ?H:. |
66 | ?W:%<:dlopen |
67 | ?LINT: set d_shrplib shrpdir |
68 | ?T:dldir |
69 | : determine which dynamic loading, if any, to compile in |
70 | echo " " |
71 | dldir="ext/DynaLoader" |
72 | case "$usedl" in |
73 | $define|y|true) |
74 | dflt='y' |
75 | usedl="$define" |
76 | ;; |
77 | $undef|n|false) |
78 | dflt='n' |
79 | usedl="$undef" |
80 | ;; |
81 | *) |
82 | dflt='n' |
83 | case "$d_dlopen" in |
84 | $define) dflt='y' ;; |
85 | esac |
86 | case "$i_dld" in |
87 | $define) dflt='y' ;; |
88 | esac |
89 | : Does a dl_xxx.xs file exist for this operating system |
90 | $test -f ../$dldir/dl_${osname}.xs && dflt='y' |
91 | ;; |
92 | esac |
93 | rp="Do you wish to use dynamic loading?" |
94 | . ./myread |
95 | usedl="$ans" |
96 | case "$ans" in |
97 | y*) usedl="$define" |
98 | case "$dlsrc" in |
99 | '') |
100 | if $test -f ../$dldir/dl_${osname}.xs ; then |
101 | dflt="$dldir/dl_${osname}.xs" |
102 | elif $test "$d_dlopen" = "$define" ; then |
103 | dflt="$dldir/dl_dlopen.xs" |
104 | elif $test "$i_dld" = "$define" ; then |
105 | dflt="$dldir/dl_dld.xs" |
106 | else |
107 | dflt='' |
108 | fi |
109 | ;; |
110 | *) dflt="$dldir/$dlsrc" |
111 | ;; |
112 | esac |
113 | echo "The following dynamic loading files are available:" |
114 | : Can not go over to $dldir because getfile has path hard-coded in. |
115 | cd ..; ls -C $dldir/dl*.xs; cd UU |
116 | rp="Source file to use for dynamic loading" |
fed7345c |
117 | fn="fne" |
5f51ce50 |
118 | . ./getfile |
119 | usedl="$define" |
120 | : emulate basename |
121 | dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'` |
122 | $cat << EOM |
123 | |
124 | Some systems may require passing special flags to $cc -c to |
125 | compile modules that will be used to create a shared library. |
126 | To use no flags, say "none". |
127 | |
128 | EOM |
129 | case "$cccdlflags" in |
130 | ''|' ') case "$cc" in |
131 | *gcc*) dflt='-fpic' ;; |
132 | *) case "$osname" in |
133 | hpux) dflt='+z' ;; |
134 | next) dflt='none' ;; |
135 | solaris) dflt='-K pic' ;; |
136 | sunos) dflt='-pic' ;; |
137 | svr4*|esix*) dflt='-Kpic' ;; |
138 | *) dflt='none' ;; |
139 | esac ;; |
140 | esac ;; |
141 | *) dflt="$cccdlflags" ;; |
142 | esac |
143 | rp="Any special flags to pass to $cc -c to compile shared library modules?" |
144 | . ./myread |
145 | case "$ans" in |
146 | none) cccdlflags='' ;; |
147 | *) cccdlflags="$ans" ;; |
148 | esac |
149 | |
150 | cat << 'EOM' |
151 | |
152 | Some systems may require passing special flags to ld to create a |
153 | library that can be dynamically loaded. If your ld flags include |
154 | -L/other/path options to locate libraries outside your loader's normal |
155 | search path, you may need to specify those -L options here as well. To |
156 | use no flags, say "none". |
157 | |
158 | EOM |
159 | ?X: I have received one report that NeXT requires -r here. |
160 | ?X: On SunOS 4.1.3, that makes the library no longer shared. |
161 | ?X: This stuff probably all belongs in hints files anyway. |
162 | case "$lddlflags" in |
163 | ''|' ') case "$osname" in |
164 | hpux) dflt='-b' ;; |
165 | next) dflt='none' ;; |
166 | solaris) dflt='-G' ;; |
167 | sunos) dflt='-assert nodefinitions' ;; |
168 | svr4*|esix*) dflt="-G $ldflags" ;; |
169 | *) dflt='none' ;; |
170 | esac |
171 | ;; |
172 | *) dflt="$lddlflags" ;; |
173 | esac |
174 | rp="Any special flags to pass to ld to create a dynamically loaded library?" |
175 | . ./myread |
176 | case "$ans" in |
177 | none) lddlflags='' ;; |
178 | *) lddlflags="$ans" ;; |
179 | esac |
180 | |
181 | cat <<EOM |
182 | |
183 | Some systems may require passing special flags to $cc to indicate that |
184 | the resulting executable will use dynamic linking. To use no flags, |
185 | say "none". |
186 | |
187 | EOM |
188 | case "$ccdlflags" in |
189 | ''|' ') case "$osname" in |
190 | hpux) dflt='none' ;; |
191 | next) dflt='none' ;; |
192 | sunos) dflt='none' ;; |
193 | *) dflt='none' ;; |
194 | esac ;; |
195 | *) dflt="$ccdlflags" ;; |
196 | esac |
197 | rp="Any special flags to pass to $cc to use dynamic loading?" |
198 | . ./myread |
199 | case "$ans" in |
200 | none) ccdlflags='' ;; |
201 | *) ccdlflags="$ans" ;; |
202 | esac |
203 | ;; |
204 | ?X: End of usedl=y section |
205 | *) usedl="$undef" |
206 | dlsrc='dl_none.xs' |
207 | lddlflags='' |
208 | ccdlflags='' |
209 | ;; |
210 | esac |
211 | |
212 | ?X: Currently libperl is only created as a shared library if |
213 | ?X: using dynamic loading on a SysVR4 system. Feel free to |
214 | ?X: add prompts here to allow the user to choose a shared |
215 | ?X: libperl in other cases. |
216 | val="$undef" |
217 | case "$osname" in |
218 | esix*|svr4*) |
219 | case "$usedl" in |
220 | $define) |
221 | $cat <<EOM |
222 | |
223 | System V Release 4 systems can support dynamic loading |
224 | only if libperl is created as a shared library. |
225 | |
226 | EOM |
227 | val="$define" |
228 | ;; |
229 | esac ;; |
230 | esac |
231 | set d_shrplib; eval $setvar |
232 | case "$d_shrplib" in |
233 | $define) |
234 | cat <<EOM >&4 |
235 | |
236 | Be sure to add the perl source directory to the LD_LIBRARY_PATH |
237 | environment variable before running make: |
238 | LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH |
239 | or |
240 | setenv LD_LIBRARY_PATH `cd ..;pwd` |
241 | |
242 | EOM |
243 | ;; |
244 | esac |
245 | case "$d_shrplib" in |
246 | $define) |
247 | case "$shrpdir" in |
248 | "") dflt="$archlib/CORE";; |
249 | *) dflt="$shrpdir";; |
250 | esac |
251 | rp="What directory should we install the shared libperl into?" |
252 | fn="d~" |
253 | . ./getfile |
254 | shrpdir="$ans" |
255 | ;; |
256 | *) shrpdir='none' |
257 | ;; |
258 | esac |
259 | |