You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
306 lines
7.8 KiB
306 lines
7.8 KiB
dnl Copyright (C) 1993-2008 Free Software Foundation, Inc.
|
|
dnl This file is free software, distributed under the terms of the GNU
|
|
dnl General Public License. As a special exception to the GNU General
|
|
dnl Public License, this file may be distributed as part of a program
|
|
dnl that contains a configuration script generated by Autoconf, under
|
|
dnl the same distribution terms as the rest of that program.
|
|
|
|
dnl From Bruno Haible, Marcus Daniels, Sam Steingold.
|
|
|
|
AC_PREREQ(2.13)
|
|
|
|
dnl without AC_MSG_...: with AC_MSG_... and caching:
|
|
dnl AC_TRY_CPP CL_CPP_CHECK
|
|
dnl AC_TRY_COMPILE CL_COMPILE_CHECK
|
|
dnl AC_TRY_LINK CL_LINK_CHECK
|
|
dnl AC_TRY_RUN CL_RUN_CHECK - would require cross-compiling support
|
|
dnl Usage:
|
|
dnl AC_TRY_CPP(INCLUDES,
|
|
dnl ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
dnl CL_CPP_CHECK(ECHO-TEXT, CACHE-ID,
|
|
dnl INCLUDES,
|
|
dnl ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
dnl AC_TRY_xxx(INCLUDES, FUNCTION-BODY,
|
|
dnl ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
dnl CL_xxx_CHECK(ECHO-TEXT, CACHE-ID,
|
|
dnl INCLUDES, FUNCTION-BODY,
|
|
dnl ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
|
|
AC_DEFUN([CL_CPP_CHECK],
|
|
[AC_MSG_CHECKING(for $1)
|
|
AC_CACHE_VAL($2,[
|
|
AC_TRY_CPP([$3], $2=yes, $2=no)
|
|
])
|
|
AC_MSG_RESULT([$]$2)
|
|
if test [$]$2 = yes; then
|
|
ifelse([$4], , :, [$4])
|
|
ifelse([$5], , , [else
|
|
$5
|
|
])dnl
|
|
fi
|
|
])
|
|
|
|
AC_DEFUN([CL_COMPILE_CHECK],
|
|
[AC_MSG_CHECKING(for $1)
|
|
AC_CACHE_VAL($2,[
|
|
AC_TRY_COMPILE([$3],[$4], $2=yes, $2=no)
|
|
])
|
|
AC_MSG_RESULT([$]$2)
|
|
if test [$]$2 = yes; then
|
|
ifelse([$5], , :, [$5])
|
|
ifelse([$6], , , [else
|
|
$6
|
|
])dnl
|
|
fi
|
|
])
|
|
|
|
AC_DEFUN([CL_LINK_CHECK],
|
|
[AC_MSG_CHECKING(for $1)
|
|
AC_CACHE_VAL($2,[
|
|
AC_TRY_LINK([$3],[$4], $2=yes, $2=no)
|
|
])
|
|
AC_MSG_RESULT([$]$2)
|
|
if test [$]$2 = yes; then
|
|
ifelse([$5], , :, [$5])
|
|
ifelse([$6], , , [else
|
|
$6
|
|
])dnl
|
|
fi
|
|
])
|
|
|
|
dnl CL_SILENT(ACTION)
|
|
dnl performs ACTION, with AC_MSG_CHECKING and AC_MSG_RESULT being defined away.
|
|
AC_DEFUN([CL_SILENT],
|
|
[pushdef([AC_MSG_CHECKING],[:])dnl
|
|
pushdef([AC_CHECKING],[:])dnl
|
|
pushdef([AC_MSG_RESULT],[:])dnl
|
|
$1[]dnl
|
|
popdef([AC_MSG_RESULT])dnl
|
|
popdef([AC_CHECKING])dnl
|
|
popdef([AC_MSG_CHECKING])dnl
|
|
])
|
|
|
|
dnl Expands to the "extern ..." prefix used for system declarations.
|
|
dnl AC_LANG_EXTERN()
|
|
AC_DEFUN([AC_LANG_EXTERN],
|
|
[extern
|
|
#ifdef __cplusplus
|
|
"C"
|
|
#endif
|
|
])
|
|
|
|
AC_DEFUN([CL_CC_WORKS],
|
|
[AC_CACHE_CHECK(whether CC works at all, cl_cv_prog_cc_works, [
|
|
AC_LANG_SAVE()
|
|
AC_LANG_C()
|
|
AC_TRY_RUN([
|
|
#include <stdlib.h>
|
|
int main() { exit(0); }
|
|
],
|
|
cl_cv_prog_cc_works=yes, cl_cv_prog_cc_works=no,
|
|
AC_TRY_LINK([], [], cl_cv_prog_cc_works=yes, cl_cv_prog_cc_works=no))
|
|
AC_LANG_RESTORE()
|
|
])
|
|
case "$cl_cv_prog_cc_works" in
|
|
*no) echo "Installation or configuration problem: C compiler cannot create executables."; exit 1;;
|
|
*yes) ;;
|
|
esac
|
|
])
|
|
|
|
AC_DEFUN([CL_CONFIG_SUBDIRS],
|
|
[dnl No AC_CONFIG_AUX_DIR_DEFAULT, so we don't need install.sh.
|
|
AC_PROVIDE([AC_CONFIG_AUX_DIR_DEFAULT])
|
|
AC_CONFIG_SUBDIRS([$1])dnl
|
|
])
|
|
|
|
AC_DEFUN([CL_CANONICAL_HOST],
|
|
[AC_REQUIRE([AC_PROG_CC]) dnl Actually: AC_REQUIRE([CL_CC_WORKS])
|
|
dnl Set ac_aux_dir before the cache check, because AM_PROG_LIBTOOL needs it.
|
|
ac_aux_dir=${srcdir}/$1
|
|
dnl A substitute for AC_CONFIG_AUX_DIR_DEFAULT, so we don't need install.sh.
|
|
ac_config_guess="$SHELL $ac_aux_dir/config.guess"
|
|
ac_config_sub="$SHELL $ac_aux_dir/config.sub"
|
|
dnl We have defined $ac_aux_dir.
|
|
AC_PROVIDE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
|
|
dnl In autoconf-2.52, a single AC_CANONICAL_HOST has the effect of inserting
|
|
dnl the code of AC_CANONICAL_BUILD *before* CL_CANONICAL_HOST, i.e. before
|
|
dnl ac_aux_dir has been set. To work around this, we list AC_CANONICAL_BUILD
|
|
dnl explicitly.
|
|
AC_CANONICAL_BUILD
|
|
AC_CANONICAL_HOST
|
|
])
|
|
|
|
AC_DEFUN([CL_CANONICAL_HOST_CPU],
|
|
[AC_REQUIRE([CL_CANONICAL_HOST])AC_REQUIRE([AC_PROG_CC])
|
|
case "$host_cpu" in
|
|
changequote(,)dnl
|
|
i[4567]86 )
|
|
host_cpu=i386
|
|
;;
|
|
alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
|
|
host_cpu=alpha
|
|
;;
|
|
hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
|
|
host_cpu=hppa
|
|
;;
|
|
powerpc )
|
|
host_cpu=rs6000
|
|
;;
|
|
c1 | c2 | c32 | c34 | c38 | c4 )
|
|
host_cpu=convex
|
|
;;
|
|
arm* )
|
|
host_cpu=arm
|
|
;;
|
|
changequote([,])dnl
|
|
mips )
|
|
AC_CACHE_CHECK([for 64-bit MIPS], cl_cv_host_mips64, [
|
|
AC_EGREP_CPP(yes,
|
|
[#if defined(_MIPS_SZLONG)
|
|
#if (_MIPS_SZLONG == 64)
|
|
/* We should also check for (_MIPS_SZPTR == 64), but gcc keeps this at 32. */
|
|
yes
|
|
#endif
|
|
#endif
|
|
], cl_cv_host_mips64=yes, cl_cv_host_mips64=no)
|
|
])
|
|
if test $cl_cv_host_mips64 = yes; then
|
|
host_cpu=mips64
|
|
fi
|
|
;;
|
|
dnl UltraSPARCs running Linux have `uname -m` = "sparc64", but the C compiler
|
|
dnl still generates 32-bit code.
|
|
sparc | sparc64 )
|
|
AC_CACHE_CHECK([for 64-bit SPARC], cl_cv_host_sparc64, [
|
|
AC_EGREP_CPP(yes,
|
|
[#if defined(__sparcv9) || defined(__arch64__)
|
|
yes
|
|
#endif
|
|
], cl_cv_host_sparc64=yes, cl_cv_host_sparc64=no)
|
|
])
|
|
if test $cl_cv_host_sparc64 = yes; then
|
|
host_cpu=sparc64
|
|
else
|
|
host_cpu=sparc
|
|
fi
|
|
;;
|
|
dnl MacOS X 10.5 machines on x86_64 platforms have 'uname -m' = "i386" even
|
|
dnl if 64-bit programs are fully supported.
|
|
dnl AMD64 running Linux have 'uname -m' = "x86_64" even if userland is purely
|
|
dnl 32-bit.
|
|
i386 | x86_64 )
|
|
AC_CACHE_CHECK([for 64-bit userland on x86-64], cl_cv_host_x86_64, [
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
[[#if !defined __x86_64__
|
|
# error __x86_64__ not defined
|
|
#endif
|
|
]])
|
|
], [cl_cv_host_x86_64=yes], [cl_cv_host_x86_64=no])
|
|
])
|
|
if test $cl_cv_host_x86_64 = yes; then
|
|
host_cpu=x86_64
|
|
else
|
|
host_cpu=i386
|
|
fi
|
|
;;
|
|
dnl PowerPC64 is another case where 'uname -m' and userland may disagree.
|
|
powerpc64 )
|
|
AC_CACHE_CHECK([for 64-bit userland on PowerPC64], cl_cv_host_powerpc64, [
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
[[#if !defined __powerpc64__
|
|
# error __powerpc64__ not defined
|
|
#endif
|
|
]])
|
|
], [cl_cv_host_powerpc64=yes], [cl_cv_host_powerpc64=no])
|
|
])
|
|
if test $cl_cv_host_powerpc64 = yes; then
|
|
host_cpu=powerpc64
|
|
else
|
|
host_cpu=rs6000
|
|
fi
|
|
;;
|
|
esac
|
|
dnl was AC_DEFINE_UNQUOTED(__${host_cpu}__) but KAI C++ 3.2d doesn't like this
|
|
cat >> confdefs.h <<EOF
|
|
#ifndef __${host_cpu}__
|
|
#define __${host_cpu}__ 1
|
|
#endif
|
|
EOF
|
|
])
|
|
|
|
AC_DEFUN([CL_CANONICAL_HOST_CPU_FOR_FFCALL],
|
|
[AC_REQUIRE([CL_CANONICAL_HOST])AC_REQUIRE([AC_PROG_CC])
|
|
case "$host_cpu" in
|
|
changequote(,)dnl
|
|
i[4567]86 )
|
|
host_cpu=i386
|
|
;;
|
|
alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
|
|
host_cpu=alpha
|
|
;;
|
|
hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
|
|
host_cpu=hppa
|
|
;;
|
|
powerpc )
|
|
host_cpu=rs6000
|
|
;;
|
|
c1 | c2 | c32 | c34 | c38 | c4 )
|
|
host_cpu=convex
|
|
;;
|
|
arm* )
|
|
host_cpu=arm
|
|
;;
|
|
changequote([,])dnl
|
|
mips )
|
|
AC_CACHE_CHECK([for 64-bit MIPS], cl_cv_host_mips64, [
|
|
AC_EGREP_CPP(yes,
|
|
[#if defined(_MIPS_SZLONG)
|
|
#if (_MIPS_SZLONG == 64)
|
|
/* We should also check for (_MIPS_SZPTR == 64), but gcc keeps this at 32. */
|
|
yes
|
|
#endif
|
|
#endif
|
|
], cl_cv_host_mips64=yes, cl_cv_host_mips64=no)
|
|
])
|
|
if test $cl_cv_host_mips64 = yes; then
|
|
host_cpu=mips64
|
|
else
|
|
AC_CACHE_CHECK([for MIPS with n32 ABI], cl_cv_host_mipsn32, [
|
|
dnl Strictly speaking, the MIPS ABI (-32 or -n32) is independent from the CPU
|
|
dnl identification (-mips[12] or -mips[34]). But -n32 is commonly used together
|
|
dnl with -mips3, and it's easier to test the CPU identification.
|
|
AC_EGREP_CPP(yes,
|
|
[#if __mips >= 3
|
|
yes
|
|
#endif
|
|
], cl_cv_host_mipsn32=yes, cl_cv_host_mipsn32=no)
|
|
])
|
|
if test $cl_cv_host_mipsn32 = yes; then
|
|
host_cpu=mipsn32
|
|
fi
|
|
fi
|
|
;;
|
|
dnl UltraSPARCs running Linux have `uname -m` = "sparc64", but the C compiler
|
|
dnl still generates 32-bit code.
|
|
sparc | sparc64 )
|
|
AC_CACHE_CHECK([for 64-bit SPARC], cl_cv_host_sparc64, [
|
|
AC_EGREP_CPP(yes,
|
|
[#if defined(__sparcv9) || defined(__arch64__)
|
|
yes
|
|
#endif
|
|
], cl_cv_host_sparc64=yes, cl_cv_host_sparc64=no)
|
|
])
|
|
if test $cl_cv_host_sparc64 = yes; then
|
|
host_cpu=sparc64
|
|
else
|
|
host_cpu=sparc
|
|
fi
|
|
;;
|
|
esac
|
|
dnl was AC_DEFINE_UNQUOTED(__${host_cpu}__) but KAI C++ 3.2d doesn't like this
|
|
cat >> confdefs.h <<EOF
|
|
#ifndef __${host_cpu}__
|
|
#define __${host_cpu}__ 1
|
|
#endif
|
|
EOF
|
|
])
|