source: branches/libc-0.6/src/binutils/ltcf-cxx.sh@ 2512

Last change on this file since 2512 was 606, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r605,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 36.2 KB
Line 
1#### This script is meant to be sourced by ltconfig.
2
3# ltcf-cxx.sh - Create a C++ compiler specific configuration
4#
5# Copyright (C) 1996-1999, 2000, 2001, 2003 Free Software Foundation, Inc.
6# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7#
8# Original C++ support by:Gary V. Vaughan <gvv@techie.com>
9# Alexandre Oliva <oliva@lsd.ic.unicamp.br>
10# Ossama Othman <ossama@debian.org>
11# Thomas Thanner <tanner@gmx.de>
12#
13# This file is free software; you can redistribute it and/or modify it
14# under the terms of the GNU General Public License as published by
15# the Free Software Foundation; either version 2 of the License, or
16# (at your option) any later version.
17#
18# This program is distributed in the hope that it will be useful, but
19# WITHOUT ANY WARRANTY; without even the implied warranty of
20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21# General Public License for more details.
22#
23# You should have received a copy of the GNU General Public License
24# along with this program; if not, write to the Free Software
25# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26#
27# As a special exception to the GNU General Public License, if you
28# distribute this file as part of a program that contains a
29# configuration script generated by Autoconf, you may include it under
30# the same distribution terms that you use for the rest of that program.
31
32
33# Source file extension for C++ test sources.
34ac_ext=cc
35
36# Object file extension for compiled C++ test sources.
37objext=o
38
39# Code to be used in simple compile tests
40lt_simple_compile_test_code="int some_variable = 0;"
41
42# Code to be used in simple link tests
43lt_simple_link_test_code='int main(int, char *[]) { return (0); }'
44
45# C++ compiler
46CXX=${CXX-c++}
47
48# ltmain only uses $CC for tagged configurations so make sure $CC is set.
49CC=${CC-"$CXX"}
50CFLAGS=${CFLAGS-"$CXXFLAGS"}
51
52# Allow CC to be a program name with arguments.
53set dummy $CC
54compiler=$2
55cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
56
57# Check if we are using GNU gcc (taken/adapted from configure script)
58# We need to check here since "--with-gcc" is set at configure time,
59# not ltconfig time!
60cat > conftest.$ac_ext <<EOF
61#ifdef __GNUC__
62 yes;
63#endif
64EOF
65if { ac_try='${CC-c++} -E conftest.$ac_ext'; { (eval echo \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
66 with_gcc=yes
67
68 # Set up default GNU C++ configuration
69
70 # Check if GNU C++ uses GNU ld as the underlying linker, since the
71 # archiving commands below assume that GNU ld is being used. The
72 # assumption here is that the linker is going to be the same as that
73 # used by the C compiler. For the purposes of GCC, this is ok, but
74 # if someone uses g++ along with a non-GNU C compiler that doesn't
75 # use GNU ld, we may lose. This is ok for the toolchain tree, since
76 # the only users of ltcf-cxx.sh are libstdc++-v3 and libjava,
77 # anyway, and those use both gcc and g++, so the settings are bound
78 # to be the same.
79
80 if test "$with_gnu_ld" = yes; then
81 archive_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
82 archive_expsym_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
83
84 hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
85 export_dynamic_flag_spec='${wl}--export-dynamic'
86
87 # If archive_cmds runs LD, not CC, wlarc should be empty
88 # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
89 # investigate it a little bit more. (MM)
90 wlarc='${wl}'
91
92 # ancient GNU ld didn't support --whole-archive et. al.
93 if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
94 egrep 'no-whole-archive' > /dev/null; then
95 whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
96 else
97 whole_archive_flag_spec=
98 fi
99 else
100 wlarc=
101
102 # A generic and very simple default shared library creation
103 # command for GNU C++ for the case where it uses the native
104 # linker, instead of GNU ld. If possible, this setting should
105 # overridden to take advantage of the native linker features on
106 # the platform it is being used on.
107 archive_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
108 fi
109
110 # Commands to make compiler produce verbose output that lists
111 # what "hidden" libraries, object files and flags are used when
112 # linking a shared library.
113 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
114
115else
116 with_gcc=no
117 wlarc=
118fi
119
120# PORTME: fill in a description of your system's C++ link characteristics
121case $host_os in
122 aix3*)
123 # FIXME: insert proper C++ library support
124 ld_shlibs=no
125 ;;
126 aix4* | aix5*)
127 archive_cmds=''
128 hardcode_direct=yes
129 hardcode_libdir_separator=':'
130 link_all_deplibs=yes
131 # When large executables or shared objects are built, AIX ld can
132 # have problems creating the table of contents. If linking a library
133 # or program results in "error TOC overflow" add -mminimal-toc to
134 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
135 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
136 if test "$with_gcc" = yes; then
137 case $host_os in aix4.[012]|aix4.[012].*)
138 # We only want to do this on AIX 4.2 and lower, the check
139 # below for broken collect2 doesn't work under 4.3+
140 collect2name=`${CC} -print-prog-name=collect2`
141 if test -f "$collect2name" && \
142 strings "$collect2name" | grep resolve_lib_name >/dev/null
143 then
144 # We have reworked collect2
145 hardcode_direct=yes
146 else
147 # We have old collect2
148 hardcode_direct=unsupported
149 # It fails to find uninstalled libraries when the uninstalled
150 # path is not listed in the libpath. Setting hardcode_minus_L
151 # to unsupported forces relinking
152 hardcode_minus_L=yes
153 hardcode_libdir_flag_spec='-L$libdir'
154 hardcode_libdir_separator=
155 fi
156 esac
157 shared_flag='-shared'
158 else
159 # not using gcc
160 if test "$host_cpu" = ia64; then
161 shared_flag='${wl}-G'
162 else
163 shared_flag='${wl}-bM:SRE'
164 fi
165 fi
166
167 if test "$host_cpu" = ia64; then
168 # On IA64, the linker does run time linking by default, so we don't
169 # have to do anything special.
170 aix_use_runtimelinking=no
171 if test $with_gnu_ld = no; then
172 exp_sym_flag='-Bexport'
173 no_entry_flag=""
174 fi
175 else
176 # Test if we are trying to use run time linking, or normal AIX style linking.
177 # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
178 aix_use_runtimelinking=no
179 for ld_flag in $LDFLAGS; do
180 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
181 aix_use_runtimelinking=yes
182 break
183 fi
184 done
185 exp_sym_flag='-bexport'
186 no_entry_flag='-bnoentry'
187 fi
188 # It seems that -bexpall does not export symbols beginning with
189 # underscore (_), so it is better to generate a list of symbols to export.
190 always_export_symbols=yes
191 if test "$aix_use_runtimelinking" = yes; then
192 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
193 allow_undefined_flag=' -Wl,-G'
194 archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}-brtl \${wl}$exp_sym_flag:\$export_symbols"
195 else
196 if test "$host_cpu" = ia64; then
197 if test $with_gnu_ld = no; then
198 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
199 allow_undefined_flag="-z nodefs"
200 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"
201 fi
202 else
203 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
204 # Warning - without using the other run time loading flags, -berok will
205 # link without error, but may produce a broken library.
206 no_undefined_flag=' ${wl}-bnoerok'
207 allow_undefined_flag=' ${wl}-berok'
208 # -bexpall does not export symbols beginning with underscore (_)
209 always_export_symbols=yes
210 # Exported symbols can be pulled into shared objects from archives
211 whole_archive_flag_spec=' '
212 build_libtool_need_lc=yes
213 # This is similar to how AIX traditionally builds it's shared libraries.
214 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'
215 fi
216 fi
217 ;;
218 chorus*)
219 case $cc_basename in
220 *)
221 # FIXME: insert proper C++ library support
222 ld_shlibs=no
223 ;;
224 esac
225 ;;
226 dgux*)
227 case $cc_basename in
228 ec++)
229 # FIXME: insert proper C++ library support
230 ld_shlibs=no
231 ;;
232 ghcx)
233 # Green Hills C++ Compiler
234 # FIXME: insert proper C++ library support
235 ld_shlibs=no
236 ;;
237 *)
238 # FIXME: insert proper C++ library support
239 ld_shlibs=no
240 ;;
241 esac
242 ;;
243 freebsd[12]*)
244 # C++ shared libraries reported to be fairly broken before switch to ELF
245 ld_shlibs=no
246 ;;
247 freebsd*)
248 # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
249 # conventions
250 ld_shlibs=yes
251 ;;
252 gnu*)
253 ;;
254 hpux*)
255 if test $with_gnu_ld = no; then
256 case "$host_cpu" in
257 ia64*)
258 hardcode_libdir_flag_spec='-L$libdir'
259 hardcode_shlibpath_var=no ;;
260 *)
261 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ;;
262 esac
263 hardcode_direct=yes
264 hardcode_libdir_separator=:
265 export_dynamic_flag_spec='${wl}-E'
266 fi
267 hardcode_minus_L=yes # Not in the search PATH, but as the default
268 # location of the library.
269
270 case $cc_basename in
271 CC)
272 # FIXME: insert proper C++ library support
273 ld_shlibs=no
274 ;;
275 aCC)
276 case $host_os in
277 hpux9*) archive_cmds='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
278 *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;;
279 esac
280 # Commands to make compiler produce verbose output that lists
281 # what "hidden" libraries, object files and flags are used when
282 # linking a shared library.
283 #
284 # There doesn't appear to be a way to prevent this compiler from
285 # explicitly linking system object files so we need to strip them
286 # from the output so that they don't get included in the library
287 # dependencies.
288 output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
289 ;;
290 *)
291 if test $with_gcc = yes; then
292 if test $with_gnu_ld = no; then
293 case "$host_os" in
294 hpux9*) archive_cmds='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
295 *)
296 case "$host_cpu" in
297 ia64*)
298 archive_cmds='$LD -b +h $soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ;;
299 *)
300 archive_cmds='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;;
301 esac
302 ;;
303 esac
304 fi
305 else
306 # FIXME: insert proper C++ library support
307 ld_shlibs=no
308 fi
309 ;;
310 esac
311 ;;
312 irix5* | irix6*)
313 case $cc_basename in
314 CC)
315 # SGI C++
316 archive_cmds='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
317
318 # Archives containing C++ object files must be created using
319 # "CC -ar", where "CC" is the IRIX C++ compiler. This is
320 # necessary to make sure instantiated templates are included
321 # in the archive.
322 old_archive_cmds='$CC -ar -WR,-u -o $oldlib $oldobjs'
323 ;;
324 *)
325 if test "$with_gcc" = yes; then
326 if test "$with_gnu_ld" = no; then
327 archive_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
328 else
329 archive_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -o $lib'
330 fi
331 fi
332 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
333 hardcode_libdir_separator=:
334 link_all_deplibs=yes
335 ;;
336 esac
337 ;;
338 linux*)
339 case $cc_basename in
340 KCC)
341 # Kuck and Associates, Inc. (KAI) C++ Compiler
342
343 # KCC will only create a shared library if the output file
344 # ends with ".so" (or ".sl" for HP-UX), so rename the library
345 # to its proper name (with version) after linking.
346 archive_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
347 archive_expsym_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
348
349 # Commands to make compiler produce verbose output that lists
350 # what "hidden" libraries, object files and flags are used when
351 # linking a shared library.
352 #
353 # There doesn't appear to be a way to prevent this compiler from
354 # explicitly linking system object files so we need to strip them
355 # from the output so that they don't get included in the library
356 # dependencies.
357 output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest.so 2>&1 | egrep "ld"`; rm -f libconftest.so; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
358
359 hardcode_libdir_flag_spec='${wl}--rpath,$libdir'
360 export_dynamic_flag_spec='${wl}--export-dynamic'
361
362 # Archives containing C++ object files must be created using
363 # "CC -Bstatic", where "CC" is the KAI C++ compiler.
364 old_archive_cmds='$CC -Bstatic -o $oldlib $oldobjs'
365 ;;
366 cxx)
367 # Compaq C++
368 archive_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
369 archive_expsym_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
370
371 runpath_var=LD_RUN_PATH
372 hardcode_libdir_flag_spec='-rpath $libdir'
373 hardcode_libdir_separator=:
374
375 # Commands to make compiler produce verbose output that lists
376 # what "hidden" libraries, object files and flags are used when
377 # linking a shared library.
378 #
379 # There doesn't appear to be a way to prevent this compiler from
380 # explicitly linking system object files so we need to strip them
381 # from the output so that they don't get included in the library
382 # dependencies.
383 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | sed "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
384 ;;
385 esac
386 ;;
387 lynxos*)
388 # FIXME: insert proper C++ library support
389 ld_shlibs=no
390 ;;
391 m88k*)
392 # FIXME: insert proper C++ library support
393 ld_shlibs=no
394 ;;
395 mvs*)
396 case $cc_basename in
397 cxx)
398 # FIXME: insert proper C++ library support
399 ld_shlibs=no
400 ;;
401 *)
402 # FIXME: insert proper C++ library support
403 ld_shlibs=no
404 ;;
405 esac
406 ;;
407 netbsd*)
408 # NetBSD uses g++ - do we need to do anything?
409 ;;
410 osf3*)
411 case $cc_basename in
412 KCC)
413 # Kuck and Associates, Inc. (KAI) C++ Compiler
414
415 # KCC will only create a shared library if the output file
416 # ends with ".so" (or ".sl" for HP-UX), so rename the library
417 # to its proper name (with version) after linking.
418 archive_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
419
420 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
421 hardcode_libdir_separator=:
422
423 # Archives containing C++ object files must be created using
424 # "CC -Bstatic", where "CC" is the KAI C++ compiler.
425 old_archive_cmds='$CC -Bstatic -o $oldlib $oldobjs'
426
427 ;;
428 RCC)
429 # Rational C++ 2.4.1
430 # FIXME: insert proper C++ library support
431 ld_shlibs=no
432 ;;
433 cxx)
434 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
435 archive_cmds='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
436
437 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
438 hardcode_libdir_separator=:
439
440 # Commands to make compiler produce verbose output that lists
441 # what "hidden" libraries, object files and flags are used when
442 # linking a shared library.
443 #
444 # There doesn't appear to be a way to prevent this compiler from
445 # explicitly linking system object files so we need to strip them
446 # from the output so that they don't get included in the library
447 # dependencies.
448 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | sed "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
449 ;;
450 *)
451 if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then
452 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
453 archive_cmds='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
454
455 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
456 hardcode_libdir_separator=:
457
458 # Commands to make compiler produce verbose output that lists
459 # what "hidden" libraries, object files and flags are used when
460 # linking a shared library.
461 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
462 else
463 # FIXME: insert proper C++ library support
464 ld_shlibs=no
465 fi
466 ;;
467 esac
468 ;;
469 osf4* | osf5*)
470 case $cc_basename in
471 KCC)
472 # Kuck and Associates, Inc. (KAI) C++ Compiler
473
474 # KCC will only create a shared library if the output file
475 # ends with ".so" (or ".sl" for HP-UX), so rename the library
476 # to its proper name (with version) after linking.
477 archive_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
478
479 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
480 hardcode_libdir_separator=:
481
482 # Archives containing C++ object files must be created using
483 # the KAI C++ compiler.
484 old_archive_cmds='$CC -o $oldlib $oldobjs'
485 ;;
486 RCC)
487 # Rational C++ 2.4.1
488 # FIXME: insert proper C++ library support
489 ld_shlibs=no
490 ;;
491 cxx)
492 allow_undefined_flag=' -expect_unresolved \*'
493 archive_cmds='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
494 archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done~
495 echo "-hidden">> $lib.exp~
496 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
497 $rm $lib.exp'
498
499 hardcode_libdir_flag_spec='-rpath $libdir'
500 hardcode_libdir_separator=:
501
502 # Commands to make compiler produce verbose output that lists
503 # what "hidden" libraries, object files and flags are used when
504 # linking a shared library.
505 #
506 # There doesn't appear to be a way to prevent this compiler from
507 # explicitly linking system object files so we need to strip them
508 # from the output so that they don't get included in the library
509 # dependencies.
510 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | sed "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
511 ;;
512 *)
513 if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then
514 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
515 archive_cmds='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $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'
516
517 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
518 hardcode_libdir_separator=:
519
520 # Commands to make compiler produce verbose output that lists
521 # what "hidden" libraries, object files and flags are used when
522 # linking a shared library.
523 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
524 else
525 # FIXME: insert proper C++ library support
526 ld_shlibs=no
527 fi
528 ;;
529 esac
530 ;;
531 psos*)
532 # FIXME: insert proper C++ library support
533 ld_shlibs=no
534 ;;
535 sco*)
536 case $cc_basename in
537 CC)
538 # FIXME: insert proper C++ library support
539 ld_shlibs=no
540 ;;
541 *)
542 # FIXME: insert proper C++ library support
543 ld_shlibs=no
544 ;;
545 esac
546 ;;
547 sunos4*)
548 case $cc_basename in
549 CC)
550 # Sun C++ 4.x
551 # FIXME: insert proper C++ library support
552 ld_shlibs=no
553 ;;
554 lcc)
555 # Lucid
556 # FIXME: insert proper C++ library support
557 ld_shlibs=no
558 ;;
559 *)
560 # FIXME: insert proper C++ library support
561 ld_shlibs=no
562 ;;
563 esac
564 ;;
565 solaris*)
566 case $cc_basename in
567 CC)
568 # Sun C++ 4.2, 5.x and Centerline C++
569 no_undefined_flag=' -zdefs'
570 archive_cmds='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
571 archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
572 $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
573
574 hardcode_libdir_flag_spec='-R$libdir'
575 hardcode_shlibpath_var=no
576 case $host_os in
577 solaris2.[0-5] | solaris2.[0-5].*) ;;
578 *)
579 # The C++ compiler is used as linker so we must use $wl
580 # flag to pass the commands to the underlying system
581 # linker.
582 # Supported since Solaris 2.6 (maybe 2.5.1?)
583 whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
584 ;;
585 esac
586 link_all_deplibs=yes
587
588 # Commands to make compiler produce verbose output that lists
589 # what "hidden" libraries, object files and flags are used when
590 # linking a shared library.
591 #
592 # There doesn't appear to be a way to prevent this compiler from
593 # explicitly linking system object files so we need to strip them
594 # from the output so that they don't get included in the library
595 # dependencies.
596 output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | egrep "\-R|\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
597
598 # Archives containing C++ object files must be created using
599 # "CC -xar", where "CC" is the Sun C++ compiler. This is
600 # necessary to make sure instantiated templates are included
601 # in the archive.
602 old_archive_cmds='$CC -xar -o $oldlib $oldobjs'
603 ;;
604 gcx)
605 # Green Hills C++ Compiler
606 archive_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
607
608 # The C++ compiler must be used to create the archive.
609 old_archive_cmds='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
610 ;;
611 *)
612 # GNU C++ compiler with Solaris linker
613 if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then
614 no_undefined_flag=' ${wl}-z ${wl}defs'
615 if $CC --version | egrep -v '^2\.7' > /dev/null; then
616 archive_cmds='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
617 archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
618 $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
619
620 # Commands to make compiler produce verbose output that lists
621 # what "hidden" libraries, object files and flags are used when
622 # linking a shared library.
623 output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep \"\-L\""
624 else
625 # g++ 2.7 appears to require `-G' NOT `-shared' on this
626 # platform.
627 archive_cmds='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
628 archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
629 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
630
631 # Commands to make compiler produce verbose output that lists
632 # what "hidden" libraries, object files and flags are used when
633 # linking a shared library.
634 output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | egrep \"\-L\""
635 fi
636
637 hardcode_libdir_flag_spec='${wl}-R $wl$libdir'
638 fi
639 ;;
640 esac
641 ;;
642 tandem*)
643 case $cc_basename in
644 NCC)
645 # NonStop-UX NCC 3.20
646 # FIXME: insert proper C++ library support
647 ld_shlibs=no
648 ;;
649 *)
650 # FIXME: insert proper C++ library support
651 ld_shlibs=no
652 ;;
653 esac
654 ;;
655 unixware*)
656 # FIXME: insert proper C++ library support
657 ld_shlibs=no
658 ;;
659 vxworks*)
660 # FIXME: insert proper C++ library support
661 ld_shlibs=no
662 ;;
663 *)
664 # FIXME: insert proper C++ library support
665 ld_shlibs=no
666 ;;
667esac
668
669
670## Compiler Characteristics: PIC flags, static flags, etc
671
672# We don't use cached values here since only the C compiler
673# characteristics should be cached.
674ac_cv_prog_cc_pic=
675ac_cv_prog_cc_shlib=
676ac_cv_prog_cc_wl=
677ac_cv_prog_cc_static=
678ac_cv_prog_cc_no_builtin=
679ac_cv_prog_cc_can_build_shared=$can_build_shared
680
681ac_cv_prog_cc_pic_works=
682ac_cv_prog_cc_static_works=
683
684if test "$with_gcc" = yes; then
685 ac_cv_prog_cc_wl='-Wl,'
686 ac_cv_prog_cc_static='-static'
687
688 case $host_os in
689 aix*)
690 # All AIX code is PIC.
691 if test "$host_cpu" = ia64; then
692 # AIX 5 now supports IA64 processor
693 lt_cv_prog_cc_static='-Bstatic'
694 else
695 lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
696 fi
697 ;;
698 amigaos*)
699 # FIXME: we need at least 68020 code to build shared libraries, but
700 # adding the `-m68020' flag to GCC prevents building anything better,
701 # like `-m68040'.
702 ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
703 ;;
704 beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
705 # PIC is the default for these OSes.
706 ;;
707 cygwin* | mingw* | os2*)
708 # This hack is so that the source file can tell whether it is being
709 # built for inclusion in a dll (and should export symbols for example).
710 ac_cv_prog_cc_pic='-DDLL_EXPORT'
711 ;;
712 darwin* | rhapsody*)
713 # PIC is the default on this platform
714 # Common symbols not allowed in MH_DYLIB files
715 lt_cv_prog_cc_pic='-fno-common'
716 ;;
717 *djgpp*)
718 # DJGPP does not support shared libraries at all
719 ac_cv_prog_cc_pic=
720 ;;
721 sysv4*MP*)
722 if test -d /usr/nec; then
723 ac_cv_prog_cc_pic=-Kconform_pic
724 fi
725 ;;
726 *)
727 ac_cv_prog_cc_pic='-fPIC'
728 ;;
729 esac
730else
731 case $host_os in
732 aix4* | aix5*)
733 # All AIX code is PIC.
734 if test "$host_cpu" = ia64; then
735 # AIX 5 now supports IA64 processor
736 lt_cv_prog_cc_static='-Bstatic'
737 else
738 lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
739 fi
740 ;;
741 chorus*)
742 case $cc_basename in
743 cxch68)
744 # Green Hills C++ Compiler
745 # ac_cv_prog_cc_static="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
746 ;;
747 esac
748 ;;
749 dgux*)
750 case $cc_basename in
751 ec++)
752 ac_cv_prog_cc_pic='-KPIC'
753 ;;
754 ghcx)
755 # Green Hills C++ Compiler
756 ac_cv_prog_cc_pic='-pic'
757 ;;
758 *)
759 ;;
760 esac
761 ;;
762 freebsd*)
763 # FreeBSD uses GNU C++
764 ;;
765 gnu*)
766 ;;
767 hpux9* | hpux10* | hpux11*)
768 case $cc_basename in
769 CC)
770 ac_cv_prog_cc_wl='-Wl,'
771 ac_cv_prog_cc_static="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
772 ac_cv_prog_cc_pic='+Z'
773 ;;
774 aCC)
775 ac_cv_prog_cc_wl='-Wl,'
776 ac_cv_prog_cc_static="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
777 ac_cv_prog_cc_pic='+Z'
778 ;;
779 *)
780 ;;
781 esac
782 ;;
783 irix5* | irix6*)
784 case $cc_basename in
785 CC)
786 ac_cv_prog_cc_wl='-Wl,'
787 ac_cv_prog_cc_static='-non_shared'
788 ac_cv_prog_cc_pic='-KPIC'
789 ;;
790 *)
791 ;;
792 esac
793 ;;
794 linux*)
795 case $cc_basename in
796 KCC)
797 # KAI C++ Compiler
798 ac_cv_prog_cc_wl='--backend -Wl,'
799 ac_cv_prog_cc_pic='-fPIC'
800 ;;
801 cxx)
802 # Compaq C++
803 # Make sure the PIC flag is empty. It appears that all Alpha
804 # Linux and Compaq Tru64 Unix objects are PIC.
805 ac_cv_prog_cc_pic=
806 ac_cv_prog_cc_static='-non_shared'
807 ;;
808 *)
809 ;;
810 esac
811 ;;
812 lynxos*)
813 ;;
814 m88k*)
815 ;;
816 mvs*)
817 case $cc_basename in
818 cxx)
819 ac_cv_prog_cc_pic='-W c,exportall'
820 ;;
821 *)
822 ;;
823 esac
824 ;;
825 netbsd*)
826 ;;
827 osf3* | osf4* | osf5*)
828 case $cc_basename in
829 KCC)
830 ac_cv_prog_cc_wl='--backend -Wl,'
831 ;;
832 RCC)
833 # Rational C++ 2.4.1
834 ac_cv_prog_cc_pic='-pic'
835 ;;
836 cxx)
837 # Digital/Compaq C++
838 ac_cv_prog_cc_wl='-Wl,'
839 # Make sure the PIC flag is empty. It appears that all Alpha
840 # Linux and Compaq Tru64 Unix objects are PIC.
841 ac_cv_prog_cc_pic=
842 ac_cv_prog_cc_static='-non_shared'
843 ;;
844 *)
845 ;;
846 esac
847 ;;
848 psos*)
849 ;;
850 sco*)
851 case $cc_basename in
852 CC)
853 ac_cv_prog_cc_pic='-fPIC'
854 ;;
855 *)
856 ;;
857 esac
858 ;;
859 solaris*)
860 case $cc_basename in
861 CC)
862 # Sun C++ 4.2, 5.x and Centerline C++
863 ac_cv_prog_cc_pic='-KPIC'
864 ac_cv_prog_cc_static='-Bstatic'
865 ac_cv_prog_cc_wl='-Qoption ld '
866 ;;
867 gcx)
868 # Green Hills C++ Compiler
869 ac_cv_prog_cc_pic='-PIC'
870 ;;
871 *)
872 ;;
873 esac
874 ;;
875 sunos4*)
876 case $cc_basename in
877 CC)
878 # Sun C++ 4.x
879 ac_cv_prog_cc_pic='-pic'
880 ac_cv_prog_cc_static='-Bstatic'
881 ;;
882 lcc)
883 # Lucid
884 ac_cv_prog_cc_pic='-pic'
885 ;;
886 *)
887 ;;
888 esac
889 ;;
890 tandem*)
891 case $cc_basename in
892 NCC)
893 # NonStop-UX NCC 3.20
894 ac_cv_prog_cc_pic='-KPIC'
895 ;;
896 *)
897 ;;
898 esac
899 ;;
900 unixware*)
901 ;;
902 vxworks*)
903 ;;
904 *)
905 ac_cv_prog_cc_can_build_shared=no
906 ;;
907 esac
908fi
909
910case "$host_os" in
911 # Platforms which do not suport PIC and -DPIC is meaningless
912 # on them:
913 *djgpp*)
914 ac_cv_prog_cc_pic=
915 ;;
916 *)
917 ac_cv_prog_cc_pic="$ac_cv_prog_cc_pic -DPIC"
918 ;;
919esac
920
921
922# Figure out "hidden" C++ library dependencies from verbose
923# compiler output whening linking a shared library.
924cat > conftest.$ac_ext <<EOF
925class Foo
926{
927public:
928 Foo (void) { a = 0; }
929private:
930 int a;
931};
932EOF
933
934
935if (eval $ac_compile) 2>&5; then
936 # Parse the compiler output and extract the necessary
937 # objects, libraries and library flags.
938
939 # Sentinel used to keep track of whether or not we are before
940 # the conftest object file.
941 pre_test_object_deps_done=no
942
943 for p in `eval $output_verbose_link_cmd`; do
944
945 case $p in
946
947 -L* | -R* | -l*)
948 # Some compilers place space between "-{L,R}" and the path.
949 # Remove the space.
950 if test $p = "-L" \
951 || test $p = "-R"; then
952 prev=$p
953 continue
954 else
955 prev=
956 fi
957
958 if test "$pre_test_object_deps_done" = no; then
959 case $p in
960 -L* | -R*)
961 # Internal compiler library paths should come after those
962 # provided the user. The postdeps already come after the
963 # user supplied libs so there is no need to process them.
964 if test -z "$compiler_lib_search_path"; then
965 compiler_lib_search_path="${prev}${p}"
966 else
967 compiler_lib_search_path="${compiler_lib_search_path} ${prev}${p}"
968 fi
969 ;;
970 # The "-l" case would never come before the object being
971 # linked, so don't bother handling this case.
972 esac
973 else
974 if test -z "$postdeps"; then
975 postdeps="${prev}${p}"
976 else
977 postdeps="${postdeps} ${prev}${p}"
978 fi
979 fi
980 ;;
981
982 *.$objext)
983 # This assumes that the test object file only shows up
984 # once in the compiler output.
985 if test "$p" = "conftest.$objext"; then
986 pre_test_object_deps_done=yes
987 continue
988 fi
989
990 if test "$pre_test_object_deps_done" = no; then
991 if test -z "$predep_objects"; then
992 predep_objects="$p"
993 else
994 predep_objects="$predep_objects $p"
995 fi
996 else
997 if test -z "$postdep_objects"; then
998 postdep_objects="$p"
999 else
1000 postdep_objects="$postdep_objects $p"
1001 fi
1002 fi
1003 ;;
1004
1005 *) ;; # Ignore the rest.
1006
1007 esac
1008 done
1009
1010 # Clean up.
1011 rm -f a.out
1012else
1013 echo "ltcf-cxx.sh: error: problem compiling test program"
1014fi
1015
1016$rm -f confest.$objext
1017
1018case " $postdeps " in
1019*" -lc "*) need_lc=no ;;
1020*) need_lc=yes ;;
1021esac
Note: See TracBrowser for help on using the repository browser.