]> git.ipfire.org Git - thirdparty/bash.git/blob - support/shobj-conf
Imported from ../bash-2.05.tar.gz.
[thirdparty/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