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'
8 # usage: shobj-conf [-C compiler] -c host_cpu -o host_os -v host_vendor
13 # Copyright (C) 1996-2002 Free Software Foundation, Inc.
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)
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.
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.
32 SHOBJ_STATUS=supported
33 SHLIB_STATUS=supported
46 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)'
48 PROGNAME=`basename $0`
49 USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
51 while [ $# -gt 0 ]; do
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;;
61 case "${host_os}-${SHOBJ_CC}" in
65 SHOBJ_LDFLAGS='-assert pure-text'
67 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
73 SHOBJ_LDFLAGS='-assert pure-text'
75 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
78 sunos5*-*gcc*|solaris2*-*gcc*)
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,$@'
86 # SHLIB_XLDFLAGS='-R $(libdir)'
87 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
92 SHOBJ_LD=/usr/ccs/bin/ld
93 SHOBJ_LDFLAGS='-G -dy -z text -i -h $@'
95 # SHLIB_XLDFLAGS='-R $(libdir)'
96 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
99 # All versions of Linux or the semi-mythical GNU Hurd.
100 linux*-*|gnu*-*|k*bsd*-gnu-*)
103 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
105 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
106 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
112 SHOBJ_LDFLAGS='-x -Bshareable'
114 SHLIB_XLDFLAGS='-R$(libdir)'
115 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
119 freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
123 if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
124 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
126 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
127 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
129 SHOBJ_LDFLAGS='-shared'
131 SHLIB_XLDFLAGS='-R$(libdir)'
132 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
138 SHOBJ_STATUS=unsupported
139 SHLIB_STATUS=supported
141 SHOBJ_CFLAGS='-fno-common'
145 SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
146 SHLIB_LIBSUFF='dylib'
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'
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'
157 SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1
163 SHOBJ_LDFLAGS='-shared'
165 SHLIB_XLDFLAGS='-R$(libdir)'
166 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
174 SHOBJ_LIBS=-lc_s.2.1.0
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
187 SHOBJ_LIBS=-lc_s.3.0.0
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
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.
202 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
204 SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
205 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
209 # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE
211 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
213 SHLIB_XLDFLAGS='-rpath $(libdir)'
214 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
219 SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"'
221 SHLIB_XLDFLAGS='-rpath $(libdir)'
222 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
225 aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com
228 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
231 SHLIB_XLDFLAGS='-bM:SRE'
232 SHLIB_LIBS='-lcurses -lc'
233 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
239 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
242 SHLIB_XLDFLAGS='-bM:SRE'
243 SHLIB_LIBS='-lcurses -lc'
244 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
248 # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
253 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
255 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
256 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
260 SHOBJ_CFLAGS='-K PIC'
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 $@'
267 SHLIB_XLDFLAGS='-rpath $(libdir)'
268 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
272 # must use gcc; the bundled cc cannot compile PIC code
275 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
277 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
279 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
283 SHOBJ_STATUS=unsupported
284 SHLIB_STATUS=unsupported
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
293 # SHOBJ_LDFLAGS='-b +s'
295 # SHLIB_XLDFLAGS='+b $(libdir)'
297 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
302 # must use gcc; the bundled cc cannot compile PIC code
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'
309 SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
311 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
315 SHOBJ_STATUS=unsupported
316 SHLIB_STATUS=unsupported
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
325 # SHOBJ_LDFLAGS='-b +s +h $@'
327 # SHLIB_XLDFLAGS='+b $(libdir)'
329 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
334 # must use gcc; the bundled cc cannot compile PIC code
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,$@'
340 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
342 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
346 SHOBJ_STATUS=unsupported
347 SHLIB_STATUS=unsupported
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
356 # SHOBJ_LDFLAGS='-b +s +h $@'
358 # SHLIB_XLDFLAGS='+b $(libdir)'
360 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
366 SHOBJ_LDFLAGS='-shared -h $@'
369 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
373 SHOBJ_CFLAGS='-K PIC'
375 SHOBJ_LDFLAGS='-dy -z text -G -h $@'
377 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
381 SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF
383 SHOBJ_LDFLAGS='-shared'
385 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
389 SHOBJ_CFLAGS='-K pic -b elf'
391 SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@'
393 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
399 SHOBJ_LDFLAGS='-shared'
401 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
405 SHOBJ_CFLAGS='-K PIC'
407 SHOBJ_LDFLAGS='-G -dy -z text -h $@'
409 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
415 SHOBJ_LDFLAGS='-shared'
417 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
421 SHOBJ_CFLAGS='-K pic'
423 SHOBJ_LDFLAGS='-G -dy -h $@'
425 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
429 SHOBJ_STATUS=unsupported
430 SHLIB_STATUS=unsupported
434 # Rely on correct gcc configuration for everything else
439 SHOBJ_LDFLAGS='-shared'
441 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
445 SHOBJ_STATUS=unsupported
446 SHLIB_STATUS=unsupported
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"\'
458 echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
459 echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
460 echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
461 echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
463 echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
464 echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'