From: Ralf Wildenhues Date: Sat, 19 Jun 2010 04:47:42 +0000 (+0200) Subject: Use config.cache variable for PIC flag, to allow override. X-Git-Tag: v2.4~147 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=64377ca9da7e0efec71e73d58b047de24fd27dd1;p=thirdparty%2Flibtool.git Use config.cache variable for PIC flag, to allow override. * libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) : Save result, and allow override, through cache variable lt_cv_prog_compiler_pic{,_CXX,_F77,_FC}. The cache variable needs to contain an eventual -DPIC. * doc/libtool.texi (): Document it. * tests/pic_flag.at (override pic_flag at configure time): New file, new test. * Makefile.am (TESTSUITE_AT): Update. * NEWS, THANKS: Update. Suggestion by Joakim Tjernlund and Paolo Bonzini. Signed-off-by: Ralf Wildenhues --- diff --git a/ChangeLog b/ChangeLog index a5676efc4..feffb964b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2010-06-19 Ralf Wildenhues + + Use config.cache variable for PIC flag, to allow override. + * libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) : + Save result, and allow override, through cache variable + lt_cv_prog_compiler_pic{,_CXX,_F77,_FC}. The cache variable + needs to contain an eventual -DPIC. + * doc/libtool.texi (): Document it. + * tests/pic_flag.at (override pic_flag at configure time): + New file, new test. + * Makefile.am (TESTSUITE_AT): Update. + * NEWS, THANKS: Update. + Suggestion by Joakim Tjernlund and Paolo Bonzini. + 2010-06-16 Ralf Wildenhues Optimize func_ltwrapper_scriptname to assume a cwrapper. diff --git a/Makefile.am b/Makefile.am index d0688eec2..58224286a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -509,6 +509,7 @@ TESTSUITE_AT = tests/testsuite.at \ tests/configure-iface.at \ tests/stresstest.at \ tests/cmdline_wrap.at \ + tests/pic_flag.at \ tests/darwin.at \ tests/deplibs-mingw.at diff --git a/THANKS b/THANKS index 8a866a407..46fd88a47 100644 --- a/THANKS +++ b/THANKS @@ -109,6 +109,7 @@ Jeff Squyres jsquyres@lam-mpi.org Jeremy C. Reed reed@reedmedia.net Jim Meyering jim@meyering.net + Joakim Tjernlund joakim.tjernlund@transmode.se Joel N. Weber II devnull@gnu.org Joerg Sonnenberger joerg@netbsd.org John Bowler jbowler@acm.org diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4 index a91bd6157..b93dd0cf9 100644 --- a/libltdl/m4/libtool.m4 +++ b/libltdl/m4/libtool.m4 @@ -3587,7 +3587,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= -AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -4185,9 +4184,11 @@ case $host_os in _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. @@ -4206,6 +4207,8 @@ fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # diff --git a/tests/pic_flag.at b/tests/pic_flag.at new file mode 100644 index 000000000..a729d16e2 --- /dev/null +++ b/tests/pic_flag.at @@ -0,0 +1,51 @@ +# pic_flag.at -- override the pic_flag at configure time -*- Autotest -*- + +# Copyright (C) 2010 Free Software Foundation, Inc. +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +#### + +AT_SETUP([override pic_flag at configure time]) + +# Just try to configure the Libtool package with -fpic if we can compile +# with it, for C and C++. + +AT_DATA([foo.c], +[[int data = 42; +int func(void) { return data; } +]]) + +cp foo.c foo.cpp +C_pic_flag='-fpic -DPIC' +AT_CHECK([$CC $CPPFLAGS $CFLAGS $C_pic_flag -c foo.c || exit 77], + [], [ignore], [ignore]) + +CXX_pic_flag='-fpic -DPIC' +if $CXX $CPPFLAGS $CXXFLAGS $CXX_pic_flag -c foo.cpp; then :; else + CXX_pic_flag= +fi + +AT_CHECK(["$abs_top_srcdir"/configure lt_cv_prog_compiler_pic="$C_pic_flag" ]dnl + [lt_cv_prog_compiler_pic_CXX="$CXX_pic_flag"], [], [ignore], [ignore]) +: ${MAKE=make} +AT_CHECK([$MAKE], [], [stdout], [ignore]) +AT_CHECK([if ./libtool --features | grep 'enable shared libraries'; then ]dnl + [ grep -e -fpic stdout; else exit 77; fi], [], [ignore], [ignore]) + +AT_CLEANUP