dnl Available from the GNU Autoconf Macro Archive at: dnl https://www.gnu.org/software/ac-archive/htmldoc/ac_prog_cc_for_build.html dnl dnl All content of this archive is free software; dnl you can redistribute it and/or modify it under the terms of the GNU dnl General Public License as published by the Free Software Foundation; dnl either version 2, or (at your option) any later version. dnl dnl As a special exception, the respective Autoconf Macro's copyright dnl owner gives unlimited permission to copy, distribute and modify the dnl configure scripts that are the output of Autoconf when processing the dnl Macro. You need not follow the terms of the GNU General Public License dnl when using or distributing such scripts, even though portions of the dnl text of the Macro appear in them. The GNU General Public License (GPL) dnl does govern all other use of the material that constitutes the dnl Autoconf Macro. dnl dnl This special exception to the GPL applies to versions of the Autoconf dnl Macro released by the GNU Autoconf Macro Archive. When you make and dnl distribute a modified version of the Autoconf Macro, you may extend dnl this special exception to the GPL to apply to your modified version as dnl well. dnl Synopsis AC_PROG_CC_FOR_BUILD dnl dnl This macro searches for a C compiler that generates native dnl executables, that is a C compiler that surely is not a cross-compiler. dnl This can be useful if you have to generate source code at compile-time dnl like for example GCC does. dnl dnl The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything dnl needed to compile or link (CC_FOR_BUILD) and preprocess dnl (CPP_FOR_BUILD). The value of these variables can be overridden by dnl the user by specifying a compiler with an environment variable (like dnl you do for standard CC). dnl dnl It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and dnl object file extensions for the build platform, and GCC_FOR_BUILD dnl to `yes' if the compiler we found is GCC. All these variables but dnl GCC_FOR_BUILD are substituted in the Makefile. dnl dnl Author Paolo Bonzini dnl AC_DEFUN([AC_PROG_CC_FOR_BUILD], [dnl 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 pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl pushdef([ac_cv_objext], ac_cv_build_objext)dnl pushdef([ac_exeext], ac_build_exeext)dnl pushdef([ac_objext], ac_build_objext)dnl pushdef([CC], CC_FOR_BUILD)dnl pushdef([CPP], CPP_FOR_BUILD)dnl pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl pushdef([host], build)dnl pushdef([host_alias], build_alias)dnl pushdef([host_cpu], build_cpu)dnl pushdef([host_vendor], build_vendor)dnl pushdef([host_os], build_os)dnl pushdef([ac_cv_host], ac_cv_build)dnl pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl 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 dnl Defeat the anti-duplication mechanism dnl dnl undefine([AC_PROVIDE_AC_PROG_CPP])dnl dnl undefine([AC_PROVIDE_AC_PROG_C])dnl dnl undefine([AC_PROVIDE_AC_EXEEXT])dnl AC_PROG_CC AC_PROG_CPP AC_EXEEXT dnl Restore the old definitions dnl popdef([AC_TRY_COMPILER])dnl popdef([ac_link])dnl popdef([ac_compile])dnl popdef([ac_cpp])dnl popdef([ac_cv_host_os])dnl popdef([ac_cv_host_vendor])dnl popdef([ac_cv_host_cpu])dnl popdef([ac_cv_host_alias])dnl popdef([ac_cv_host])dnl popdef([host_os])dnl popdef([host_vendor])dnl popdef([host_cpu])dnl popdef([host_alias])dnl popdef([host])dnl popdef([CPPFLAGS])dnl popdef([CFLAGS])dnl popdef([CPP])dnl popdef([CC])dnl popdef([ac_objext])dnl 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_gcc])dnl popdef([ac_cv_prog_CPP])dnl popdef([cross_compiling])dnl dnl Finally, set Makefile variables dnl BUILD_EXEEXT=$ac_build_exeext BUILD_OBJEXT=$ac_build_objext AC_SUBST(BUILD_EXEEXT)dnl AC_SUBST(BUILD_OBJEXT)dnl AC_SUBST([CFLAGS_FOR_BUILD])dnl AC_SUBST([CPPFLAGS_FOR_BUILD])dnl ])