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