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
16 SHOBJ_STATUS=supported
17 SHLIB_STATUS=supported
30 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)'
32 PROGNAME=`basename $0`
33 USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
35 while [ $# -gt 0 ]; do
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;;
45 case "${host_os}-${SHOBJ_CC}" in
49 SHOBJ_LDFLAGS='-assert pure-text'
51 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
57 SHOBJ_LDFLAGS='-assert pure-text'
59 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
62 sunos5*-*gcc*|solaris2*-*gcc*)
65 SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@'
67 # SHLIB_XLDFLAGS='-R $(libdir)'
68 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
73 SHOBJ_LD=/usr/ccs/bin/ld
74 SHOBJ_LDFLAGS='-G -dy -z text -i -h $@'
76 # SHLIB_XLDFLAGS='-R $(libdir)'
77 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
80 # All versions of Linux or the semi-mythical GNU Hurd.
84 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
86 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
87 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
93 SHOBJ_LDFLAGS='-x -Bshareable'
95 SHLIB_XLDFLAGS='-R$(libdir)'
96 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
100 freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
104 if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
105 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
107 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
108 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
110 SHOBJ_LDFLAGS='-shared'
112 SHLIB_XLDFLAGS='-R$(libdir)'
113 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
119 SHOBJ_STATUS=unsupported
120 SHLIB_STATUS=supported
122 SHOBJ_CFLAGS='-dynamic -fno-common'
124 SHOBJ_LD=/usr/bin/libtool
126 SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
127 SHLIB_LIBSUFF='dylib'
129 SHOBJ_LDFLAGS='-dynamic'
130 SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
132 SHLIB_LIBS='-lSystem'
138 SHOBJ_LDFLAGS='-shared'
140 SHLIB_XLDFLAGS='-R$(libdir)'
141 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
149 SHOBJ_LIBS=-lc_s.2.1.0
151 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
152 # the ass -- they require changing {/usr/lib,etc}/shlib.map on
153 # each system, and the library creation process is byzantine
154 SHLIB_STATUS=unsupported
162 SHOBJ_LIBS=-lc_s.3.0.0
164 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
165 # the ass -- they require changing {/usr/lib,etc}/shlib.map on
166 # each system, and the library creation process is byzantine
167 SHLIB_STATUS=unsupported
171 # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked
172 # shared libraries. gcc 2.x is the standard compiler, and the
173 # `normal' gcc options should work as they do in Linux.
177 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
179 SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
180 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
184 # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE
186 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
188 SHLIB_XLDFLAGS='-rpath $(libdir)'
189 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
194 SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"'
196 SHLIB_XLDFLAGS='-rpath $(libdir)'
197 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
200 aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com
203 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
206 SHLIB_XLDFLAGS='-bM:SRE'
207 SHLIB_LIBS='-lcurses -lc'
208 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
214 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
217 SHLIB_XLDFLAGS='-bM:SRE'
218 SHLIB_LIBS='-lcurses -lc'
219 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
223 # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
228 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
230 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
231 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
235 SHOBJ_CFLAGS='-K PIC'
237 # SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
238 # Change from David Kaelbling <drk@sgi.com>. If you have problems,
239 # remove the `-no_unresolved'
240 SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@'
242 SHLIB_XLDFLAGS='-rpath $(libdir)'
243 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
247 # must use gcc; the bundled cc cannot compile PIC code
250 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
252 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
254 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
258 SHOBJ_STATUS=unsupported
259 SHLIB_STATUS=unsupported
261 # If you are using the HP ANSI C compiler, you can uncomment and use
262 # this code (I have not tested it)
263 # SHOBJ_STATUS=supported
264 # SHLIB_STATUS=supported
268 # SHOBJ_LDFLAGS='-b +s'
270 # SHLIB_XLDFLAGS='+b $(libdir)'
272 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
277 # must use gcc; the bundled cc cannot compile PIC code
280 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
282 SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
284 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
288 SHOBJ_STATUS=unsupported
289 SHLIB_STATUS=unsupported
291 # If you are using the HP ANSI C compiler, you can uncomment and use
292 # this code (I have not tested it)
293 # SHOBJ_STATUS=supported
294 # SHLIB_STATUS=supported
298 # SHOBJ_LDFLAGS='-b +s +h $@'
300 # SHLIB_XLDFLAGS='+b $(libdir)'
302 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
307 # must use gcc; the bundled cc cannot compile PIC code
310 # SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@'
311 SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
313 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
315 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
319 SHOBJ_STATUS=unsupported
320 SHLIB_STATUS=unsupported
322 # If you are using the HP ANSI C compiler, you can uncomment and use
323 # this code (I have not tested it)
324 # SHOBJ_STATUS=supported
325 # SHLIB_STATUS=supported
329 # SHOBJ_LDFLAGS='-b +s +h $@'
331 # SHLIB_XLDFLAGS='+b $(libdir)'
333 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
339 SHOBJ_LDFLAGS='-shared -h $@'
342 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
346 SHOBJ_CFLAGS='-K PIC'
348 SHOBJ_LDFLAGS='-dy -z text -G -h $@'
350 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
354 SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF
356 SHOBJ_LDFLAGS='-shared'
358 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
362 SHOBJ_CFLAGS='-K pic -b elf'
364 SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@'
366 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
372 SHOBJ_LDFLAGS='-shared'
374 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
378 SHOBJ_CFLAGS='-K PIC'
380 SHOBJ_LDFLAGS='-G -dy -z text -h $@'
382 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
388 SHOBJ_LDFLAGS='-shared'
390 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
394 SHOBJ_CFLAGS='-K pic'
396 SHOBJ_LDFLAGS='-G -dy -h $@'
398 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
402 SHOBJ_STATUS=unsupported
403 SHLIB_STATUS=unsupported
407 # Rely on correct gcc configuration for everything else
412 SHOBJ_LDFLAGS='-shared'
414 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
418 SHOBJ_STATUS=unsupported
419 SHLIB_STATUS=unsupported
424 echo SHOBJ_CC=\'"$SHOBJ_CC"\'
425 echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\'
426 echo SHOBJ_LD=\'"$SHOBJ_LD"\'
427 echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\'
428 echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\'
429 echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
431 echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
432 echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
433 echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
434 echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
436 echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
437 echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'