diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 16:50:48 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 16:50:48 +0000 |
commit | d7bccc73c61de8be73c71c4447b9a007ffb80834 (patch) | |
tree | 770f0b529992a4ae85fcbffcdf02175dda2d7c76 /buildlib/tools.m4 | |
parent | ac96654175265aacb34f3660d35667d26feba138 (diff) |
Autoconf stuff
Author: jgg
Date: 1998-07-13 05:05:51 GMT
Autoconf stuff
Diffstat (limited to 'buildlib/tools.m4')
-rw-r--r-- | buildlib/tools.m4 | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/buildlib/tools.m4 b/buildlib/tools.m4 new file mode 100644 index 000000000..69a6063c1 --- /dev/null +++ b/buildlib/tools.m4 @@ -0,0 +1,231 @@ +# tl_CHECK_TOOL_PREFIX will work _BEFORE_ AC_CANONICAL_HOST, etc., has been +# called. It should be called again after these have been called. +# +# Basically we want to check if the host alias specified by the user is +# different from the build alias. The rules work like this:- +# +# If host is not specified, it defaults to NONOPT +# If build is not specified, it defaults to NONOPT +# If nonopt is not specified, we guess all other values + +dnl Replace AC_CHECK_TOOL_PREFIX +undefine([AC_CHECK_TOOL_PREFIX]) +define([AC_CHECK_TOOL_PREFIX], [tl_CHECK_TOOL_PREFIX]) + +AC_DEFUN(tl_CHECK_TOOL_PREFIX, +[AC_PROVIDE([AC_CHECK_TOOL_PREFIX]) +AC_BEFORE([AC_CANONICAL_HOST]) +AC_BEFORE([AC_CANONICAL_BUILD]) +dnl Quick check +if test "$host_alias" = ""; then + if test $host = NONE; then + thost=$nonopt + else + thost=$host + fi + if test $thost != $build -a $thost != NONE; then + ac_tool_prefix=${thost}- + ac_tool_dir=${thost} + else + ac_tool_prefix= + ac_tool_dir= + fi +else + if test $host != $build; then + ac_tool_prefix=${host_alias}- + ac_tool_dir=${host_alias} + else + ac_tool_prefix= + ac_tool_dir= + fi +fi +]) + +dnl replacement for AC_CHECK_TOOL +undefine([AC_CHECK_TOOL]) +define([AC_CHECK_TOOL], [tl_CHECK_TOOL($1, $2, $3, $4)]) + +dnl tl_CHECK_TOOL - AC_CHECK_TOOL, with a couple of extra checks +dnl tl_CHECK_TOOL(VARIABLE, PROG-TO-CHECK-FOR[, VALUE-IF-NOT-FOUND [, PATH +dnl [, REJECT]]) +AC_DEFUN(tl_CHECK_TOOL, +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) +AC_CHECK_PROG($1, ${ac_tool_prefix}$2, ${ac_tool_prefix}$2, + ifelse([$3], , [$2], ), $4, $5) +if test -z "$ac_cv_prog_$1_dir";then ac_cv_prog_$1_dir=""; fi +if test "$ac_tool_dir" != ""; then + if test -z "$ac_cv_prog_$1" -a "$5" != "/usr/${ac_tool_dir}/bin/$2" -a \ + "$5" != "/usr/local/${ac_tool_dir}/bin/$2"; then + if test -f /usr/${ac_tool_dir}/bin/$2; then $1="/usr/${ac_tool_dir}/bin/$2"; ac_cv_prog_$1_dir=/usr/${ac_tool_dir} + elif test -f /usr/local/${ac_tool_dir}/bin/$2; then $1="/usr/local/${ac_tool_dir}/bin/$2"; ac_cv_prog_$1_dir=/usr/local/${ac_tool_dir} + fi + fi +fi +ifelse([$3], , , [ +if test -z "$ac_cv_prog_$1"; then +if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG($1, $2, $2, $3, $4, $5) +else + $1="$3" +fi +fi]) +]) + +dnl tl_CHECK_TOOLS - +dnl do a tl_CHECK_TOOL for multiple tools (like AC_CHECK_PROGS) +dnl tl_CHECK_TOOLS(VARIABLE, PROGS-TO-CHECK-FOR [, VALUE-IF-NOT-FOUND +dnl [, PATH]]) +AC_DEFUN(tl_CHECK_TOOLS, +[for ac_tool in $2 +do +tl_CHECK_TOOL($1, [$]ac_tool, [$]ac_tool, , $4) +test -n "[$]$1" && break +done +ifelse([$3], , , [test -n "[$]$1" || $1="$3" +])]) + +dnl replace AC_PROG_CC and AC_PROG_CXX +undefine([AC_PROG_CC]) +define([AC_PROG_CC], [tl_PROG_CC]) +undefine([AC_PROG_CXX]) +define([AC_PROG_CXX], [tl_PROG_CXX]) + +dnl tl_PROG_CC, tl_PROG_CXX - same as old AC_PROG_CC and AC_PROG_CXX, but +dnl use AC_CHECK_TOOL/tl_CHECK_TOOLS instead of AC_CHECK_PROG, etc. +AC_DEFUN(tl_PROG_CC, +[AC_BEFORE([$0], [AC_PROG_CPP])dnl +AC_PROVIDE([AC_PROG_CC])dnl +tl_CHECK_TOOL(CC, gcc, gcc) +if test -z "$CC"; then + AC_CHECK_TOOL(CC, cc, cc, , , /usr/ucb/cc) + test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) +fi +if test -n "$ac_tool_prefix" -a "`echo $CC | grep '$ac_tool_prefix'`" = "" \ + -a "`echo $CC | grep -- '-b'`" = ""; then + if test -z "$ac_cv_prog_CC_dir" && $CC -v 2>&1 | grep -q gcc; then + AC_CACHE_CHECK([if $CC -b${ac_tool_dir} works], tl_cv_prog_cc_bhost,[ + old_cc="${CC}" + CC="${CC} -b${ac_tool_dir}" + AC_LANG_SAVE + AC_LANG_C + AC_TRY_COMPILER([main(){return(0);}], tl_cv_prog_cc_bhost, ac_cv_prog_cc_cross) + AC_LANG_RESTORE]) + if test $tl_cv_prog_cc_bhost = "yes"; then + ac_cv_prog_cc_works=yes + cctest=yes + else + CC="${old_cc}" + fi + fi +fi + +if test "$cctest" != "yes"; then + tl_PROG_CC_WORKS +fi +AC_PROG_CC_GNU + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +dnl Check whether -g works, even if CFLAGS is set, in case the package +dnl plays around with CFLAGS (such as to build both debugging and +dnl normal versions of a library), tasteless as that idea is. + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + AC_PROG_CC_G + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + elif test $ac_cv_prog_cc_g = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-O2" + fi +else + GCC= + test "${CFLAGS+set}" = set || CFLAGS="-g" +fi +]) + +AC_DEFUN(tl_PROG_CXX, +[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl +AC_PROVIDE([AC_PROG_CXX])dnl +tl_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc) +if test -n "$CXX"; then + if test -n "$ac_tool_prefix" -a "`echo $CXX | grep '$ac_tool_prefix'`" = "" \ + -a "`echo $CXX | grep -- '-b'`" = ""; then + if test -z "$ac_cv_prog_CXX_dir" && $CXX -v 2>&1 | grep -q gcc; then + AC_CACHE_CHECK([if $CXX -b${ac_tool_dir} works], tl_cv_prog_cxx_bhost,[ + old_cxx="${CXX}" + CXX="${CXX} -b${ac_tool_dir}" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILER([main(){return(0);}], tl_cv_prog_cxx_bhost, ac_cv_prog_cxx_cross) + AC_LANG_RESTORE]) + if test $tl_cv_prog_cxx_bhost = "yes"; then + ac_cv_prog_cxx_works=yes + cxxtest=yes + else + CXX="${old_cxx}" + fi + fi + fi + + if test "$cxxtest" != "yes"; then + tl_PROG_CXX_WORKS + fi + AC_PROG_CXX_GNU + + if test $ac_cv_prog_gxx = yes; then + GXX=yes +dnl Check whether -g works, even if CXXFLAGS is set, in case the package +dnl plays around with CXXFLAGS (such as to build both debugging and +dnl normal versions of a library), tasteless as that idea is. + ac_test_CXXFLAGS="${CXXFLAGS+set}" + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS= + AC_PROG_CXX_G + if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS="$ac_save_CXXFLAGS" + elif test $ac_cv_prog_cxx_g = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-O2" + fi + else + GXX= + test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" + fi +fi +]) + +AC_DEFUN(tl_PROG_CC_WORKS, +[AC_PROVIDE(AC_PROG_CC_WORKS) +AC_CACHE_CHECK([whether the C compiler ($CC $CFLAGS $LDFLAGS) works], + ac_cv_prog_cc_works, [ +AC_LANG_SAVE +AC_LANG_C +AC_TRY_COMPILER([main(){return(0);}], ac_cv_prog_cc_works, ac_cv_prog_cc_cross) +AC_LANG_RESTORE +if test $ac_cv_prog_cc_works = no; then + AC_MSG_ERROR([installation or configuration problem: C compiler cannot create executables.]) +fi]) +AC_MSG_CHECKING([whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler]) +AC_MSG_RESULT($ac_cv_prog_cc_cross) +cross_compiling=$ac_cv_prog_cc_cross +]) + +AC_DEFUN(tl_PROG_CXX_WORKS, +[AC_PROVIDE(AC_PROG_CXX_WORKS) +AC_CACHE_CHECK([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works], + ac_cv_prog_cxx_works, [ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_TRY_COMPILER([main(){return(0);}], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross) +AC_LANG_RESTORE +if test $ac_cv_prog_cxx_works = no; then + AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.]) +fi]) +AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler]) +AC_MSG_RESULT($ac_cv_prog_cxx_cross) +cross_compiling=$ac_cv_prog_cxx_cross +]) |