shobj-conf revision 75406
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#
16SHOBJ_STATUS=supported
17SHLIB_STATUS=supported
18
19SHOBJ_CC=cc
20SHOBJ_CFLAGS=
21SHOBJ_LD=
22SHOBJ_LDFLAGS=
23SHOBJ_XLDFLAGS=
24SHOBJ_LIBS=
25
26SHLIB_XLDFLAGS=
27SHLIB_LIBS=
28SHLIB_LIBSUFF='so'
29
30SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)'
31
32PROGNAME=`basename $0`
33USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
34
35while [ $# -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
43done
44
45case "${host_os}-${SHOBJ_CC}" in
46sunos4*-*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
54sunos4*)
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
62sunos5*-*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
71sunos5*|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
80freebsd2* | 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
100freebsd[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.
117linux*|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
126bsdi2*)
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
139bsdi3*)
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
152bsdi4*)
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
165osf*-*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
174osf*)
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
182aix4.[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
193aix4.[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#
207irix[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
216irix[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
228hpux9*-*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
239hpux9*)
240	SHOBJ_STATUS=unsupported
241	SHLIB_STATUS=unsupported
242	;;
243
244hpux10*-*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
255hpux10*)
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
273hpux11*-*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
285hpux11*)
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
304sysv4*-*gcc*)
305	SHOBJ_CFLAGS=-shared
306	SHOBJ_LDFLAGS='-shared -h $@'
307	SHOBJ_LD='${CC}'
308
309	SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
310	;;
311
312sysv4*)
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
320sco3.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
328sco3.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
336sysv5uw7*-*gcc*)
337	SHOBJ_CFLAGS='-fpic'
338	SHOBJ_LD='${CC}'
339	SHOBJ_LDFLAGS='-shared'
340
341	SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
342	;;
343
344sysv5uw7*)
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	
352dgux*-*gcc*)
353	SHOBJ_CFLAGS=-fpic
354	SHOBJ_LD='${CC}'
355	SHOBJ_LDFLAGS='-shared'
356
357	SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
358	;;
359
360dgux*)
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
368msdos*)
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
389esac
390
391echo SHOBJ_CC=\'"$SHOBJ_CC"\'
392echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\'
393echo SHOBJ_LD=\'"$SHOBJ_LD"\'
394echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\'
395echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\'
396echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
397
398echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
399echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
400echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
401echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
402
403echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
404echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'
405
406exit 0
407