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