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-2014 Free Software Foundation, Inc.
15 # This file is part of GNU Bash, the Bourne Again SHell.
17 # This program is free software: you can redistribute it and/or modify
18 # it under the terms of the GNU General Public License as published by
19 # the Free Software Foundation, either version 3 of the License, or
20 # (at your option) any later version.
22 # This program is distributed in the hope that it will be useful,
23 # but WITHOUT ANY WARRANTY; without even the implied warranty of
24 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 # GNU General Public License for more details.
27 # You should have received a copy of the GNU General Public License
28 # along with this program. If not, see <http://www.gnu.org/licenses/>.
34 SHOBJ_STATUS
=supported
35 SHLIB_STATUS
=supported
51 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF)'
52 SHLIB_DLLVERSION
='$(SHLIB_MAJOR)'
54 PROGNAME
=`basename $0`
55 USAGE
="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
57 while [ $# -gt 0 ]; do
59 -C) shift; SHOBJ_CC
="$1"; shift ;;
60 -c) shift; host_cpu
="$1"; shift ;;
61 -o) shift; host_os
="$1"; shift ;;
62 -v) shift; host_vendor
="$1"; shift ;;
63 *) echo "$USAGE" >&2 ; exit 2;;
67 case "${host_os}-${SHOBJ_CC}-${host_vendor}" in
69 SHOBJ_CFLAGS
=-Wglobalized
72 SHOBJ_CFLAGS
="${SHOBJ_CFLAGS} -Wcall_shared" # default on TNS/E, needed on TNS/R
73 SHOBJ_LD
=/usr
/bin
/ld
# for TNS/R
79 SHOBJ_LDFLAGS
='-shared -bglobalized -unres_symbols ignore'
85 SHOBJ_LDFLAGS
='-assert pure-text'
87 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
93 SHOBJ_LDFLAGS
='-assert pure-text'
95 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
98 sunos5
*-*gcc
*|solaris2
*-*gcc
*)
100 ld_used
=`gcc -print-prog-name=ld`
101 if ${ld_used} -V 2>&1 |
grep GNU
>/dev
/null
2>&1; then
102 # This line works for the GNU ld
103 SHOBJ_LDFLAGS
='-shared -Wl,-h,$@'
104 # http://sourceware.org/ml/binutils/2001-08/msg00361.html
107 # This line works for the Solaris linker in /usr/ccs/bin/ld
108 SHOBJ_LDFLAGS
='-shared -Wl,-i -Wl,-h,$@'
112 # SHLIB_XLDFLAGS='-R $(libdir)'
113 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
117 SHOBJ_CFLAGS
='-K pic'
118 SHOBJ_LD
=/usr
/ccs
/bin
/ld
119 SHOBJ_LDFLAGS
='-G -dy -z text -i -h $@'
121 # SHLIB_XLDFLAGS='-R $(libdir)'
122 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
125 # All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd.
126 linux
*-*|gnu
*-*|k
*bsd
*-gnu-*|freebsd
*-gentoo)
129 SHOBJ_LDFLAGS
='-shared -Wl,-soname,$@'
131 SHLIB_XLDFLAGS
='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
132 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
138 SHOBJ_LDFLAGS
='-x -Bshareable'
140 SHLIB_XLDFLAGS
='-R$(libdir)'
141 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
145 freebsd3
*|freebsdaout
*)
149 if [ -x /usr
/bin
/objformat
] && [ "`/usr/bin/objformat`" = "elf" ]; then
150 SHOBJ_LDFLAGS
='-shared -Wl,-soname,$@'
152 SHLIB_XLDFLAGS
='-Wl,-rpath,$(libdir)'
153 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
155 SHOBJ_LDFLAGS
='-shared'
157 SHLIB_XLDFLAGS
='-R$(libdir)'
158 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
162 # FreeBSD-4.x and later have only ELF
163 freebsd
[4-9]*|freebsd1
[0-9]*|freebsdelf
*|dragonfly
*)
167 SHOBJ_LDFLAGS
='-shared -Wl,-soname,$@'
168 SHLIB_XLDFLAGS
='-Wl,-rpath,$(libdir)'
170 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
175 # Common definitions for all darwin/mac os x versions
176 SHOBJ_CFLAGS
='-fno-common'
180 SHLIB_LIBVERSION
='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
181 SHLIB_LIBSUFF
='dylib'
183 # unused at this time
184 SHLIB_SONAME
='$(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF)'
187 # Darwin versions 1, 5, 6, 7 correspond to Mac OS X 10.0, 10.1, 10.2,
188 # and 10.3, respectively.
190 SHOBJ_STATUS
=unsupported
191 SHOBJ_LDFLAGS
='-dynamic'
192 SHLIB_XLDFLAGS
='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
194 # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4
197 darwin
[89]*|darwin1
[012]*)
198 SHOBJ_ARCHFLAGS
='-arch_only `/usr/bin/arch`'
200 *) # Mac OS X 10.9 (Mavericks) and later
202 # for 32 and 64bit universal library
203 #SHOBJ_ARCHFLAGS='-arch i386 -arch x86_64'
204 #SHOBJ_CFLAGS=${SHOBJ_CFLAGS}' -arch i386 -arch x86_64'
207 SHOBJ_LDFLAGS
="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}"
208 SHLIB_XLDFLAGS
="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
212 SHLIB_LIBS
='-lncurses' # see if -lcurses works on MacOS X 10.1
215 openbsd
*|netbsd
*|mirbsd
*)
218 SHOBJ_LDFLAGS
='-shared'
220 SHLIB_XLDFLAGS
='-R$(libdir)'
221 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
229 SHOBJ_LIBS
=-lc_s.2.1.0
231 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
232 # the ass -- they require changing {/usr/lib,etc}/shlib.map on
233 # each system, and the library creation process is byzantine
234 SHLIB_STATUS
=unsupported
242 SHOBJ_LIBS
=-lc_s.3.0.0
244 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in
245 # the ass -- they require changing {/usr/lib,etc}/shlib.map on
246 # each system, and the library creation process is byzantine
247 SHLIB_STATUS
=unsupported
251 # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked
252 # shared libraries. gcc 2.x is the standard compiler, and the
253 # `normal' gcc options should work as they do in Linux.
257 SHOBJ_LDFLAGS
='-shared -Wl,-soname,$@'
259 SHLIB_XLDFLAGS
='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
260 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
264 # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE
266 SHOBJ_LDFLAGS
='-shared -Wl,-soname,$@'
268 SHLIB_XLDFLAGS
='-rpath $(libdir)'
269 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
274 SHOBJ_LDFLAGS
='-shared -soname $@ -expect_unresolved "*"'
276 SHLIB_XLDFLAGS
='-rpath $(libdir)'
277 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
280 aix4.
[2-9]*-*gcc
*|aix
[5-9].
*-*gcc
*) # lightly tested by jik@cisco.com
283 SHOBJ_LDFLAGS
='-bdynamic -bnoentry -bexpall'
286 SHLIB_XLDFLAGS
='-bM:SRE'
287 SHLIB_LIBS
='-lcurses -lc'
288 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
291 aix4.
[2-9]*|aix
[5-9].
*)
294 SHOBJ_LDFLAGS
='-bdynamic -bnoentry -bexpall'
297 SHLIB_XLDFLAGS
='-bM:SRE'
298 SHLIB_LIBS
='-lcurses -lc'
299 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
303 # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
308 SHOBJ_LDFLAGS
='-shared -Wl,-soname,$@'
310 SHLIB_XLDFLAGS
='-Wl,-rpath,$(libdir)'
311 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
315 SHOBJ_CFLAGS
='-K PIC'
317 # SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
318 # Change from David Kaelbling <drk@sgi.com>. If you have problems,
319 # remove the `-no_unresolved'
320 SHOBJ_LDFLAGS
='-shared -no_unresolved -soname $@'
322 SHLIB_XLDFLAGS
='-rpath $(libdir)'
323 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
327 # must use gcc; the bundled cc cannot compile PIC code
330 SHOBJ_LDFLAGS
='-shared -Wl,-b -Wl,+s'
332 SHLIB_XLDFLAGS
='-Wl,+b,$(libdir)'
334 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
338 SHOBJ_STATUS
=unsupported
339 SHLIB_STATUS
=unsupported
341 # If you are using the HP ANSI C compiler, you can uncomment and use
342 # this code (I have not tested it)
343 # SHOBJ_STATUS=supported
344 # SHLIB_STATUS=supported
348 # SHOBJ_LDFLAGS='-b +s'
350 # SHLIB_XLDFLAGS='+b $(libdir)'
352 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
357 # must use gcc; the bundled cc cannot compile PIC code
360 # if you have problems linking here, moving the `-Wl,+h,$@' from
361 # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work
362 SHOBJ_LDFLAGS
='-shared -fpic -Wl,-b -Wl,+s'
364 SHLIB_XLDFLAGS
='-Wl,+h,$@ -Wl,+b,$(libdir)'
366 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
370 SHOBJ_STATUS
=unsupported
371 SHLIB_STATUS
=unsupported
373 # If you are using the HP ANSI C compiler, you can uncomment and use
374 # this code (I have not tested it)
375 # SHOBJ_STATUS=supported
376 # SHLIB_STATUS=supported
380 # SHOBJ_LDFLAGS='-b +s +h $@'
382 # SHLIB_XLDFLAGS='+b $(libdir)'
384 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
389 # must use gcc; the bundled cc cannot compile PIC code
392 # SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@'
393 SHOBJ_LDFLAGS
='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
395 SHLIB_XLDFLAGS
='-Wl,+b,$(libdir)'
397 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
401 SHOBJ_STATUS
=unsupported
402 SHLIB_STATUS
=unsupported
404 # If you are using the HP ANSI C compiler, you can uncomment and use
405 # this code (I have not tested it)
406 # SHOBJ_STATUS=supported
407 # SHLIB_STATUS=supported
411 # SHOBJ_LDFLAGS='-b +s +h $@'
413 # SHLIB_XLDFLAGS='+b $(libdir)'
415 # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
421 SHOBJ_LDFLAGS
='-shared -h $@'
424 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
428 SHOBJ_CFLAGS
='-K PIC'
430 SHOBJ_LDFLAGS
='-dy -z text -G -h $@'
432 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
436 SHOBJ_CFLAGS
='-fpic' # DEFAULTS TO ELF
438 SHOBJ_LDFLAGS
='-shared'
440 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
444 SHOBJ_CFLAGS
='-K pic -b elf'
446 SHOBJ_LDFLAGS
='-G -b elf -dy -z text -h $@'
448 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
454 SHOBJ_LDFLAGS
='-shared'
456 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
460 SHOBJ_CFLAGS
='-K PIC'
462 SHOBJ_LDFLAGS
='-G -dy -z text -h $@'
464 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
467 sysv5UnixWare
*-*gcc
*)
470 SHOBJ_LDFLAGS
='-shared'
472 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
476 SHOBJ_CFLAGS
='-K PIC'
478 SHOBJ_LDFLAGS
='-G -dy -z text -h $@'
480 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
483 sysv5OpenUNIX
*-*gcc
*)
486 SHOBJ_LDFLAGS
='-shared'
488 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
492 SHOBJ_CFLAGS
='-K PIC'
494 SHOBJ_LDFLAGS
='-G -dy -z text -h $@'
496 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
502 SHOBJ_LDFLAGS
='-shared'
504 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
508 SHOBJ_CFLAGS
='-K pic'
510 SHOBJ_LDFLAGS
='-G -dy -h $@'
512 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
516 SHOBJ_STATUS
=unsupported
517 SHLIB_STATUS
=unsupported
522 SHOBJ_LDFLAGS
='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
525 SHLIB_LIBVERSION
='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)'
526 SHLIB_LIBS
='$(TERMCAP_LIB)'
529 # For official cygwin releases, DLLVERSION will be defined in the
530 # environment of configure, and will be incremented any time the API
531 # changes in a non-backwards compatible manner. Otherwise, it is just
533 if [ -n "$DLLVERSION" ] ; then
534 SHLIB_DLLVERSION
="$DLLVERSION"
540 SHOBJ_LDFLAGS
='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
542 SHLIB_LIBVERSION
='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)'
543 SHLIB_LIBS
='$(TERMCAP_LIB)'
546 # For official cygwin releases, DLLVERSION will be defined in the
547 # environment of configure, and will be incremented any time the API
548 # changes in a non-backwards compatible manner. Otherwise, it is just
550 if [ -n "$DLLVERSION" ] ; then
551 SHLIB_DLLVERSION
="$DLLVERSION"
556 # Rely on correct gcc configuration for everything else
561 SHOBJ_LDFLAGS
='-shared'
563 SHLIB_LIBVERSION
='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
567 SHOBJ_STATUS
=unsupported
568 SHLIB_STATUS
=unsupported
573 echo SHOBJ_CC
=\'"$SHOBJ_CC"\'
574 echo SHOBJ_CFLAGS
=\'"$SHOBJ_CFLAGS"\'
575 echo SHOBJ_LD
=\'"$SHOBJ_LD"\'
576 echo SHOBJ_LDFLAGS
=\'"$SHOBJ_LDFLAGS"\'
577 echo SHOBJ_XLDFLAGS
=\'"$SHOBJ_XLDFLAGS"\'
578 echo SHOBJ_LIBS
=\'"$SHOBJ_LIBS"\'
580 echo SHLIB_XLDFLAGS
=\'"$SHLIB_XLDFLAGS"\'
581 echo SHLIB_LIBS
=\'"$SHLIB_LIBS"\'
583 echo SHLIB_DOT
=\'"$SHLIB_DOT"\'
585 echo SHLIB_LIBPREF
=\'"$SHLIB_LIBPREF"\'
586 echo SHLIB_LIBSUFF
=\'"$SHLIB_LIBSUFF"\'
588 echo SHLIB_LIBVERSION
=\'"$SHLIB_LIBVERSION"\'
589 echo SHLIB_DLLVERSION
=\'"$SHLIB_DLLVERSION"\'
591 echo SHOBJ_STATUS
=\'"$SHOBJ_STATUS"\'
592 echo SHLIB_STATUS
=\'"$SHLIB_STATUS"\'
This page took 0.048142 seconds and 4 git commands to generate.