Imported from ../bash-3.0.tar.gz.
[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 # Copyright (C) 1996-2002 Free Software Foundation, Inc.
14 #
15 # This program is free software; you can redistribute it and/or modify
16 # it under the terms of the GNU General Public License as published by
17 # the Free Software Foundation; either version 2, or (at your option)
18 # any later version.
19 #
20 # This program is distributed in the hope that it will be useful,
21 # but WITHOUT ANY WARRANTY; without even the implied warranty of
22 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23 # GNU General Public License for more details.
24 #
25 # You should have received a copy of the GNU General Public License
26 # along with this program; if not, write to the Free Software
27 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
28
29 #
30 # defaults
31 #
32 SHOBJ_STATUS=supported
33 SHLIB_STATUS=supported
34
35 SHOBJ_CC=cc
36 SHOBJ_CFLAGS=
37 SHOBJ_LD=
38 SHOBJ_LDFLAGS=
39 SHOBJ_XLDFLAGS=
40 SHOBJ_LIBS=
41
42 SHLIB_XLDFLAGS=
43 SHLIB_LIBS=
44 SHLIB_LIBSUFF='so'
45
46 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)'
47
48 PROGNAME=`basename $0`
49 USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
50
51 while [ $# -gt 0 ]; do
52         case "$1" in
53         -C)     shift; SHOBJ_CC="$1"; shift ;;
54         -c)     shift; host_cpu="$1"; shift ;;
55         -o)     shift; host_os="$1"; shift ;;
56         -v)     shift; host_vendor="$1"; shift ;;
57         *)      echo "$USAGE" >&2 ; exit 2;;
58         esac
59 done
60
61 case "${host_os}-${SHOBJ_CC}" in
62 sunos4*-*gcc*)
63         SHOBJ_CFLAGS=-fpic
64         SHOBJ_LD=/usr/bin/ld
65         SHOBJ_LDFLAGS='-assert pure-text'
66
67         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
68         ;;
69
70 sunos4*)
71         SHOBJ_CFLAGS=-pic
72         SHOBJ_LD=/usr/bin/ld
73         SHOBJ_LDFLAGS='-assert pure-text'
74
75         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
76         ;;
77
78 sunos5*-*gcc*|solaris2*-*gcc*)
79         SHOBJ_CFLAGS=-fpic
80         SHOBJ_LD='${CC}'
81         # This line works for the Solaris linker in /usr/ccs/bin/ld
82         SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@'
83         # This line works for the GNU ld
84 #       SHOBJ_LDFLAGS='-shared -Wl,-h,$@'
85
86 #       SHLIB_XLDFLAGS='-R $(libdir)'
87         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
88         ;;
89
90 sunos5*|solaris2*)
91         SHOBJ_CFLAGS='-K pic'
92         SHOBJ_LD=/usr/ccs/bin/ld
93         SHOBJ_LDFLAGS='-G -dy -z text -i -h $@'
94
95 #       SHLIB_XLDFLAGS='-R $(libdir)'
96         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
97         ;;
98
99 # All versions of Linux or the semi-mythical GNU Hurd.
100 linux*-*|gnu*-*|k*bsd*-gnu-*)
101         SHOBJ_CFLAGS=-fPIC
102         SHOBJ_LD='${CC}'
103         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
104
105         SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
106         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
107         ;;
108
109 freebsd2* | netbsd*)
110         SHOBJ_CFLAGS=-fpic
111         SHOBJ_LD=ld
112         SHOBJ_LDFLAGS='-x -Bshareable'
113
114         SHLIB_XLDFLAGS='-R$(libdir)'
115         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
116         ;;
117
118 # FreeBSD-3.x ELF
119 freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
120         SHOBJ_CFLAGS=-fpic
121         SHOBJ_LD='${CC}'
122
123         if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
124                 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
125
126                 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
127                 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
128         else
129                 SHOBJ_LDFLAGS='-shared'
130
131                 SHLIB_XLDFLAGS='-R$(libdir)'
132                 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
133         fi
134         ;;
135
136 # Darwin/MacOS X
137 darwin*|macosx*)
138         SHOBJ_STATUS=unsupported
139         SHLIB_STATUS=supported
140
141         SHOBJ_CFLAGS='-fno-common'
142
143         SHOBJ_LD='${CC}'
144
145         SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
146         SHLIB_LIBSUFF='dylib'
147
148         case "${host_os}" in
149         darwin7*)       SHOBJ_LDFLAGS=''
150                         SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
151                         ;;
152         *)              SHOBJ_LDFLAGS='-dynamic'
153                         SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
154                         ;;
155         esac
156
157         SHLIB_LIBS='-lncurses'  # see if -lcurses works on MacOS X 10.1 
158         ;;
159
160 openbsd*)
161         SHOBJ_CFLAGS=-fPIC
162         SHOBJ_LD='${CC}'
163         SHOBJ_LDFLAGS='-shared'
164
165         SHLIB_XLDFLAGS='-R$(libdir)'
166         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
167         ;;
168
169 bsdi2*)
170         SHOBJ_CC=shlicc2
171         SHOBJ_CFLAGS=
172         SHOBJ_LD=ld
173         SHOBJ_LDFLAGS=-r
174         SHOBJ_LIBS=-lc_s.2.1.0
175
176         # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
177         # the ass -- they require changing {/usr/lib,etc}/shlib.map on
178         # each system, and the library creation process is byzantine
179         SHLIB_STATUS=unsupported
180         ;;
181
182 bsdi3*)
183         SHOBJ_CC=shlicc2
184         SHOBJ_CFLAGS=
185         SHOBJ_LD=ld
186         SHOBJ_LDFLAGS=-r
187         SHOBJ_LIBS=-lc_s.3.0.0
188
189         # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
190         # the ass -- they require changing {/usr/lib,etc}/shlib.map on
191         # each system, and the library creation process is byzantine
192         SHLIB_STATUS=unsupported
193         ;;
194
195 bsdi4*)
196         # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked
197         # shared libraries.  gcc 2.x is the standard compiler, and the
198         # `normal' gcc options should work as they do in Linux.
199
200         SHOBJ_CFLAGS=-fPIC
201         SHOBJ_LD='${CC}'
202         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
203
204         SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
205         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
206         ;;
207
208 osf*-*gcc*)
209         # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE
210         SHOBJ_LD='${CC}'
211         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
212
213         SHLIB_XLDFLAGS='-rpath $(libdir)'
214         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
215         ;;
216
217 osf*)
218         SHOBJ_LD=ld
219         SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"'
220
221         SHLIB_XLDFLAGS='-rpath $(libdir)'
222         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
223         ;;
224
225 aix4.[2-9]*-*gcc*)              # lightly tested by jik@cisco.com
226         SHOBJ_CFLAGS=-fpic
227         SHOBJ_LD='ld'
228         SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
229         SHOBJ_XLDFLAGS='-G'
230
231         SHLIB_XLDFLAGS='-bM:SRE'
232         SHLIB_LIBS='-lcurses -lc'
233         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
234         ;;
235
236 aix4.[2-9]*)
237         SHOBJ_CFLAGS=-K
238         SHOBJ_LD='ld'
239         SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
240         SHOBJ_XLDFLAGS='-G'
241
242         SHLIB_XLDFLAGS='-bM:SRE'
243         SHLIB_LIBS='-lcurses -lc'
244         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
245         ;;
246
247 #
248 # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
249 #
250 irix[56]*-*gcc*)
251         SHOBJ_CFLAGS='-fpic'
252         SHOBJ_LD='${CC}'
253         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
254
255         SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
256         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
257         ;;
258
259 irix[56]*)
260         SHOBJ_CFLAGS='-K PIC'
261         SHOBJ_LD=ld
262 #       SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
263 #       Change from David Kaelbling <drk@sgi.com>.  If you have problems,
264 #       remove the `-no_unresolved'
265         SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@'
266
267         SHLIB_XLDFLAGS='-rpath $(libdir)'
268         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
269         ;;
270
271 hpux9*-*gcc*)
272         # must use gcc; the bundled cc cannot compile PIC code
273         SHOBJ_CFLAGS='-fpic'
274         SHOBJ_LD='${CC}'
275         SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
276
277         SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
278         SHLIB_LIBSUFF='sl'
279         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
280         ;;
281
282 hpux9*)
283         SHOBJ_STATUS=unsupported
284         SHLIB_STATUS=unsupported
285
286         # If you are using the HP ANSI C compiler, you can uncomment and use
287         # this code (I have not tested it)
288 #       SHOBJ_STATUS=supported
289 #       SHLIB_STATUS=supported
290 #
291 #       SHOBJ_CFLAGS='+z'
292 #       SHOBJ_LD='ld'
293 #       SHOBJ_LDFLAGS='-b +s'
294 #
295 #       SHLIB_XLDFLAGS='+b $(libdir)'
296 #       SHLIB_LIBSUFF='sl'
297 #       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
298
299         ;;
300
301 hpux10*-*gcc*)
302         # must use gcc; the bundled cc cannot compile PIC code
303         SHOBJ_CFLAGS='-fpic'
304         SHOBJ_LD='${CC}'
305         # if you have problems linking here, moving the `-Wl,+h,$@' from
306         # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work
307         SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
308
309         SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
310         SHLIB_LIBSUFF='sl'
311         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
312         ;;
313
314 hpux10*)
315         SHOBJ_STATUS=unsupported
316         SHLIB_STATUS=unsupported
317
318         # If you are using the HP ANSI C compiler, you can uncomment and use
319         # this code (I have not tested it)
320 #       SHOBJ_STATUS=supported
321 #       SHLIB_STATUS=supported
322 #
323 #       SHOBJ_CFLAGS='+z'
324 #       SHOBJ_LD='ld'
325 #       SHOBJ_LDFLAGS='-b +s +h $@'
326 #
327 #       SHLIB_XLDFLAGS='+b $(libdir)'
328 #       SHLIB_LIBSUFF='sl'
329 #       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
330
331         ;;
332
333 hpux11*-*gcc*)
334         # must use gcc; the bundled cc cannot compile PIC code
335         SHOBJ_CFLAGS='-fpic'
336         SHOBJ_LD='${CC}'
337 #       SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@'
338         SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
339
340         SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
341         SHLIB_LIBSUFF='sl'
342         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
343         ;;
344
345 hpux11*)
346         SHOBJ_STATUS=unsupported
347         SHLIB_STATUS=unsupported
348
349         # If you are using the HP ANSI C compiler, you can uncomment and use
350         # this code (I have not tested it)
351 #       SHOBJ_STATUS=supported
352 #       SHLIB_STATUS=supported
353 #
354 #       SHOBJ_CFLAGS='+z'
355 #       SHOBJ_LD='ld'
356 #       SHOBJ_LDFLAGS='-b +s +h $@'
357 #
358 #       SHLIB_XLDFLAGS='+b $(libdir)'
359 #       SHLIB_LIBSUFF='sl'
360 #       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'      
361
362         ;;
363
364 sysv4*-*gcc*)
365         SHOBJ_CFLAGS=-shared
366         SHOBJ_LDFLAGS='-shared -h $@'
367         SHOBJ_LD='${CC}'
368
369         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
370         ;;
371
372 sysv4*)
373         SHOBJ_CFLAGS='-K PIC'
374         SHOBJ_LD=ld
375         SHOBJ_LDFLAGS='-dy -z text -G -h $@'
376
377         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
378         ;;
379
380 sco3.2v5*-*gcc*)
381         SHOBJ_CFLAGS='-fpic'            # DEFAULTS TO ELF
382         SHOBJ_LD='${CC}'
383         SHOBJ_LDFLAGS='-shared'
384
385         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
386         ;;
387
388 sco3.2v5*)
389         SHOBJ_CFLAGS='-K pic -b elf'
390         SHOBJ_LD=ld
391         SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@'
392
393         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
394         ;;
395
396 sysv5uw7*-*gcc*)
397         SHOBJ_CFLAGS='-fpic'
398         SHOBJ_LD='${CC}'
399         SHOBJ_LDFLAGS='-shared'
400
401         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
402         ;;
403
404 sysv5uw7*)
405         SHOBJ_CFLAGS='-K PIC'
406         SHOBJ_LD=ld
407         SHOBJ_LDFLAGS='-G -dy -z text -h $@'
408
409         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
410         ;;
411         
412 dgux*-*gcc*)
413         SHOBJ_CFLAGS=-fpic
414         SHOBJ_LD='${CC}'
415         SHOBJ_LDFLAGS='-shared'
416
417         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
418         ;;
419
420 dgux*)
421         SHOBJ_CFLAGS='-K pic'
422         SHOBJ_LD=ld
423         SHOBJ_LDFLAGS='-G -dy -h $@'
424
425         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
426         ;;
427
428 msdos*)
429         SHOBJ_STATUS=unsupported
430         SHLIB_STATUS=unsupported
431         ;;
432
433 #
434 # Rely on correct gcc configuration for everything else
435 #
436 *-*gcc*)
437         SHOBJ_CFLAGS=-fpic
438         SHOBJ_LD='${CC}'
439         SHOBJ_LDFLAGS='-shared'
440
441         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
442         ;;
443
444 *)
445         SHOBJ_STATUS=unsupported
446         SHLIB_STATUS=unsupported
447         ;;
448
449 esac
450
451 echo SHOBJ_CC=\'"$SHOBJ_CC"\'
452 echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\'
453 echo SHOBJ_LD=\'"$SHOBJ_LD"\'
454 echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\'
455 echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\'
456 echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
457
458 echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
459 echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
460 echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
461 echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
462
463 echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
464 echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'
465
466 exit 0