libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: overridable pic_flag


From: Ralf Wildenhues
Subject: Re: overridable pic_flag
Date: Tue, 15 Jun 2010 19:45:00 +0200
User-agent: Mutt/1.5.20 (2010-04-22)

Ping!  I would at least like a comment upon this, why it would be too
dangerous, and all that.
<http://thread.gmane.org/gmane.comp.sysutils.automake.general/11229/focus=9626>

(No, this patch is unrelated to the -flto patches I just pinged.)

Thank you,
Ralf

* Ralf Wildenhues wrote on Sat, Jan 09, 2010 at 08:18:53PM CET:
> Proposed patch.  Still needs documentation in libtool.texi (where? we
> don't have a section about Libtool-used configure cache variables).
> 
> The semantics are that you also need to store -DPIC in the variable.
> I'm not sure whether that is the right thing to do.  Comments?


>     Use config.cache variable for PIC flag, to allow override.
>     
>     * libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) <lt_prog_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.
> 
> diff --git a/Makefile.am b/Makefile.am
> index 195da0a..31b4275 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -502,6 +502,7 @@ TESTSUITE_AT      = tests/testsuite.at \
>                 tests/configure-iface.at \
>                 tests/stresstest.at \
>                 tests/cmdline_wrap.at \
> +               tests/pic_flag.at \
>                 tests/darwin.at
>  
>  EXTRA_DIST     += $(srcdir)/$(TESTSUITE) $(TESTSUITE_AT) 
> $(srcdir)/tests/package.m4
> diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4
> index 2e48b47..9f20218 100644
> --- a/libltdl/m4/libtool.m4
> +++ b/libltdl/m4/libtool.m4
> @@ -3567,7 +3567,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
> @@ -4165,9 +4164,11 @@ case $host_os in
>      _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, 
> $1)@&address@hidden([$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.
> @@ -4186,6 +4187,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 0000000..5282632
> --- /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
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]