]>
Commit | Line | Data |
---|---|---|
b72432fd JA |
1 | #! /bin/sh |
2 | # | |
3 | # shobj-conf -- output a series of variable assignments to be substituted | |
4 | # into a Makefile by configure which specify system-dependent | |
5 | # information for creating shared objects that may be loaded | |
6 | # into bash with `enable -f' | |
7 | # | |
8 | # usage: shobj-conf [-C compiler] -c host_cpu -o host_os -v host_vendor | |
9 | # | |
10 | # Chet Ramey | |
11 | # chet@po.cwru.edu | |
12 | ||
13 | # | |
14 | # defaults | |
15 | # | |
16 | SHOBJ_STATUS=supported | |
17 | SHLIB_STATUS=supported | |
18 | ||
19 | SHOBJ_CC=cc | |
20 | SHOBJ_CFLAGS= | |
21 | SHOBJ_LD= | |
22 | SHOBJ_LDFLAGS= | |
23 | SHOBJ_XLDFLAGS= | |
24 | SHOBJ_LIBS= | |
25 | ||
26 | SHLIB_XLDFLAGS= | |
27 | SHLIB_LIBS= | |
28 | SHLIB_LIBSUFF='so' | |
29 | ||
30 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' | |
31 | ||
32 | PROGNAME=`basename $0` | |
33 | USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" | |
34 | ||
35 | while [ $# -gt 0 ]; do | |
36 | case "$1" in | |
37 | -C) shift; SHOBJ_CC="$1"; shift ;; | |
38 | -c) shift; host_cpu="$1"; shift ;; | |
39 | -o) shift; host_os="$1"; shift ;; | |
40 | -v) shift; host_vendor="$1"; shift ;; | |
41 | *) echo "$USAGE" >&2 ; exit 2;; | |
42 | esac | |
43 | done | |
44 | ||
45 | case "${host_os}-${SHOBJ_CC}" in | |
28ef6c31 | 46 | sunos4*-*gcc*) |
b72432fd JA |
47 | SHOBJ_CFLAGS=-fpic |
48 | SHOBJ_LD=/usr/bin/ld | |
49 | SHOBJ_LDFLAGS='-assert pure-text' | |
50 | ||
51 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
52 | ;; | |
53 | ||
54 | sunos4*) | |
55 | SHOBJ_CFLAGS=-pic | |
56 | SHOBJ_LD=/usr/bin/ld | |
57 | SHOBJ_LDFLAGS='-assert pure-text' | |
58 | ||
59 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
60 | ;; | |
61 | ||
28ef6c31 | 62 | sunos5*-*gcc*|solaris2*-*gcc*) |
b72432fd JA |
63 | SHOBJ_CFLAGS=-fpic |
64 | SHOBJ_LD='${CC}' | |
bb70624e | 65 | SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' |
b72432fd | 66 | |
bb70624e | 67 | # SHLIB_XLDFLAGS='-R $(libdir)' |
b72432fd JA |
68 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
69 | ;; | |
70 | ||
71 | sunos5*|solaris2*) | |
72 | SHOBJ_CFLAGS='-K pic' | |
73 | SHOBJ_LD=/usr/ccs/bin/ld | |
74 | SHOBJ_LDFLAGS='-G -dy -z text -i -h $@' | |
75 | ||
bb70624e | 76 | # SHLIB_XLDFLAGS='-R $(libdir)' |
b72432fd JA |
77 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
78 | ;; | |
79 | ||
80 | freebsd2* | netbsd* | openbsd*) | |
81 | SHOBJ_CFLAGS=-fpic | |
82 | SHOBJ_LD=ld | |
83 | SHOBJ_LDFLAGS='-x -Bshareable' | |
84 | ||
85 | SHLIB_XLDFLAGS='-R$(libdir)' | |
86 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
87 | ;; | |
88 | ||
bb70624e JA |
89 | # FreeBSD-3.x can have either a.out or ELF object files |
90 | #freebsd3*) | |
91 | # SHOBJ_CFLAGS=-fpic | |
92 | # SHOBJ_LD='${CC}' | |
93 | # SHOBJ_LDFLAGS='-shared' | |
94 | # | |
95 | # SHLIB_XLDFLAGS='-R$(libdir)' | |
96 | # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
97 | # ;; | |
98 | ||
99 | # FreeBSD-3.x ELF | |
28ef6c31 | 100 | freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*) |
b72432fd JA |
101 | SHOBJ_CFLAGS=-fpic |
102 | SHOBJ_LD='${CC}' | |
b72432fd | 103 | |
bb70624e JA |
104 | if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then |
105 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
106 | ||
107 | SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' | |
108 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
109 | else | |
110 | SHOBJ_LDFLAGS='-shared' | |
111 | ||
112 | SHLIB_XLDFLAGS='-R$(libdir)' | |
113 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
114 | fi | |
b72432fd | 115 | ;; |
28ef6c31 JA |
116 | # All versions of Linux or the semi-mythical GNU Hurd. |
117 | linux*|gnu*) | |
b72432fd JA |
118 | SHOBJ_CFLAGS=-fPIC |
119 | SHOBJ_LD='${CC}' | |
120 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
121 | ||
28ef6c31 | 122 | SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' |
b72432fd JA |
123 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
124 | ;; | |
125 | ||
126 | bsdi2*) | |
127 | SHOBJ_CC=shlicc2 | |
128 | SHOBJ_CFLAGS= | |
129 | SHOBJ_LD=ld | |
130 | SHOBJ_LDFLAGS=-r | |
131 | SHOBJ_LIBS=-lc_s.2.1.0 | |
132 | ||
133 | # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in | |
134 | # the ass -- they require changing {/usr/lib,etc}/shlib.map on | |
135 | # each system, and the library creation process is byzantine | |
136 | SHLIB_STATUS=unsupported | |
137 | ;; | |
138 | ||
139 | bsdi3*) | |
140 | SHOBJ_CC=shlicc2 | |
141 | SHOBJ_CFLAGS= | |
142 | SHOBJ_LD=ld | |
143 | SHOBJ_LDFLAGS=-r | |
144 | SHOBJ_LIBS=-lc_s.3.0.0 | |
145 | ||
146 | # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in | |
147 | # the ass -- they require changing {/usr/lib,etc}/shlib.map on | |
148 | # each system, and the library creation process is byzantine | |
149 | SHLIB_STATUS=unsupported | |
150 | ;; | |
151 | ||
152 | bsdi4*) | |
153 | # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked | |
154 | # shared libraries. gcc 2.x is the standard compiler, and the | |
155 | # `normal' gcc options should work as they do in Linux. | |
156 | ||
157 | SHOBJ_CFLAGS=-fPIC | |
158 | SHOBJ_LD='${CC}' | |
159 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
160 | ||
28ef6c31 | 161 | SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`' |
b72432fd JA |
162 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
163 | ;; | |
164 | ||
28ef6c31 | 165 | osf*-*gcc*) |
bb70624e JA |
166 | # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE |
167 | SHOBJ_LD='${CC}' | |
168 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
169 | ||
170 | SHLIB_XLDFLAGS='-rpath $(libdir)' | |
171 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
172 | ;; | |
173 | ||
b72432fd JA |
174 | osf*) |
175 | SHOBJ_LD=ld | |
176 | SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"' | |
177 | ||
178 | SHLIB_XLDFLAGS='-rpath $(libdir)' | |
179 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
180 | ;; | |
181 | ||
28ef6c31 | 182 | aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com |
b72432fd JA |
183 | SHOBJ_CFLAGS=-fpic |
184 | SHOBJ_LD='ld' | |
185 | SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' | |
186 | SHOBJ_XLDFLAGS='-G' | |
187 | ||
188 | SHLIB_XLDFLAGS='-bM:SRE' | |
189 | SHLIB_LIBS='-lcurses -lc' | |
190 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
191 | ;; | |
192 | ||
193 | aix4.[2-9]*) | |
194 | SHOBJ_CFLAGS=-K | |
195 | SHOBJ_LD='ld' | |
196 | SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' | |
197 | SHOBJ_XLDFLAGS='-G' | |
198 | ||
199 | SHLIB_XLDFLAGS='-bM:SRE' | |
200 | SHLIB_LIBS='-lcurses -lc' | |
201 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
202 | ;; | |
203 | ||
204 | # | |
205 | # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface | |
206 | # | |
28ef6c31 | 207 | irix[56]*-*gcc*) |
b72432fd JA |
208 | SHOBJ_CFLAGS='-fpic' |
209 | SHOBJ_LD='${CC}' | |
210 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
211 | ||
212 | SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' | |
213 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
214 | ;; | |
215 | ||
216 | irix[56]*) | |
217 | SHOBJ_CFLAGS='-K PIC' | |
218 | SHOBJ_LD=ld | |
bb70624e | 219 | # SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@' |
28ef6c31 JA |
220 | # Change from David Kaelbling <drk@sgi.com>. If you have problems, |
221 | # remove the `-no_unresolved' | |
bb70624e | 222 | SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@' |
b72432fd JA |
223 | |
224 | SHLIB_XLDFLAGS='-rpath $(libdir)' | |
225 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
226 | ;; | |
227 | ||
28ef6c31 | 228 | hpux9*-*gcc*) |
b72432fd JA |
229 | # must use gcc; the bundled cc cannot compile PIC code |
230 | SHOBJ_CFLAGS='-fpic' | |
231 | SHOBJ_LD='${CC}' | |
232 | SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' | |
233 | ||
234 | SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' | |
235 | SHLIB_LIBSUFF='sl' | |
236 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
237 | ;; | |
238 | ||
239 | hpux9*) | |
240 | SHOBJ_STATUS=unsupported | |
241 | SHLIB_STATUS=unsupported | |
242 | ;; | |
243 | ||
28ef6c31 | 244 | hpux10*-*gcc*) |
b72432fd JA |
245 | # must use gcc; the bundled cc cannot compile PIC code |
246 | SHOBJ_CFLAGS='-fpic' | |
247 | SHOBJ_LD='${CC}' | |
248 | SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' | |
249 | ||
250 | SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' | |
251 | SHLIB_LIBSUFF='sl' | |
252 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
253 | ;; | |
254 | ||
255 | hpux10*) | |
256 | SHOBJ_STATUS=unsupported | |
257 | SHLIB_STATUS=unsupported | |
28ef6c31 JA |
258 | |
259 | # If you are using the HP ANSI C compiler, you can uncomment and use | |
260 | # this code | |
261 | # SHOBJ_STATUS=unsupported | |
262 | # SHLIB_STATUS=unsupported | |
263 | # | |
264 | # SHOBJ_CFLAGS='+z' | |
265 | # SHOBJ_LD='ld' | |
266 | # SHOBJ_LDFLAGS='-b' | |
267 | # | |
268 | # SHLIB_XLDFLAGS='' | |
269 | # SHLIB_LIBSUFF='sl' | |
270 | # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
b72432fd JA |
271 | ;; |
272 | ||
28ef6c31 | 273 | hpux11*-*gcc*) |
b72432fd JA |
274 | # must use gcc; the bundled cc cannot compile PIC code |
275 | SHOBJ_CFLAGS='-fpic' | |
276 | SHOBJ_LD='${CC}' | |
277 | # SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@' | |
28ef6c31 | 278 | SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@' |
b72432fd JA |
279 | |
280 | SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' | |
281 | SHLIB_LIBSUFF='sl' | |
282 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
283 | ;; | |
284 | ||
285 | hpux11*) | |
286 | SHOBJ_STATUS=unsupported | |
287 | SHLIB_STATUS=unsupported | |
28ef6c31 JA |
288 | |
289 | # If you are using the HP ANSI C compiler, you can uncomment and use | |
290 | # this code | |
291 | # SHOBJ_STATUS=unsupported | |
292 | # SHLIB_STATUS=unsupported | |
293 | # | |
294 | # SHOBJ_CFLAGS='+z' | |
295 | # SHOBJ_LD='ld' | |
296 | # SHOBJ_LDFLAGS='-b' | |
297 | # | |
298 | # SHLIB_XLDFLAGS='' | |
299 | # SHLIB_LIBSUFF='sl' | |
300 | # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
301 | ||
b72432fd JA |
302 | ;; |
303 | ||
28ef6c31 | 304 | sysv4*-*gcc*) |
b72432fd JA |
305 | SHOBJ_CFLAGS=-shared |
306 | SHOBJ_LDFLAGS='-shared -h $@' | |
307 | SHOBJ_LD='${CC}' | |
308 | ||
309 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
310 | ;; | |
311 | ||
312 | sysv4*) | |
313 | SHOBJ_CFLAGS='-K PIC' | |
314 | SHOBJ_LD=ld | |
315 | SHOBJ_LDFLAGS='-dy -z text -G -h $@' | |
316 | ||
317 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
318 | ;; | |
319 | ||
28ef6c31 | 320 | sco3.2v5*-*gcc*) |
b72432fd JA |
321 | SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF |
322 | SHOBJ_LD='${CC}' | |
323 | SHOBJ_LDFLAGS='-shared' | |
324 | ||
325 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
326 | ;; | |
327 | ||
328 | sco3.2v5*) | |
329 | SHOBJ_CFLAGS='-K pic -b elf' | |
330 | SHOBJ_LD=ld | |
331 | SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@' | |
332 | ||
333 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
334 | ;; | |
335 | ||
28ef6c31 | 336 | sysv5uw7*-*gcc*) |
b72432fd JA |
337 | SHOBJ_CFLAGS='-fpic' |
338 | SHOBJ_LD='${CC}' | |
339 | SHOBJ_LDFLAGS='-shared' | |
340 | ||
341 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
342 | ;; | |
343 | ||
344 | sysv5uw7*) | |
345 | SHOBJ_CFLAGS='-K PIC' | |
346 | SHOBJ_LD=ld | |
347 | SHOBJ_LDFLAGS='-G -dy -z text -h $@' | |
348 | ||
349 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
350 | ;; | |
351 | ||
28ef6c31 | 352 | dgux*-*gcc*) |
b72432fd JA |
353 | SHOBJ_CFLAGS=-fpic |
354 | SHOBJ_LD='${CC}' | |
355 | SHOBJ_LDFLAGS='-shared' | |
356 | ||
357 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
358 | ;; | |
359 | ||
360 | dgux*) | |
361 | SHOBJ_CFLAGS='-K pic' | |
362 | SHOBJ_LD=ld | |
363 | SHOBJ_LDFLAGS='-G -dy -h $@' | |
364 | ||
365 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
366 | ;; | |
bb70624e JA |
367 | |
368 | msdos*) | |
369 | SHOBJ_STATUS=unsupported | |
370 | SHLIB_STATUS=unsupported | |
371 | ;; | |
372 | ||
b72432fd JA |
373 | # |
374 | # Rely on correct gcc configuration for everything else | |
375 | # | |
28ef6c31 | 376 | *-*gcc*) |
b72432fd JA |
377 | SHOBJ_CFLAGS=-fpic |
378 | SHOBJ_LD='${CC}' | |
379 | SHOBJ_LDFLAGS='-shared' | |
380 | ||
381 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
382 | ;; | |
383 | ||
384 | *) | |
385 | SHOBJ_STATUS=unsupported | |
386 | SHLIB_STATUS=unsupported | |
387 | ;; | |
388 | ||
389 | esac | |
390 | ||
391 | echo SHOBJ_CC=\'"$SHOBJ_CC"\' | |
392 | echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\' | |
393 | echo SHOBJ_LD=\'"$SHOBJ_LD"\' | |
394 | echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\' | |
395 | echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\' | |
396 | echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' | |
397 | ||
398 | echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' | |
399 | echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' | |
400 | echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' | |
401 | echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' | |
402 | ||
403 | echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' | |
404 | echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' | |
405 | ||
406 | exit 0 |