Home | History | Annotate | Download | only in libffi
      1 #### This script is meant to be sourced by ltconfig.
      2 
      3 # ltcf-gcj.sh - Create a GCJ compiler specific configuration
      4 #
      5 # Copyright (C) 1996-1999, 2000, 2001, 2003 Free Software Foundation, Inc.
      6 # Originally by Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996
      7 #
      8 # Original GCJ support by:
      9 #    Alexandre Oliva <oliva (at] lsd.ic.unicamp.br>
     10 #
     11 # This file is free software; you can redistribute it and/or modify it
     12 # under the terms of the GNU General Public License as published by
     13 # the Free Software Foundation; either version 2 of the License, or
     14 # (at your option) any later version.
     15 #
     16 # This program is distributed in the hope that it will be useful, but
     17 # WITHOUT ANY WARRANTY; without even the implied warranty of
     18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     19 # General Public License for more details.
     20 #
     21 # You should have received a copy of the GNU General Public License
     22 # along with this program; if not, write to the Free Software
     23 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     24 #
     25 # As a special exception to the GNU General Public License, if you
     26 # distribute this file as part of a program that contains a
     27 # configuration script generated by Autoconf, you may include it under
     28 # the same distribution terms that you use for the rest of that program.
     29 
     30 
     31 # Source file extension for Java test sources.
     32 ac_ext=java
     33 
     34 # Object file extension for compiled Java test sources.
     35 objext=o
     36 
     37 # Code to be used in simple compile tests
     38 lt_simple_compile_test_code="class foo {}"
     39 
     40 # Code to be used in simple link tests
     41 lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }'
     42 
     43 ## Linker Characteristics
     44 case $host_os in
     45 cygwin* | mingw*)
     46   # FIXME: the MSVC++ port hasn't been tested in a loooong time
     47   # When not using gcc, we currently assume that we are using
     48   # Microsoft Visual C++.
     49   if test "$with_gcc" != yes; then
     50     with_gnu_ld=no
     51   fi
     52   ;;
     53 
     54 esac
     55 
     56 ld_shlibs=yes
     57 if test "$with_gnu_ld" = yes; then
     58   # If archive_cmds runs LD, not CC, wlarc should be empty
     59   wlarc='${wl}'
     60 
     61   # See if GNU ld supports shared libraries.
     62   case $host_os in
     63   aix3* | aix4* | aix5*)
     64     # On AIX/PPC, the GNU linker is very broken
     65     if test "$host_cpu" != ia64; then
     66       ld_shlibs=no
     67       cat <<EOF 1>&2
     68 
     69 *** Warning: the GNU linker, at least up to release 2.9.1, is reported
     70 *** to be unable to reliably create shared libraries on AIX.
     71 *** Therefore, libtool is disabling shared libraries support.  If you
     72 *** really care for shared libraries, you may want to modify your PATH
     73 *** so that a non-GNU linker is found, and then restart.
     74 
     75 EOF
     76     fi
     77     ;;
     78 
     79   amigaos*)
     80     archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
     81     hardcode_libdir_flag_spec='-L$libdir'
     82     hardcode_minus_L=yes
     83 
     84     # Samuel A. Falvo II <kc5tja (at] dolphin.openprojects.net> reports
     85     # that the semantics of dynamic libraries on AmigaOS, at least up
     86     # to version 4, is to share data among multiple programs linked
     87     # with the same dynamic library.  Since this doesn't match the
     88     # behavior of shared libraries on other platforms, we can use
     89     # them.
     90     ld_shlibs=no
     91     ;;
     92 
     93   beos*)
     94     if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
     95       allow_undefined_flag=unsupported
     96       # Joseph Beckenbach <jrb3 (at] best.com> says some releases of gcc
     97       # support --undefined.  This deserves some investigation.  FIXME
     98       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
     99     else
    100       ld_shlibs=no
    101     fi
    102     ;;
    103 
    104   cygwin* | mingw*)
    105     # hardcode_libdir_flag_spec is actually meaningless, as there is
    106     # no search path for DLLs.
    107     hardcode_libdir_flag_spec='-L$libdir'
    108     allow_undefined_flag=unsupported
    109     always_export_symbols=yes
    110 
    111     extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
    112       sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //; p; }" -e d < $0 > $output_objdir/impgen.c~
    113       test -f $output_objdir/impgen.exe || (cd $output_objdir && \
    114       if test "x$BUILD_CC" != "x" ; then $BUILD_CC -o impgen impgen.c ; \
    115       else $CC -o impgen impgen.c ; fi)~
    116       $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
    117 
    118     old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
    119 
    120     # cygwin and mingw dlls have different entry points and sets of symbols
    121     # to exclude.
    122     # FIXME: what about values for MSVC?
    123     dll_entry=__cygwin_dll_entry@12
    124     dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
    125     case $host_os in
    126     mingw*)
    127       # mingw values
    128       dll_entry=_DllMainCRTStartup@12
    129       dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
    130       ;;
    131     esac
    132 
    133     # mingw and cygwin differ, and it's simplest to just exclude the union
    134     # of the two symbol sets.
    135     dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
    136 
    137     # recent cygwin and mingw systems supply a stub DllMain which the user
    138     # can override, but on older systems we have to supply one (in ltdll.c)
    139     if test "x$lt_cv_need_dllmain" = "xyes"; then
    140       ltdll_obj='$output_objdir/$soname-ltdll.'"$objext "
    141       ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $output_objdir/$soname-ltdll.c~
    142 	test -f $output_objdir/$soname-ltdll.$objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
    143     else
    144       ltdll_obj=
    145       ltdll_cmds=
    146     fi
    147 
    148     # Extract the symbol export list from an `--export-all' def file,
    149     # then regenerate the def file from the symbol export list, so that
    150     # the compiled dll only exports the symbol export list.
    151     # Be careful not to strip the DATA tag left be newer dlltools.
    152     export_symbols_cmds="$ltdll_cmds"'
    153       $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
    154       sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
    155 
    156     # If the export-symbols file already is a .def file (1st line
    157     # is EXPORTS), use it as is.
    158     # If DATA tags from a recent dlltool are present, honour them!
    159     archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
    160         cp $export_symbols $output_objdir/$soname-def;
    161       else
    162         echo EXPORTS > $output_objdir/$soname-def;
    163         _lt_hint=1;
    164         cat $export_symbols | while read symbol; do
    165          set dummy \$symbol;
    166          case \[$]# in
    167            2) echo "   \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
    168            *) echo "     \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
    169          esac;
    170          _lt_hint=`expr 1 + \$_lt_hint`;
    171         done;
    172       fi~
    173       '"$ltdll_cmds"'
    174       $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
    175       $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
    176       $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
    177       $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
    178       $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
    179     ;;
    180 
    181   netbsd* | knetbsd*-gnu)
    182     if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
    183       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
    184       wlarc=
    185     else
    186       archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
    187       archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
    188     fi
    189     ;;
    190 
    191   solaris* | sysv5*)
    192     if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
    193       ld_shlibs=no
    194       cat <<EOF 1>&2
    195 
    196 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
    197 *** create shared libraries on Solaris systems.  Therefore, libtool
    198 *** is disabling shared libraries support.  We urge you to upgrade GNU
    199 *** binutils to release 2.9.1 or newer.  Another option is to modify
    200 *** your PATH or compiler configuration so that the native linker is
    201 *** used, and then restart.
    202 
    203 EOF
    204     elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
    205       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
    206       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
    207     else
    208       ld_shlibs=no
    209     fi
    210     ;;
    211 
    212   sunos4*)
    213     archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
    214     wlarc=
    215     hardcode_direct=yes
    216     hardcode_shlibpath_var=no
    217     ;;
    218 
    219   *)
    220     if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
    221       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
    222       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
    223     else
    224       ld_shlibs=no
    225     fi
    226     ;;
    227   esac
    228 
    229   if test "$ld_shlibs" = yes; then
    230     runpath_var=LD_RUN_PATH
    231     hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
    232     export_dynamic_flag_spec='${wl}--export-dynamic'
    233     case $host_os in
    234     cygwin* | mingw*)
    235       # dlltool doesn't understand --whole-archive et. al.
    236       whole_archive_flag_spec=
    237       ;;
    238     *)
    239       # ancient GNU ld didn't support --whole-archive et. al.
    240       if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
    241 	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
    242       else
    243 	whole_archive_flag_spec=
    244       fi
    245       ;;
    246     esac
    247   fi
    248 else
    249   # PORTME fill in a description of your system's linker (not GNU ld)
    250   case $host_os in
    251   aix3*)
    252     allow_undefined_flag=unsupported
    253     always_export_symbols=yes
    254     archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
    255     # Note: this linker hardcodes the directories in LIBPATH if there
    256     # are no directories specified by -L.
    257     hardcode_minus_L=yes
    258     if test "$with_gcc" = yes && test -z "$link_static_flag"; then
    259       # Neither direct hardcoding nor static linking is supported with a
    260       # broken collect2.
    261       hardcode_direct=unsupported
    262     fi
    263     ;;
    264 
    265   aix4* | aix5*)
    266     hardcode_direct=yes
    267     hardcode_libdir_separator=':'
    268     link_all_deplibs=yes
    269     # When large executables or shared objects are built, AIX ld can
    270     # have problems creating the table of contents.  If linking a library
    271     # or program results in "error TOC overflow" add -mminimal-toc to
    272     # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
    273     # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
    274     if test "$with_gcc" = yes; then
    275       case $host_os in aix4.[012]|aix4.[012].*)
    276       # We only want to do this on AIX 4.2 and lower, the check
    277       # below for broken collect2 doesn't work under 4.3+
    278         collect2name=`${CC} -print-prog-name=collect2`
    279         if test -f "$collect2name" && \
    280 	   strings "$collect2name" | grep resolve_lib_name >/dev/null
    281         then
    282 	  # We have reworked collect2
    283 	  hardcode_direct=yes
    284         else
    285 	  # We have old collect2
    286 	  hardcode_direct=unsupported
    287 	  # It fails to find uninstalled libraries when the uninstalled
    288 	  # path is not listed in the libpath.  Setting hardcode_minus_L
    289 	  # to unsupported forces relinking
    290 	  hardcode_minus_L=yes
    291 	  hardcode_libdir_flag_spec='-L$libdir'
    292 	  hardcode_libdir_separator=
    293         fi
    294       esac
    295       shared_flag='-shared'
    296     else
    297       # not using gcc
    298       if test "$host_cpu" = ia64; then
    299         shared_flag='${wl}-G'
    300       else
    301         shared_flag='${wl}-bM:SRE'
    302       fi
    303     fi
    304 
    305     if test "$host_cpu" = ia64; then
    306       # On IA64, the linker does run time linking by default, so we don't
    307       # have to do anything special.
    308       aix_use_runtimelinking=no
    309       if test $with_gnu_ld = no; then
    310         exp_sym_flag='-Bexport'
    311         no_entry_flag=""
    312       fi
    313     else
    314       # Test if we are trying to use run time linking, or normal AIX style linking.
    315       # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
    316       aix_use_runtimelinking=no
    317       for ld_flag in $LDFLAGS; do
    318         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
    319           aix_use_runtimelinking=yes
    320           break
    321         fi
    322       done
    323       exp_sym_flag='-bexport'
    324       no_entry_flag='-bnoentry'
    325     fi
    326     # -bexpall does not export symbols beginning with underscore (_)
    327     always_export_symbols=yes
    328     if test "$aix_use_runtimelinking" = yes; then
    329       # Warning - without using the other run time loading flags (-brtl), -berok will
    330       #           link without error, but may produce a broken library.
    331       allow_undefined_flag=' ${wl}-berok'
    332       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
    333       archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
    334     else
    335       if test "$host_cpu" = ia64; then
    336         if test $with_gnu_ld = no; then
    337           hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
    338           allow_undefined_flag="-z nodefs"
    339           archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
    340         fi
    341       else
    342         allow_undefined_flag=' ${wl}-berok'
    343         # -bexpall does not export symbols beginning with underscore (_)
    344         always_export_symbols=yes
    345         # Exported symbols can be pulled into shared objects from archives
    346         whole_archive_flag_spec=' '
    347         build_libtool_need_lc=yes
    348         hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
    349         # This is similar to how AIX traditionally builds it's shared libraries.
    350         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
    351       fi
    352     fi
    353   ;;
    354 
    355   amigaos*)
    356     archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
    357     hardcode_libdir_flag_spec='-L$libdir'
    358     hardcode_minus_L=yes
    359     # see comment about different semantics on the GNU ld section
    360     ld_shlibs=no
    361     ;;
    362 
    363   cygwin* | mingw*)
    364     # When not using gcc, we currently assume that we are using
    365     # Microsoft Visual C++.
    366     # hardcode_libdir_flag_spec is actually meaningless, as there is
    367     # no search path for DLLs.
    368     hardcode_libdir_flag_spec=' '
    369     allow_undefined_flag=unsupported
    370     # Tell ltmain to make .lib files, not .a files.
    371     libext=lib
    372     # FIXME: Setting linknames here is a bad hack.
    373     archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
    374     # The linker will automatically build a .lib file if we build a DLL.
    375     old_archive_from_new_cmds='true'
    376     # FIXME: Should let the user specify the lib program.
    377     old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
    378     fix_srcfile_path='`cygpath -w "$srcfile"`'
    379     ;;
    380 
    381   darwin* | rhapsody*)
    382     case "$host_os" in
    383     rhapsody* | darwin1.[[012]])
    384 	allow_undefined_flag='-undefined suppress'
    385 	;;
    386     *) # Darwin 1.3 on
    387       if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
    388 	  allow_undefined_flag='-flat_namespace -undefined suppress'
    389       else
    390 	  case ${MACOSX_DEPLOYMENT_TARGET} in
    391 	      10.[[012]])
    392 		  allow_undefined_flag='-flat_namespace -undefined suppress'
    393 		  ;;
    394 	      10.*)
    395 		  allow_undefined_flag='-undefined dynamic_lookup'
    396 		  ;;
    397 	  esac
    398       fi
    399       ;;
    400     esac
    401     # Disable shared library build on OS-X older than 10.3.
    402     case $host_os in
    403 	darwin[1-6]*)
    404 	    can_build_shared=no
    405 	    ;;
    406 	darwin7*)
    407 	    can_build_shared=yes
    408 	    ;;
    409     esac
    410     output_verbose_link_cmd='echo'
    411     archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
    412     module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
    413       # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
    414     archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
    415     module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
    416     hardcode_direct=no
    417     hardcode_automatic=yes
    418     hardcode_shlibpath_var=unsupported
    419     whole_archive_flag_spec='-all_load $convenience'
    420     link_all_deplibs=yes
    421     ;;
    422 
    423 
    424   freebsd1*)
    425     ld_shlibs=no
    426     ;;
    427 
    428   # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
    429   # support.  Future versions do this automatically, but an explicit c++rt0.o
    430   # does not break anything, and helps significantly (at the cost of a little
    431   # extra space).
    432   freebsd2.2*)
    433     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
    434     hardcode_libdir_flag_spec='-R$libdir'
    435     hardcode_direct=yes
    436     hardcode_shlibpath_var=no
    437     ;;
    438 
    439   # Unfortunately, older versions of FreeBSD 2 do not have this feature.
    440   freebsd2*)
    441     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
    442     hardcode_direct=yes
    443     hardcode_minus_L=yes
    444     hardcode_shlibpath_var=no
    445     ;;
    446 
    447   # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
    448   freebsd* | kfreebsd*-gnu)
    449     archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
    450     hardcode_libdir_flag_spec='-R$libdir'
    451     hardcode_direct=yes
    452     hardcode_shlibpath_var=no
    453     ;;
    454 
    455   hpux9* | hpux10* | hpux11*)
    456     case $host_os in
    457     hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
    458     *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
    459     esac
    460     hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
    461     hardcode_libdir_separator=:
    462     hardcode_direct=yes
    463     hardcode_minus_L=yes # Not in the search PATH, but as the default
    464 			 # location of the library.
    465     export_dynamic_flag_spec='${wl}-E'
    466     ;;
    467 
    468   irix5* | irix6*)
    469     if test "$with_gcc" = yes; then
    470       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
    471     else
    472       archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
    473     fi
    474     hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
    475     hardcode_libdir_separator=:
    476     link_all_deplibs=yes
    477     ;;
    478 
    479   netbsd* | knetbsd*-gnu)
    480     if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
    481       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
    482     else
    483       archive_cmds='$LD -shared -nodefaultlibs -o $lib $libobjs $deplibs $linker_flags'      # ELF
    484     fi
    485     hardcode_libdir_flag_spec='${wl}-R$libdir'
    486     hardcode_direct=yes
    487     hardcode_shlibpath_var=no
    488     ;;
    489 
    490   openbsd*)
    491     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
    492     hardcode_libdir_flag_spec='-R$libdir'
    493     hardcode_direct=yes
    494     hardcode_shlibpath_var=no
    495     ;;
    496 
    497   os2*)
    498     hardcode_libdir_flag_spec='-L$libdir'
    499     hardcode_minus_L=yes
    500     allow_undefined_flag=unsupported
    501     archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
    502     old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
    503     ;;
    504 
    505   osf3*)
    506     if test "$with_gcc" = yes; then
    507       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
    508       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
    509     else
    510       allow_undefined_flag=' -expect_unresolved \*'
    511       archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
    512     fi
    513     hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
    514     hardcode_libdir_separator=:
    515     ;;
    516 
    517   osf4* | osf5*)	# as osf3* with the addition of -msym flag
    518     if test "$with_gcc" = yes; then
    519       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
    520       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
    521     else
    522       allow_undefined_flag=' -expect_unresolved \*'
    523       archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
    524     fi
    525     hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
    526     hardcode_libdir_separator=:
    527     ;;
    528 
    529   sco3.2v5*)
    530     archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
    531     hardcode_shlibpath_var=no
    532     runpath_var=LD_RUN_PATH
    533     hardcode_runpath_var=yes
    534     ;;
    535 
    536   solaris*)
    537     no_undefined_flag=' ${wl}-z ${wl}defs'
    538     archive_cmds='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
    539     archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
    540       $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
    541 
    542     # Commands to make compiler produce verbose output that lists
    543     # what "hidden" libraries, object files and flags are used when
    544     # linking a shared library.
    545     output_verbose_link_cmds="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep \"\-L\""
    546 
    547     hardcode_libdir_flag_spec='${wl}-R $wl$libdir'
    548     hardcode_shlibpath_var=no
    549     case $host_os in
    550     solaris2.[0-5] | solaris2.[0-5].*) ;;
    551     *) # Supported since Solaris 2.6 (maybe 2.5.1?)
    552       whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;;
    553     esac
    554     link_all_deplibs=yes
    555     ;;
    556 
    557   sunos4*)
    558     archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
    559     hardcode_libdir_flag_spec='-L$libdir'
    560     hardcode_direct=yes
    561     hardcode_minus_L=yes
    562     hardcode_shlibpath_var=no
    563     ;;
    564 
    565   sysv4)
    566     archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
    567     runpath_var='LD_RUN_PATH'
    568     hardcode_shlibpath_var=no
    569     hardcode_direct=no #Motorola manual says yes, but my tests say they lie
    570     ;;
    571 
    572   sysv4.3*)
    573     archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
    574     hardcode_shlibpath_var=no
    575     export_dynamic_flag_spec='-Bexport'
    576     ;;
    577 
    578   sysv5*)
    579     no_undefined_flag=' -z text'
    580     # $CC -shared without GNU ld will not create a library from C++
    581     # object files and a static libstdc++, better avoid it by now
    582     archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
    583     archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
    584 		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
    585     hardcode_libdir_flag_spec=
    586     hardcode_shlibpath_var=no
    587     runpath_var='LD_RUN_PATH'
    588     ;;
    589 
    590   uts4*)
    591     archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
    592     hardcode_libdir_flag_spec='-L$libdir'
    593     hardcode_shlibpath_var=no
    594     ;;
    595 
    596   dgux*)
    597     archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
    598     hardcode_libdir_flag_spec='-L$libdir'
    599     hardcode_shlibpath_var=no
    600     ;;
    601 
    602   sysv4*MP*)
    603     if test -d /usr/nec; then
    604       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
    605       hardcode_shlibpath_var=no
    606       runpath_var=LD_RUN_PATH
    607       hardcode_runpath_var=yes
    608       ld_shlibs=yes
    609     fi
    610     ;;
    611 
    612   sysv4.2uw2*)
    613     archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
    614     hardcode_direct=yes
    615     hardcode_minus_L=no
    616     hardcode_shlibpath_var=no
    617     hardcode_runpath_var=yes
    618     runpath_var=LD_RUN_PATH
    619     ;;
    620 
    621   sysv5uw7* | unixware7*)
    622     no_undefined_flag='${wl}-z ${wl}text'
    623     if test "$GCC" = yes; then
    624       archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
    625     else
    626       archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
    627     fi
    628     runpath_var='LD_RUN_PATH'
    629     hardcode_shlibpath_var=no
    630     ;;
    631 
    632   *)
    633     ld_shlibs=no
    634     ;;
    635   esac
    636 fi
    637 
    638 ## Compiler Characteristics: PIC flags, static flags, etc
    639 
    640 # We don't use cached values here since only the C compiler
    641 # characteristics should be cached.
    642   ac_cv_prog_cc_pic=
    643   ac_cv_prog_cc_shlib=
    644   ac_cv_prog_cc_wl=
    645   ac_cv_prog_cc_static=
    646   ac_cv_prog_cc_no_builtin=
    647   ac_cv_prog_cc_can_build_shared=$can_build_shared
    648 
    649     ac_cv_prog_cc_wl='-Wl,'
    650     ac_cv_prog_cc_static='-static'
    651 
    652     case $host_os in
    653     beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
    654       # PIC is the default for these OSes.
    655       ;;
    656     aix*)
    657       # Below there is a dirty hack to force normal static linking with -ldl
    658       # The problem is because libdl dynamically linked with both libc and
    659       # libC (AIX C++ library), which obviously doesn't included in libraries
    660       # list by gcc. This cause undefined symbols with -static flags.
    661       # This hack allows C programs to be linked with "-static -ldl", but
    662       # we not sure about C++ programs.
    663       ac_cv_prog_cc_static="$ac_cv_prog_cc_static ${ac_cv_prog_cc_wl}-lC"
    664       ;;
    665     *djgpp*)
    666       # DJGPP does not suppot shared libraries at all
    667       ac_cv_prog_cc_pic=
    668       ;;
    669     cygwin* | mingw* | os2*)
    670       # This hack is so that the source file can tell whether it is being
    671       # built for inclusion in a dll (and should export symbols for example).
    672       ac_cv_prog_cc_pic='-DDLL_EXPORT'
    673       ;;
    674 
    675     darwin* | rhapsody*)
    676       # PIC is the default on this platform
    677       # Common symbols not allowed in MH_DYLIB files
    678       ac_cv_prog_cc_pic='-fno-common'
    679       ;;
    680     amigaos*)
    681       # FIXME: we need at least 68020 code to build shared libraries, but
    682       # adding the `-m68020' flag to GCC prevents building anything better,
    683       # like `-m68040'.
    684       ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
    685       ;;
    686     sysv4*MP*)
    687       if test -d /usr/nec; then
    688 	 ac_cv_prog_cc_pic=-Kconform_pic
    689       fi
    690       ;;
    691     *)
    692       ac_cv_prog_cc_pic='-fPIC'
    693       ;;
    694     esac
    695 
    696 # GCJ did not exist at the time GCC didn't implicitly link libc in.
    697 need_lc=no
    698 
    699 # All existing releases of GCJ support `-c -o'.
    700 lt_cv_compiler_c_o=yes
    701