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'
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 freebsd2* | netbsd* | openbsd*)
83 SHOBJ_LDFLAGS='-x -Bshareable'
85 SHLIB_XLDFLAGS='-R$(libdir)'
86 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
92 SHOBJ_LDFLAGS='-shared'
94 SHLIB_XLDFLAGS='-R$(libdir)'
95 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
101 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
103 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
104 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
112 SHOBJ_LIBS=-lc_s.2.1.0
114 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
115 # the ass -- they require changing {/usr/lib,etc}/shlib.map on
116 # each system, and the library creation process is byzantine
117 SHLIB_STATUS=unsupported
125 SHOBJ_LIBS=-lc_s.3.0.0
127 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
128 # the ass -- they require changing {/usr/lib,etc}/shlib.map on
129 # each system, and the library creation process is byzantine
130 SHLIB_STATUS=unsupported
134 # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked
135 # shared libraries. gcc 2.x is the standard compiler, and the
136 # `normal' gcc options should work as they do in Linux.
140 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
142 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
147 SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"'
149 SHLIB_XLDFLAGS='-rpath $(libdir)'
150 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
153 aix4.[2-9]*-gcc*) # lightly tested by jik@cisco.com
156 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
159 SHLIB_XLDFLAGS='-bM:SRE'
160 SHLIB_LIBS='-lcurses -lc'
161 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
167 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
170 SHLIB_XLDFLAGS='-bM:SRE'
171 SHLIB_LIBS='-lcurses -lc'
172 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
176 # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
181 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
183 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
184 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
188 SHOBJ_CFLAGS='-K PIC'
190 SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
192 SHLIB_XLDFLAGS='-rpath $(libdir)'
193 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
197 # must use gcc; the bundled cc cannot compile PIC code
200 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
202 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
204 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
208 SHOBJ_STATUS=unsupported
209 SHLIB_STATUS=unsupported
213 # must use gcc; the bundled cc cannot compile PIC code
216 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
218 SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
220 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
224 SHOBJ_STATUS=unsupported
225 SHLIB_STATUS=unsupported
229 # must use gcc; the bundled cc cannot compile PIC code
232 # SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@'
233 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s -Wl,+h,$@'
235 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
237 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
241 SHOBJ_STATUS=unsupported
242 SHLIB_STATUS=unsupported
247 SHOBJ_LDFLAGS='-shared -h $@'
250 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
254 SHOBJ_CFLAGS='-K PIC'
256 SHOBJ_LDFLAGS='-dy -z text -G -h $@'
258 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
262 SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF
264 SHOBJ_LDFLAGS='-shared'
266 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
270 SHOBJ_CFLAGS='-K pic -b elf'
272 SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@'
274 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
280 SHOBJ_LDFLAGS='-shared'
282 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
286 SHOBJ_CFLAGS='-K PIC'
288 SHOBJ_LDFLAGS='-G -dy -z text -h $@'
290 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
296 SHOBJ_LDFLAGS='-shared'
298 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
302 SHOBJ_CFLAGS='-K pic'
304 SHOBJ_LDFLAGS='-G -dy -h $@'
306 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
309 # Rely on correct gcc configuration for everything else
314 SHOBJ_LDFLAGS='-shared'
316 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
320 SHOBJ_STATUS=unsupported
321 SHLIB_STATUS=unsupported
326 echo SHOBJ_CC=\'"$SHOBJ_CC"\'
327 echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\'
328 echo SHOBJ_LD=\'"$SHOBJ_LD"\'
329 echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\'
330 echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\'
331 echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
333 echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
334 echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
335 echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
336 echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
338 echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
339 echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'