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