16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# Copyright (c) 1999-2013, International Business Machines Corporation and 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# others. All Rights Reserved. 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# acinclude.m4 for ICU 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# Don't edit aclocal.m4, do edit acinclude.m4 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# Stephen F. Booth 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# @TOP@ 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# ICU_CHECK_MH_FRAG 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_DEFUN([ICU_CHECK_MH_FRAG], [ 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_CACHE_CHECK( 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org [which Makefile fragment to use for ${host}], 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org [icu_cv_host_frag], 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org [ 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgcase "${host}" in 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-solaris*) 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-solaris-gcc 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-solaris 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi ;; 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgalpha*-*-linux-gnu) 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-alpha-linux-gcc 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-alpha-linux-cc 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi ;; 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpowerpc*-*-linux*) 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-linux 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-linux-va 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi ;; 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-linux*|*-*-gnu|*-*-k*bsd*-gnu|*-*-kopensolaris*-gnu) icu_cv_host_frag=mh-linux ;; 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-cygwin|*-*-mingw32|*-*-mingw64) 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_TRY_COMPILE([ 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __MINGW32__ 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#error This is not MinGW 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif], [], AC_TRY_COMPILE([ 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __MINGW64__ 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#error This is not MinGW64 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif], [], icu_cv_host_frag=mh-mingw64, icu_cv_host_frag=mh-mingw), icu_cv_host_frag=mh-cygwin) 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-cygwin-msvc 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi ;; 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-*bsd*|*-*-dragonfly*) icu_cv_host_frag=mh-bsd-gcc ;; 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-aix*) 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-aix-gcc 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-aix-va 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi ;; 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-hpux*) 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org icu_cv_host_frag=mh-hpux-gcc 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "$CXX" in 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *aCC) icu_cv_host_frag=mh-hpux-acc ;; 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi ;; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*ibm-openedition*|*-*-os390*) icu_cv_host_frag=mh-os390 ;; 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-os400*) icu_cv_host_frag=mh-os400 ;; 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-apple-rhapsody*) icu_cv_host_frag=mh-darwin ;; 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-apple-darwin*) icu_cv_host_frag=mh-darwin ;; 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-beos) icu_cv_host_frag=mh-beos ;; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-haiku) icu_cv_host_frag=mh-haiku ;; 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-irix*) icu_cv_host_frag=mh-irix ;; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-dec-osf*) icu_cv_host_frag=mh-alpha-osf ;; 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-*-nto*) icu_cv_host_frag=mh-qnx ;; 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*-ncr-*) icu_cv_host_frag=mh-mpras ;; 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*) icu_cv_host_frag=mh-unknown ;; 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgesac 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ] 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ) 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org]) 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# ICU_CONDITIONAL - similar example taken from Automake 1.4 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_DEFUN([ICU_CONDITIONAL], 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org[AC_SUBST($1_TRUE) 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgif $2; then 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org $1_TRUE= 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgelse 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org $1_TRUE='#' 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgfi]) 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# ICU_PROG_LINK - Make sure that the linker is usable 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_DEFUN([ICU_PROG_LINK], 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org[ 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgcase "${host}" in 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-cygwin*|*-*-mingw*) 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" != yes && test -n "`link --version 2>&1 | grep 'GNU coreutils'`"; then 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_ERROR([link.exe is not a valid linker. Your PATH is incorrect. 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Please follow the directions in ICU's readme.]) 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi;; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *);; 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgesac]) 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# AC_SEARCH_LIBS_FIRST(FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# Search for a library defining FUNC, then see if it's not already available. 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_DEFUN([AC_SEARCH_LIBS_FIRST], 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org[AC_PREREQ([2.13]) 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_CACHE_CHECK([for library containing $1], [ac_cv_search_$1], 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org[ac_func_search_save_LIBS="$LIBS" 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgac_cv_search_$1="no" 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgfor i in $2; do 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgLIBS="-l$i $5 $ac_func_search_save_LIBS" 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_TRY_LINK_FUNC([$1], 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org[ac_cv_search_$1="-l$i" 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgbreak]) 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgdone 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgif test "$ac_cv_search_$1" = "no"; then 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_TRY_LINK_FUNC([$1], [ac_cv_search_$1="none required"]) 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgfi 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgLIBS="$ac_func_search_save_LIBS"]) 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgif test "$ac_cv_search_$1" != "no"; then 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org test "$ac_cv_search_$1" = "none required" || LIBS="$ac_cv_search_$1 $LIBS" 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org $3 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgelse : 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org $4 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgfi]) 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# Check if we can build and use 64-bit libraries 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_DEFUN([AC_CHECK_64BIT_LIBS], 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org[ 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_REQ=nochange 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ENABLE_64BIT_LIBS=unknown 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ## revisit this for cross-compile. 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_ARG_ENABLE(64bit-libs, 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org [ --enable-64bit-libs (deprecated, use --with-library-bits) build 64-bit libraries [default= platform default]], 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org [echo "note, use --with-library-bits instead of --*-64bit-libs" 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "${enableval}" in 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org no|false|32) with_library_bits=32; ;; 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org yes|true|64) with_library_bits=64else32 ;; 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org nochange) with_library_bits=nochange; ;; 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) AC_MSG_ERROR(bad value ${enableval} for '--*-64bit-libs') ;; 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac] ) 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_ARG_WITH(library-bits, 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org [ --with-library-bits=bits specify how many bits to use for the library (32, 64, 64else32, nochange) [default=nochange]], 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org [case "${withval}" in 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ""|nochange) BITS_REQ=$withval ;; 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 32|64|64else32) BITS_REQ=$withval ;; 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) AC_MSG_ERROR(bad value ${withval} for --with-library-bits) ;; 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac]) 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # don't use these for cross compiling 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$cross_compiling" = "yes" -a "${BITS_REQ}" != "nochange"; then 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_ERROR([Don't specify bitness when cross compiling. See readme.html for help with cross compilation., and set compiler options manually.]) 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_CHECK_SIZEOF([void *]) 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_CHECKING([whether runnable 64 bit binaries are built by default]) 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case $ac_cv_sizeof_void_p in 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8) DEFAULT_64BIT=yes ;; 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4) DEFAULT_64BIT=no ;; 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) DEFAULT_64BIT=unknown 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_GOT=unknown 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # 'OK' here means, we can exit any further checking, everything's copa 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_OK=yes 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # do we need to check for buildable/runnable 32 or 64 bit? 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_CHECK_32=no 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_CHECK_64=no 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # later, can we run the 32/64 bit binaries so made? 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_RUN_32=no 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_RUN_64=no 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$DEFAULT_64BIT" = "yes"; then 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # we get 64 bits by default. 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_GOT=64 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "$BITS_REQ" in 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 32) 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # need to look for 32 bit support. 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_CHECK_32=yes 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # not copa. 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_OK=no;; 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # everyone else is happy. 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org nochange) ;; 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) ;; 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org elif test "$DEFAULT_64BIT" = "no"; then 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # not 64 bit by default. 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_GOT=32 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "$BITS_REQ" in 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 64|64else32) 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_CHECK_64=yes 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #BITS_CHECK_32=yes 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_OK=no;; 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org nochange) ;; 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) ;; 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org elif test "$DEFAULT_64BIT" = "unknown"; then 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # cross compiling. 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_GOT=unknown 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "$BITS_REQ" in 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 64|64else32) BITS_OK=no 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_CHECK_32=yes 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_CHECK_64=yes ;; 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 32) BITS_OK=no;; 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org nochange) ;; 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) ;; 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_RESULT($DEFAULT_64BIT); 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$BITS_OK" != "yes"; then 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # not copa. back these up. 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS_OLD="${CFLAGS}" 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS_OLD="${CXXFLAGS}" 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS_OLD="${LDFLAGS}" 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS_OLD="${ARFLAGS}" 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS_32="${CFLAGS}" 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS_32="${CXXFLAGS}" 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS_32="${LDFLAGS}" 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS_32="${ARFLAGS}" 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS_64="${CFLAGS}" 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS_64="${CXXFLAGS}" 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS_64="${LDFLAGS}" 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS_64="${ARFLAGS}" 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=unknown 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_32=unknown 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # These results can't be cached because is sets compiler flags. 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$BITS_CHECK_64" = "yes"; then 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_CHECKING([how to build 64-bit executables]) 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=no 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org #### 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # Find out if we think we can *build* for 64 bit. Doesn't check whether we can run it. 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # Note, we don't have to actually check if the options work- we'll try them before using them. 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # So, only try actually testing the options, if you are trying to decide between multiple options. 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # On exit from the following clauses: 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # if CAN_BUILD_64=yes: 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # *FLAGS are assumed to contain the right settings for 64bit 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # else if CAN_BUILD_64=no: (default) 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # *FLAGS are assumed to be trashed, and will be reset from *FLAGS_OLD 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -m64" 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -m64" 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes, CAN_BUILD_64=no) 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "${host}" in 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org sparc*-*-solaris*) 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # 1. try -m64 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -m64" 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -m64" 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_RUN_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes, CAN_BUILD_64=no, CAN_BUILD_64=unknown) 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$CAN_BUILD_64" != yes; then 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # Nope. back out changes. 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS_OLD}" 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CFLAGS_OLD}" 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # 2. try xarch=v9 [deprecated] 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ## TODO: cross compile: the following won't work. 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SPARCV9=`isainfo -n 2>&1 | grep sparcv9` 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SOL64=`$CXX -xarch=v9 2>&1 && $CC -xarch=v9 2>&1 | grep -v usage:` 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # "Warning: -xarch=v9 is deprecated, use -m64 to create 64-bit programs" 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test -z "$SOL64" && test -n "$SPARCV9"; then 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -xtarget=ultra -xarch=v9" 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -xtarget=ultra -xarch=v9" 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS="${LDFLAGS} -xtarget=ultra -xarch=v9" 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org i386-*-solaris*) 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # 1. try -m64 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -m64" 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -m64" 2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_RUN_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes, CAN_BUILD_64=no, CAN_BUILD_64=unknown) 2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$CAN_BUILD_64" != yes; then 2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # Nope. back out changes. 2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS_OLD}" 2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS_OLD}" 2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # 2. try the older compiler option 2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ## TODO: cross compile problem 2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AMD64=`isainfo -n 2>&1 | grep amd64` 2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SOL64=`$CXX -xtarget=generic64 2>&1 && $CC -xtarget=generic64 2>&1 | grep -v usage:` 2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test -z "$SOL64" && test -n "$AMD64"; then 2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -xtarget=generic64" 2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -xtarget=generic64" 2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes 2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ia64-*-linux*) 3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # check for ecc/ecpc compiler support 3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ## TODO: cross compiler problem 3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test -n "`$CXX --help 2>&1 && $CC --help 2>&1 | grep -v Intel`"; then 3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test -n "`$CXX --help 2>&1 && $CC --help 2>&1 | grep -v Itanium`"; then 3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes 3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-cygwin) 3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # vcvarsamd64.bat should have been used to enable 64-bit builds. 3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # We only do this check to display the correct answer. 3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ## TODO: cross compiler problem 3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test -n "`$CXX -help 2>&1 | grep 'for x64'`"; then 3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes 3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-aix*|powerpc64-*-linux*) 3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -q64" 3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -q64" 3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS="${LDFLAGS} -q64" 3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes, CAN_BUILD_64=no) 3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$CAN_BUILD_64" = yes; then 3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # worked- set other options. 3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "${host}" in 3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-aix*) 3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # tell AIX what executable mode to use. 3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS="${ARFLAGS} -X64" 3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-hpux*) 3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # First we try the newer +DD64, if that doesn't work, 3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # try other options. 3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} +DD64" 3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} +DD64" 3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes, CAN_BUILD_64=no) 3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$CAN_BUILD_64" != yes; then 3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # reset 3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS_OLD}" 3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS_OLD}" 3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # append 3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} +DA2.0W" 3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} +DA2.0W" 3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes, CAN_BUILD_64=no) 3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*ibm-openedition*|*-*-os390*) 3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -Wc,lp64" 3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -Wc,lp64" 3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS="${LDFLAGS} -Wl,lp64" 3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_64=yes, CAN_BUILD_64=no) 3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) 3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # unknown platform. 3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_RESULT($CAN_BUILD_64) 3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$CAN_BUILD_64" = yes; then 3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_CHECKING([whether runnable 64-bit binaries are being built ]) 3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_RUN_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==64)?0:1;}])], 3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_RUN_64=yes, BITS_RUN_64=no, BITS_RUN_64=unknown) 3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_RESULT($BITS_RUN_64); 3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS_64="${CFLAGS}" 3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS_64="${CXXFLAGS}" 3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS_64="${LDFLAGS}" 3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS_64="${ARFLAGS}" 3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # put it back. 3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS_OLD}" 3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS_OLD}" 3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS="${LDFLAGS_OLD}" 3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS="${ARFLAGS_OLD}" 3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$BITS_CHECK_32" = "yes"; then 3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # see comment under 'if BITS_CHECK_64', above. 3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_CHECKING([how to build 32-bit executables]) 3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes; then 3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS} -m32" 3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS} -m32" 3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==32)?0:1;}])], 3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CAN_BUILD_32=yes, CAN_BUILD_32=no) 3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_RESULT($CAN_BUILD_32) 3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$CAN_BUILD_32" = yes; then 3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_CHECKING([whether runnable 32-bit binaries are being built ]) 3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_RUN_IFELSE([AC_LANG_SOURCE([int main(void) {return (sizeof(void*)*8==32)?0:1;}])], 3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_RUN_32=yes, BITS_RUN_32=no, BITS_RUN_32=unknown) 3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_RESULT($BITS_RUN_32); 3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS_32="${CFLAGS}" 3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS_32="${CXXFLAGS}" 3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS_32="${LDFLAGS}" 3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS_32="${ARFLAGS}" 4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # put it back. 4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS_OLD}" 4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS_OLD}" 4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS="${LDFLAGS_OLD}" 4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS="${ARFLAGS_OLD}" 4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ## 4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # OK. Now, we've tested for 32 and 64 bitness. Let's see what we'll do. 4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # 4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # First, implement 64else32 4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$BITS_REQ" = "64else32"; then 4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$BITS_RUN_64" = "yes"; then 4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_REQ=64 4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # no changes. 4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_OK=yes 4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # implement. 4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$BITS_REQ" = "32" -a "$BITS_RUN_32" = "yes"; then 4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS_32}" 4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS_32}" 4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS="${LDFLAGS_32}" 4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS="${ARFLAGS_32}" 4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_OK=yes 4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org elif test "$BITS_REQ" = "64" -a "$BITS_RUN_64" = "yes"; then 4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="${CFLAGS_64}" 4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="${CXXFLAGS_64}" 4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LDFLAGS="${LDFLAGS_64}" 4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ARFLAGS="${ARFLAGS_64}" 4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BITS_OK=yes 4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org elif test "$BITS_OK" != "yes"; then 4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_ERROR([Requested $BITS_REQ bit binaries but could not compile and execute them. See readme.html for help with cross compilation., and set compiler options manually.]) 4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org]) 4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# Strict compilation options. 4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgAC_DEFUN([AC_CHECK_STRICT_COMPILE], 4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org[ 4446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_CHECKING([whether strict compiling is on]) 4456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_ARG_ENABLE(strict,[ --enable-strict compile with strict compiler options [default=yes]], [ 4466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$enableval" = no 4476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org then 4486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ac_use_strict_options=no 4496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 4506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ac_use_strict_options=yes 4516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ], [ac_use_strict_options=yes]) 4536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AC_MSG_RESULT($ac_use_strict_options) 4546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$ac_use_strict_options" = yes 4566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org then 4576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GCC" = yes 4586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org then 4596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "${host}" in 4606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-solaris*) 4616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # Don't use -std=c99 option on Solaris/GCC 4626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 4636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *) 4646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # Do not use -ansi. It limits us to C90, and it breaks some platforms. 4656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org # We use -std=c99 to disable the gnu99 defaults and its associated warnings 4666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="$CFLAGS -std=c99" 4676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ;; 4686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 4696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings" 4716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 4726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "${host}" in 4736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-cygwin) 4746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "`$CC /help 2>&1 | head -c9`" = "Microsoft" 4756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org then 4766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CFLAGS="$CFLAGS /W4" 4776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 4796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "$GXX" = yes 4816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org then 4826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="$CXXFLAGS -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long" 4836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 4846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case "${host}" in 4856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *-*-cygwin) 4866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if test "`$CXX /help 2>&1 | head -c9`" = "Microsoft" 4876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org then 4886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CXXFLAGS="$CXXFLAGS /W4" 4896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org esac 4916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fi 4936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org]) 4946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 496