blob: 5bf72d3c434c1f9c85ede1140500467a6f5c4662 [file] [log] [blame]
kenton@google.coma8923cd2009-05-01 21:53:10 +00001dnl 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
kenton@google.coma5183462009-05-28 00:48:15 +000015 AC_LANG_PUSH([C++])
16 AC_CHECK_DECL([__SUNPRO_CC], [SUNCC="yes"], [SUNCC="no"])
kenton@google.coma5183462009-05-28 00:48:15 +000017 AC_LANG_POP()
kenton@google.com6be265a2009-08-06 20:47:45 +000018
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.
kenton@google.combf06bb22009-12-23 22:02:18 +000029 CXXFLAGS="-g0 -xO3 -xlibmil -xdepend -xbuiltin -mt -compat=5 -library=stlport4 -library=Crun -template=no%extdef ${CXXFLAGS}"
kenton@google.com6be265a2009-08-06 20:47:45 +000030 ])
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.
kenton@google.com45258ff2009-12-23 22:12:22 +000057 dnl (It also needs it in CFLAGS, or it does a different wrong thing!)
kenton@google.com6be265a2009-08-06 20:47:45 +000058 AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"],[
59 CXXFLAGS="${CXXFLAGS} -m64"
60 ac_cv_env_CXXFLAGS_set=set
61 ac_cv_env_CXXFLAGS_value='-m64'
62 ])
63
kenton@google.com45258ff2009-12-23 22:12:22 +000064 AS_IF([test "x${ac_cv_env_CFLAGS_set}" = "x"],[
65 CFLAGS="${CFLAGS} -m64"
66 ac_cv_env_CFLAGS_set=set
67 ac_cv_env_CFLAGS_value='-m64'
68 ])
69
kenton@google.com6be265a2009-08-06 20:47:45 +000070 AS_IF([test "$target_cpu" = "sparc" -a "x$SUNCC" = "xyes" ],[
71 CXXFLAGS="-xmemalign=8s ${CXXFLAGS}"
72 ])
73 ])
74 ])
75 ;;
76 esac
77
kenton@google.coma8923cd2009-05-01 21:53:10 +000078])