source: trunk/third/binutils/ltcf-c.sh @ 21000

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