Add initial support for building with the cray compiler
Get jemalloc building and passing `make check_unit` with cray 8.4. An inlining bug in 8.4 results in internal errors while trying to build jemalloc. This has already been reported and fixed for the 8.5 release. In order to work around the inlining bug, disable gnu compatibility and limit ipa optimizations. I copied the msvc compiler check for cray, but note that we perform the test even if we think we're using gcc because cray pretends to be gcc if `-hgnu` (which is enabled by default) is used. I couldn't come up with a principled way to check for the inlining bug, so instead I just checked compiler versions. The build had lots of warnings I need to address and cray doesn't support -MM or -MT for dependency tracking, so I had to do `make CC_MM=`.
This commit is contained in:
parent
b770d2da1d
commit
8701bc7079
32
configure.ac
32
configure.ac
@ -118,6 +118,7 @@ dnl If CFLAGS isn't defined, set CFLAGS to something reasonable. Otherwise,
|
|||||||
dnl just prevent autoconf from molesting CFLAGS.
|
dnl just prevent autoconf from molesting CFLAGS.
|
||||||
CFLAGS=$CFLAGS
|
CFLAGS=$CFLAGS
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
|
|
||||||
if test "x$GCC" != "xyes" ; then
|
if test "x$GCC" != "xyes" ; then
|
||||||
AC_CACHE_CHECK([whether compiler is MSVC],
|
AC_CACHE_CHECK([whether compiler is MSVC],
|
||||||
[je_cv_msvc],
|
[je_cv_msvc],
|
||||||
@ -143,6 +144,30 @@ if test "x${PE_ENV}" != "x" ; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([whether compiler is cray],
|
||||||
|
[je_cv_cray],
|
||||||
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
|
||||||
|
[
|
||||||
|
#ifndef _CRAYC
|
||||||
|
int fail[-1];
|
||||||
|
#endif
|
||||||
|
])],
|
||||||
|
[je_cv_cray=yes],
|
||||||
|
[je_cv_cray=no])])
|
||||||
|
|
||||||
|
if test "x${je_cv_cray}" = "xyes" ; then
|
||||||
|
AC_CACHE_CHECK([whether cray compiler version is 8.4],
|
||||||
|
[je_cv_cray_84],
|
||||||
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
|
||||||
|
[
|
||||||
|
#if !(_RELEASE_MAJOR == 8 && _RELEASE_MINOR == 4)
|
||||||
|
int fail[-1];
|
||||||
|
#endif
|
||||||
|
])],
|
||||||
|
[je_cv_cray_84=yes],
|
||||||
|
[je_cv_cray_84=no])])
|
||||||
|
fi
|
||||||
|
|
||||||
if test "x$CFLAGS" = "x" ; then
|
if test "x$CFLAGS" = "x" ; then
|
||||||
no_CFLAGS="yes"
|
no_CFLAGS="yes"
|
||||||
if test "x$GCC" = "xyes" ; then
|
if test "x$GCC" = "xyes" ; then
|
||||||
@ -164,6 +189,13 @@ if test "x$CFLAGS" = "x" ; then
|
|||||||
JE_CFLAGS_APPEND([-FS])
|
JE_CFLAGS_APPEND([-FS])
|
||||||
CPPFLAGS="$CPPFLAGS -I${srcdir}/include/msvc_compat"
|
CPPFLAGS="$CPPFLAGS -I${srcdir}/include/msvc_compat"
|
||||||
fi
|
fi
|
||||||
|
if test "x$je_cv_cray" = "xyes" ; then
|
||||||
|
dnl cray compiler 8.4 has an inlining bug
|
||||||
|
if test "x$je_cv_cray_84" = "xyes" ; then
|
||||||
|
JE_CFLAGS_APPEND([-hipa2])
|
||||||
|
JE_CFLAGS_APPEND([-hnognu])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
dnl Append EXTRA_CFLAGS to CFLAGS, if defined.
|
dnl Append EXTRA_CFLAGS to CFLAGS, if defined.
|
||||||
if test "x$EXTRA_CFLAGS" != "x" ; then
|
if test "x$EXTRA_CFLAGS" != "x" ; then
|
||||||
|
Loading…
Reference in New Issue
Block a user