5abef8a3bee1ed7af0e6cf04207abc8a1cdd14c7
[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 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
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
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 # All versions of Linux or the semi-mythical GNU Hurd.
117 linux*|gnu*)
118         SHOBJ_CFLAGS=-fPIC
119         SHOBJ_LD='${CC}'
120         SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
121
122         SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
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
161         SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
162         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
163         ;;
164
165 osf*-*gcc*)
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
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
182 aix4.[2-9]*-*gcc*)              # lightly tested by jik@cisco.com
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 #
207 irix[56]*-*gcc*)
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
219 #       SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
220 #       Change from David Kaelbling <drk@sgi.com>.  If you have problems,
221 #       remove the `-no_unresolved'
222         SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@'
223
224         SHLIB_XLDFLAGS='-rpath $(libdir)'
225         SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
226         ;;
227
228 hpux9*-*gcc*)
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
244 hpux10*-*gcc*)
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
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)'      
271         ;;
272
273 hpux11*-*gcc*)
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,$@'
278         SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
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
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
302         ;;
303
304 sysv4*-*gcc*)
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
320 sco3.2v5*-*gcc*)
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
336 sysv5uw7*-*gcc*)
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         
352 dgux*-*gcc*)
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         ;;
367
368 msdos*)
369         SHOBJ_STATUS=unsupported
370         SHLIB_STATUS=unsupported
371         ;;
372
373 #
374 # Rely on correct gcc configuration for everything else
375 #
376 *-*gcc*)
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