acx_check_suncc.m4 revision fbaaef999ba563838ebd00874ed8a1c01fbf286d
1dnl Check for the presence of the Sun Studio compiler. 2dnl If Sun Studio compiler is found, set appropriate flags. 3dnl Additionally, Sun Studio doesn't default to 64-bit by itself, 4dnl nor does it automatically look in standard Solaris places for 5dnl 64-bit libs, so we must add those options and paths to the search 6dnl paths. 7 8dnl TODO(kenton): This is pretty hacky. It sets CXXFLAGS, which the autoconf 9dnl docs say should never be overridden except by the user. It also isn't 10dnl cross-compile safe. We should fix these problems, but since I don't have 11dnl Sun CC at my disposal for testing, someone else will have to do it. 12 13AC_DEFUN([ACX_CHECK_SUNCC],[ 14 15 AC_LANG_PUSH([C++]) 16 AC_CHECK_DECL([__SUNPRO_CC], [SUNCC="yes"], [SUNCC="no"]) 17 AC_LANG_POP() 18 19 20 AC_ARG_ENABLE([64bit-solaris], 21 [AS_HELP_STRING([--disable-64bit-solaris], 22 [Build 64 bit binary on Solaris @<:@default=on@:>@])], 23 [ac_enable_64bit="$enableval"], 24 [ac_enable_64bit="yes"]) 25 26 AS_IF([test "$SUNCC" = "yes" -a "x${ac_cv_env_CXXFLAGS_set}" = "x"],[ 27 dnl Sun Studio has a crashing bug with -xO4 in some cases. Keep this 28 dnl at -xO3 until a proper test to detect those crashes can be done. 29 CXXFLAGS="-g0 -xO3 -xlibmil -xdepend -xbuiltin -mt -compat=5 -library=stlport4 -template=no%extdef ${CXXFLAGS}" 30 ]) 31 32 case $host_os in 33 *solaris*) 34 AC_CHECK_PROGS(ISAINFO, [isainfo], [no]) 35 AS_IF([test "x$ISAINFO" != "xno"], 36 [isainfo_b=`${ISAINFO} -b`], 37 [isainfo_b="x"]) 38 39 AS_IF([test "$isainfo_b" != "x"],[ 40 41 isainfo_k=`${ISAINFO} -k` 42 43 AS_IF([test "x$ac_enable_64bit" = "xyes"],[ 44 45 AS_IF([test "x${ac_cv_env_LDFLAGS_set}" = "x"],[ 46 LDFLAGS="-L/usr/local/lib/${isainfo_k} ${LDFLAGS}" 47 ]) 48 49 AS_IF([test "x$libdir" = "x\${exec_prefix}/lib"],[ 50 dnl The user hasn't overridden the default libdir, so we'll 51 dnl the dir suffix to match solaris 32/64-bit policy 52 libdir="${libdir}/${isainfo_k}" 53 ]) 54 55 dnl This should just be set in CPPFLAGS and in LDFLAGS, but libtool 56 dnl does the wrong thing if you don't put it into CXXFLAGS. sigh. 57 AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"],[ 58 CXXFLAGS="${CXXFLAGS} -m64" 59 ac_cv_env_CXXFLAGS_set=set 60 ac_cv_env_CXXFLAGS_value='-m64' 61 ]) 62 63 AS_IF([test "$target_cpu" = "sparc" -a "x$SUNCC" = "xyes" ],[ 64 CXXFLAGS="-xmemalign=8s ${CXXFLAGS}" 65 ]) 66 ]) 67 ]) 68 ;; 69 esac 70 71]) 72