[Mesa-dev] [PATCH] build: Fix AX_PROG_{CC, CXX}_FOR_BUILD macros

Matt Turner mattst88 at gmail.com
Tue Nov 20 11:07:03 PST 2012


On Tue, Nov 20, 2012 at 7:50 AM, Thierry Reding
<thierry.reding at avionic-design.de> wrote:
> Override the cross_compiling and ac_tool_prefix variables by reassigning
> to them instead of redefining the macros. Redefining them will actually
> cause the variable names to be replaced instead of their content.
>
> Furthermore push the definition of CPPFLAGS before running the checks
> for the build tools to avoid the host CPPFLAGS from leaking into the
> build CPPFLAGS.
>
> While at it drop the redefinition of AC_TRY_COMPILER which hasn't been
> used since autoconf 2.50 and make sure that all definitions are properly
> popped when done (LDFLAGS, ac_cv_prog_CPP, ac_cv_prog_CXXCPP).
>
> Signed-off-by: Thierry Reding <thierry.reding at avionic-design.de>
> ---
>  m4/ax_prog_cc_for_build.m4  | 37 +++++++++++--------------------------
>  m4/ax_prog_cxx_for_build.m4 | 38 ++++++++++++--------------------------
>  2 files changed, 23 insertions(+), 52 deletions(-)
>
> diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4
> index 08095a8..6369809 100644
> --- a/m4/ax_prog_cc_for_build.m4
> +++ b/m4/ax_prog_cc_for_build.m4
> @@ -40,30 +40,9 @@ AC_REQUIRE([AC_PROG_CC])dnl
>  AC_REQUIRE([AC_PROG_CPP])dnl
>  AC_REQUIRE([AC_EXEEXT])dnl
>  AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl
> -dnl
> -pushdef([AC_TRY_COMPILER], [
> -cat > conftest.$ac_ext << EOF
> -#line __oline__ "configure"
> -#include "confdefs.h"
> -[$1]
> -EOF
> -# If we can't run a trivial program, we are probably using a cross
> -compiler.
> -# Fail miserably.
> -if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} && (./conftest;
> -exit) 2>/dev/null; then
> -  [$2]=yes
> -else
> -  echo "configure: failed program was:" >&AC_FD_CC
> -  cat conftest.$ac_ext >&AC_FD_CC
> -  [$2]=no
> -fi
> -[$3]=no
> -rm -fr conftest*])dnl
>
>  dnl Use the standard macros, but make them use other variable names
>  dnl
> -pushdef([cross_compiling], [#])dnl
>  pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
>  pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
>  pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
> @@ -91,16 +70,21 @@ pushdef([ac_cv_host_os], ac_cv_build_os)dnl
>  pushdef([ac_cpp], ac_build_cpp)dnl
>  pushdef([ac_compile], ac_build_compile)dnl
>  pushdef([ac_link], ac_build_link)dnl
> -pushdef([ac_tool_prefix], [#])dnl
> +
> +save_cross_compiling=$cross_compiling
> +save_ac_tool_prefix=$ac_tool_prefix
> +cross_compiling=no
> +ac_tool_prefix=
>
>  AC_PROG_CC
>  AC_PROG_CPP
>  AC_EXEEXT
>
> +ac_tool_prefix=$save_ac_tool_prefix
> +cross_compiling=$save_cross_compiling
> +
>  dnl Restore the old definitions
>  dnl
> -popdef([AC_TRY_COMPILER])dnl
> -popdef([ac_tool_prefix])dnl
>  popdef([ac_link])dnl
>  popdef([ac_compile])dnl
>  popdef([ac_cpp])dnl
> @@ -114,6 +98,7 @@ popdef([host_vendor])dnl
>  popdef([host_cpu])dnl
>  popdef([host_alias])dnl
>  popdef([host])dnl
> +popdef([LDFLAGS])dnl
>  popdef([CPPFLAGS])dnl
>  popdef([CFLAGS])dnl
>  popdef([CPP])dnl
> @@ -123,10 +108,10 @@ popdef([ac_exeext])dnl
>  popdef([ac_cv_objext])dnl
>  popdef([ac_cv_exeext])dnl
>  popdef([ac_cv_prog_cc_g])dnl
> -popdef([ac_cv_prog_cc_works])dnl
>  popdef([ac_cv_prog_cc_cross])dnl
> +popdef([ac_cv_prog_cc_works])dnl
>  popdef([ac_cv_prog_gcc])dnl
> -popdef([cross_compiling])dnl
> +popdef([ac_cv_prog_CPP])dnl
>
>  dnl Finally, set Makefile variables
>  dnl
> diff --git a/m4/ax_prog_cxx_for_build.m4 b/m4/ax_prog_cxx_for_build.m4
> index 4a099f9..ecf8db9 100644
> --- a/m4/ax_prog_cxx_for_build.m4
> +++ b/m4/ax_prog_cxx_for_build.m4
> @@ -38,30 +38,9 @@ AC_REQUIRE([AX_PROG_CC_FOR_BUILD])dnl
>  AC_REQUIRE([AC_PROG_CXX])dnl
>  AC_REQUIRE([AC_PROG_CXXCPP])dnl
>  AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl
> -dnl
> -pushdef([AC_TRY_COMPILER], [
> -cat > conftest.$ac_ext << EOF
> -#line __oline__ "configure"
> -#include "confdefs.h"
> -[$1]
> -EOF
> -# If we can't run a trivial program, we are probably using a cross
> -compiler.
> -# Fail miserably.
> -if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} && (./conftest;
> -exit) 2>/dev/null; then
> -  [$2]=yes
> -else
> -  echo "configure: failed program was:" >&AC_FD_CC
> -  cat conftest.$ac_ext >&AC_FD_CC
> -  [$2]=no
> -fi
> -[$3]=no
> -rm -fr conftest*])dnl
>
>  dnl Use the standard macros, but make them use other variable names
>  dnl
> -pushdef([cross_compiling], [#])dnl
>  pushdef([ac_cv_prog_CXXCPP], ac_cv_build_prog_CXXCPP)dnl
>  pushdef([ac_cv_prog_gxx], ac_cv_build_prog_gxx)dnl
>  pushdef([ac_cv_prog_cxx_works], ac_cv_build_prog_cxx_works)dnl
> @@ -70,6 +49,7 @@ pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl
>  pushdef([CXX], CXX_FOR_BUILD)dnl
>  pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl
>  pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl
> +pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
>  pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl
>  pushdef([host], build)dnl
>  pushdef([host_alias], build_alias)dnl
> @@ -84,15 +64,20 @@ pushdef([ac_cv_host_os], ac_cv_build_os)dnl
>  pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl
>  pushdef([ac_compile], ac_build_compile)dnl
>  pushdef([ac_link], ac_build_link)dnl
> -pushdef([ac_tool_prefix], [#])dnl
> +
> +save_cross_compiling=$cross_compiling
> +save_ac_tool_prefix=$ac_tool_prefix
> +cross_compiling=no
> +ac_tool_prefix=
>
>  AC_PROG_CXX
>  AC_PROG_CXXCPP
>
> +ac_tool_prefix=$save_ac_tool_prefix
> +cross_compiling=$save_cross_compiling
> +
>  dnl Restore the old definitions
>  dnl
> -popdef([AC_TRY_COMPILER])dnl
> -popdef([ac_tool_prefix])dnl
>  popdef([ac_link])dnl
>  popdef([ac_compile])dnl
>  popdef([ac_cxxcpp])dnl
> @@ -107,14 +92,15 @@ popdef([host_cpu])dnl
>  popdef([host_alias])dnl
>  popdef([host])dnl
>  popdef([CXXCPPFLAGS])dnl
> +popdef([CPPFLAGS])dnl
>  popdef([CXXFLAGS])dnl
>  popdef([CXXCPP])dnl
>  popdef([CXX])dnl
>  popdef([ac_cv_prog_cxx_g])dnl
> -popdef([ac_cv_prog_cxx_works])dnl
>  popdef([ac_cv_prog_cxx_cross])dnl
> +popdef([ac_cv_prog_cxx_works])dnl
>  popdef([ac_cv_prog_gxx])dnl
> -popdef([cross_compiling])dnl
> +popdef([ac_cv_prog_CXXCPP])dnl
>
>  dnl Finally, set Makefile variables
>  dnl
> --
> 1.8.0

Are these changes from upstream? I really have concerns about making
non-trivial changes to these files.


More information about the mesa-dev mailing list