a7c58104b96b155816b7d9e20dcfd61c54ea9563
[platform/upstream/bash.git] / support / shobj-conf
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
46 sunos4*-*gcc*)
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
62 sunos5*-*gcc*|solaris2*-*gcc*)
63         SHOBJ_CFLAGS=-fpic
64         SHOBJ_LD='${CC}'
65         SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@'
66
67 #       SHLIB_XLDFLAGS='-R $(libdir)'
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
76 #       SHLIB_XLDFLAGS='-R $(libdir)'
77         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
78         ;;
79
80 # All versions of Linux or the semi-mythical GNU Hurd.
81 linux*|gnu*)
82         SHOBJ_CFLAGS=-fPIC
83         SHOBJ_LD='${CC}'
84         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
85
86         SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
87         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
88         ;;
89
90 freebsd2* | netbsd*)
91         SHOBJ_CFLAGS=-fpic
92         SHOBJ_LD=ld
93         SHOBJ_LDFLAGS='-x -Bshareable'
94
95         SHLIB_XLDFLAGS='-R$(libdir)'
96         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
97         ;;
98
99 # FreeBSD-3.x ELF
100 freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
101         SHOBJ_CFLAGS=-fpic
102         SHOBJ_LD='${CC}'
103
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
115         ;;
116
117 # Darwin/MacOS X
118 darwin*|macosx*)
119         SHOBJ_STATUS=unsupported
120         SHLIB_STATUS=supported
121
122         SHOBJ_CFLAGS='-dynamic -fno-common'
123
124         SHOBJ_LD=/usr/bin/libtool
125
126         SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
127         SHLIB_LIBSUFF='dylib'
128
129         SHOBJ_LDFLAGS='-dynamic'
130         SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
131
132         SHLIB_LIBS='-lSystem'
133         ;;
134
135 openbsd*)
136         SHOBJ_CFLAGS=-fPIC
137         SHOBJ_LD='${CC}'
138         SHOBJ_LDFLAGS='-shared'
139
140         SHLIB_XLDFLAGS='-R$(libdir)'
141         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
142         ;;
143
144 bsdi2*)
145         SHOBJ_CC=shlicc2
146         SHOBJ_CFLAGS=
147         SHOBJ_LD=ld
148         SHOBJ_LDFLAGS=-r
149         SHOBJ_LIBS=-lc_s.2.1.0
150
151         # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
152         # the ass -- they require changing {/usr/lib,etc}/shlib.map on
153         # each system, and the library creation process is byzantine
154         SHLIB_STATUS=unsupported
155         ;;
156
157 bsdi3*)
158         SHOBJ_CC=shlicc2
159         SHOBJ_CFLAGS=
160         SHOBJ_LD=ld
161         SHOBJ_LDFLAGS=-r
162         SHOBJ_LIBS=-lc_s.3.0.0
163
164         # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
165         # the ass -- they require changing {/usr/lib,etc}/shlib.map on
166         # each system, and the library creation process is byzantine
167         SHLIB_STATUS=unsupported
168         ;;
169
170 bsdi4*)
171         # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked
172         # shared libraries.  gcc 2.x is the standard compiler, and the
173         # `normal' gcc options should work as they do in Linux.
174
175         SHOBJ_CFLAGS=-fPIC
176         SHOBJ_LD='${CC}'
177         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
178
179         SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
180         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
181         ;;
182
183 osf*-*gcc*)
184         # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE
185         SHOBJ_LD='${CC}'
186         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
187
188         SHLIB_XLDFLAGS='-rpath $(libdir)'
189         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
190         ;;
191
192 osf*)
193         SHOBJ_LD=ld
194         SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"'
195
196         SHLIB_XLDFLAGS='-rpath $(libdir)'
197         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
198         ;;
199
200 aix4.[2-9]*-*gcc*)              # lightly tested by jik@cisco.com
201         SHOBJ_CFLAGS=-fpic
202         SHOBJ_LD='ld'
203         SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
204         SHOBJ_XLDFLAGS='-G'
205
206         SHLIB_XLDFLAGS='-bM:SRE'
207         SHLIB_LIBS='-lcurses -lc'
208         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
209         ;;
210
211 aix4.[2-9]*)
212         SHOBJ_CFLAGS=-K
213         SHOBJ_LD='ld'
214         SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
215         SHOBJ_XLDFLAGS='-G'
216
217         SHLIB_XLDFLAGS='-bM:SRE'
218         SHLIB_LIBS='-lcurses -lc'
219         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
220         ;;
221
222 #
223 # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
224 #
225 irix[56]*-*gcc*)
226         SHOBJ_CFLAGS='-fpic'
227         SHOBJ_LD='${CC}'
228         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
229
230         SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
231         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
232         ;;
233
234 irix[56]*)
235         SHOBJ_CFLAGS='-K PIC'
236         SHOBJ_LD=ld
237 #       SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
238 #       Change from David Kaelbling <drk@sgi.com>.  If you have problems,
239 #       remove the `-no_unresolved'
240         SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@'
241
242         SHLIB_XLDFLAGS='-rpath $(libdir)'
243         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
244         ;;
245
246 hpux9*-*gcc*)
247         # must use gcc; the bundled cc cannot compile PIC code
248         SHOBJ_CFLAGS='-fpic'
249         SHOBJ_LD='${CC}'
250         SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
251
252         SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
253         SHLIB_LIBSUFF='sl'
254         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
255         ;;
256
257 hpux9*)
258         SHOBJ_STATUS=unsupported
259         SHLIB_STATUS=unsupported
260
261         # If you are using the HP ANSI C compiler, you can uncomment and use
262         # this code (I have not tested it)
263 #       SHOBJ_STATUS=supported
264 #       SHLIB_STATUS=supported
265 #
266 #       SHOBJ_CFLAGS='+z'
267 #       SHOBJ_LD='ld'
268 #       SHOBJ_LDFLAGS='-b +s'
269 #
270 #       SHLIB_XLDFLAGS='+b $(libdir)'
271 #       SHLIB_LIBSUFF='sl'
272 #       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
273
274         ;;
275
276 hpux10*-*gcc*)
277         # must use gcc; the bundled cc cannot compile PIC code
278         SHOBJ_CFLAGS='-fpic'
279         SHOBJ_LD='${CC}'
280         SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
281
282         SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
283         SHLIB_LIBSUFF='sl'
284         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
285         ;;
286
287 hpux10*)
288         SHOBJ_STATUS=unsupported
289         SHLIB_STATUS=unsupported
290
291         # If you are using the HP ANSI C compiler, you can uncomment and use
292         # this code (I have not tested it)
293 #       SHOBJ_STATUS=supported
294 #       SHLIB_STATUS=supported
295 #
296 #       SHOBJ_CFLAGS='+z'
297 #       SHOBJ_LD='ld'
298 #       SHOBJ_LDFLAGS='-b +s +h $@'
299 #
300 #       SHLIB_XLDFLAGS='+b $(libdir)'
301 #       SHLIB_LIBSUFF='sl'
302 #       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
303
304         ;;
305
306 hpux11*-*gcc*)
307         # must use gcc; the bundled cc cannot compile PIC code
308         SHOBJ_CFLAGS='-fpic'
309         SHOBJ_LD='${CC}'
310 #       SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@'
311         SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
312
313         SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
314         SHLIB_LIBSUFF='sl'
315         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
316         ;;
317
318 hpux11*)
319         SHOBJ_STATUS=unsupported
320         SHLIB_STATUS=unsupported
321
322         # If you are using the HP ANSI C compiler, you can uncomment and use
323         # this code (I have not tested it)
324 #       SHOBJ_STATUS=supported
325 #       SHLIB_STATUS=supported
326 #
327 #       SHOBJ_CFLAGS='+z'
328 #       SHOBJ_LD='ld'
329 #       SHOBJ_LDFLAGS='-b +s +h $@'
330 #
331 #       SHLIB_XLDFLAGS='+b $(libdir)'
332 #       SHLIB_LIBSUFF='sl'
333 #       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
334
335         ;;
336
337 sysv4*-*gcc*)
338         SHOBJ_CFLAGS=-shared
339         SHOBJ_LDFLAGS='-shared -h $@'
340         SHOBJ_LD='${CC}'
341
342         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
343         ;;
344
345 sysv4*)
346         SHOBJ_CFLAGS='-K PIC'
347         SHOBJ_LD=ld
348         SHOBJ_LDFLAGS='-dy -z text -G -h $@'
349
350         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
351         ;;
352
353 sco3.2v5*-*gcc*)
354         SHOBJ_CFLAGS='-fpic'            # DEFAULTS TO ELF
355         SHOBJ_LD='${CC}'
356         SHOBJ_LDFLAGS='-shared'
357
358         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
359         ;;
360
361 sco3.2v5*)
362         SHOBJ_CFLAGS='-K pic -b elf'
363         SHOBJ_LD=ld
364         SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@'
365
366         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
367         ;;
368
369 sysv5uw7*-*gcc*)
370         SHOBJ_CFLAGS='-fpic'
371         SHOBJ_LD='${CC}'
372         SHOBJ_LDFLAGS='-shared'
373
374         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
375         ;;
376
377 sysv5uw7*)
378         SHOBJ_CFLAGS='-K PIC'
379         SHOBJ_LD=ld
380         SHOBJ_LDFLAGS='-G -dy -z text -h $@'
381
382         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
383         ;;
384         
385 dgux*-*gcc*)
386         SHOBJ_CFLAGS=-fpic
387         SHOBJ_LD='${CC}'
388         SHOBJ_LDFLAGS='-shared'
389
390         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
391         ;;
392
393 dgux*)
394         SHOBJ_CFLAGS='-K pic'
395         SHOBJ_LD=ld
396         SHOBJ_LDFLAGS='-G -dy -h $@'
397
398         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
399         ;;
400
401 msdos*)
402         SHOBJ_STATUS=unsupported
403         SHLIB_STATUS=unsupported
404         ;;
405
406 #
407 # Rely on correct gcc configuration for everything else
408 #
409 *-*gcc*)
410         SHOBJ_CFLAGS=-fpic
411         SHOBJ_LD='${CC}'
412         SHOBJ_LDFLAGS='-shared'
413
414         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
415         ;;
416
417 *)
418         SHOBJ_STATUS=unsupported
419         SHLIB_STATUS=unsupported
420         ;;
421
422 esac
423
424 echo SHOBJ_CC=\'"$SHOBJ_CC"\'
425 echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\'
426 echo SHOBJ_LD=\'"$SHOBJ_LD"\'
427 echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\'
428 echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\'
429 echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
430
431 echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
432 echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
433 echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
434 echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
435
436 echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
437 echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'
438
439 exit 0