libtool: more carefully avoid automatic -Cstd -Crun on Sun Pro CXX.

* m4/libtool.m4 (_LT_FUNC_SUNCC_CSTD_ABI): New function factored out
of repeated code.  Take note of other known -Cstd incompatible
compiler flags.
(_LT_SYS_HIDDEN_LIBDEPS): Use it to determine whether -Cstd -Crun
can be safely added to postdeps with Sun Pro CXX.
* NEWS: Update.
* NO-THANKS: Add Marc Glisse.
Reported by Marc Glisse

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
This commit is contained in:
Gary V. Vaughan 2014-12-12 13:33:40 +00:00
parent 4fede0bc49
commit b49ab52cb3
3 changed files with 37 additions and 26 deletions

8
NEWS
View File

@ -27,6 +27,14 @@ NEWS - list of user-visible changes between releases of GNU Libtool
ia64-hp-hpux*, because the default system runtime loader path does ia64-hp-hpux*, because the default system runtime loader path does
not contain them. not contain them.
- Previously, when using Sun C++ on Solaris or Linux, `-Cstd -Crun`
flags were added to $postdeps unless CXX or CXXFLAGS contained
`-library=stlport4`. Newer releases have added other compiler flags
that are also incompatible with `-Cstd -Crun`, so now we don't add
them if any of `-std=c++[0-9][0-9]`, `-library=stdcxx4` or
`-compat=g` were found in CXX or CXXFLAGS when the Sun C++ compiler
is detected.
* Noteworthy changes in release 2.4.4 (2014-11-29) [stable] * Noteworthy changes in release 2.4.4 (2014-11-29) [stable]

View File

@ -100,6 +100,7 @@ Lawrence Velázquez larryv@macports.org
Lionel Landwerlin llandwerlin@gmail.com Lionel Landwerlin llandwerlin@gmail.com
Maciej Helminiak dion2@wp.pl Maciej Helminiak dion2@wp.pl
Mahesh Narayanamurthi mahesh.mach@gmail.com Mahesh Narayanamurthi mahesh.mach@gmail.com
Marc Glisse marc.glisse@inria.fr
Marcel Loose loose@astron.nl Marcel Loose loose@astron.nl
Markus Duft markus.duft@salomon.at Markus Duft markus.duft@salomon.at
Martin Doucha doucha@integri.cz Martin Doucha doucha@integri.cz

54
m4/libtool.m4 vendored
View File

@ -7422,6 +7422,28 @@ func_stripname_cnf ()
} # func_stripname_cnf } # func_stripname_cnf
])# _LT_FUNC_STRIPNAME_CNF ])# _LT_FUNC_STRIPNAME_CNF
# _LT_FUNC_SUNCC_CSTD_ABI
# -----------------------
# func_suncc_cstd_abi
# Several compiler flags select an ABI that is
# incompatible with the Cstd library. Avoid specifying
# it if any are in CXXFLAGS.
m4_defun([_LT_FUNC_SUNCC_CSTD_ABI], [[
func_suncc_cstd_abi ()
{
case " $CXX $CXXFLAGS " in
*" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
suncc_use_cstd_abi=no
;;
*)
suncc_use_cstd_abi=yes
;;
esac
} # func_suncc_cstd_abi
]])# _LT_FUNC_SUNCC_CSTD_ABI
# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
# --------------------------------- # ---------------------------------
# Figure out "hidden" library dependencies from verbose # Figure out "hidden" library dependencies from verbose
@ -7430,6 +7452,7 @@ func_stripname_cnf ()
# objects, libraries and library flags. # objects, libraries and library flags.
m4_defun([_LT_SYS_HIDDEN_LIBDEPS], m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
[m4_require([_LT_FILEUTILS_DEFAULTS])dnl [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_FUNC_SUNCC_CSTD_ABI])dnl
AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
# Dependencies to place before and after the object being linked: # Dependencies to place before and after the object being linked:
_LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(predep_objects, $1)=
@ -7603,20 +7626,10 @@ interix[[3-9]]*)
linux*) linux*)
case `$CC -V 2>&1 | sed 5q` in case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*) *Sun\ C*) # Sun C++ 5.9
# Sun C++ 5.9 func_suncc_cstd_abi
# The more standards-conforming stlport4 library is if test no != "$suncc_use_cstd_abi"; then
# incompatible with the Cstd library. Avoid specifying
# it if it's in CXXFLAGS. Ignore libCrun as
# -library=stlport4 depends on it.
case " $CXX $CXXFLAGS " in
*" -library=stlport4 "*)
solaris_use_stlport4=yes
;;
esac
if test yes != "$solaris_use_stlport4"; then
_LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
fi fi
;; ;;
@ -7626,20 +7639,9 @@ linux*)
solaris*) solaris*)
case $cc_basename in case $cc_basename in
CC* | sunCC*) CC* | sunCC*)
# The more standards-conforming stlport4 library is func_suncc_cstd_abi
# incompatible with the Cstd library. Avoid specifying
# it if it's in CXXFLAGS. Ignore libCrun as
# -library=stlport4 depends on it.
case " $CXX $CXXFLAGS " in
*" -library=stlport4 "*)
solaris_use_stlport4=yes
;;
esac
# Adding this requires a known-good setup of shared libraries for if test no != "$suncc_use_cstd_abi"; then
# Sun compiler versions before 5.6, else PIC objects from an old
# archive will be linked into the output, leading to subtle bugs.
if test yes != "$solaris_use_stlport4"; then
_LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
fi fi
;; ;;