Detect whether the C++ compiler is clang

This does not have a real effect for now.
This commit is contained in:
Jean-Marc Lasgouttes 2014-12-17 12:11:10 +01:00
parent 58dcc4f693
commit dd2be1777f

View File

@ -141,6 +141,19 @@ rm -f conftest.C conftest.o conftest.obj || true
]) ])
dnl Usage: LYX_PROG_CLANG: set lyx_cv_prog_clang to yes if the compiler is clang.
AC_DEFUN([LYX_PROG_CLANG],
[AC_CACHE_CHECK([for clang],
[lyx_cv_prog_clang],
[AC_TRY_COMPILE([], [
#ifndef __clang__
this is not clang
#endif
],
[lyx_cv_prog_clang=yes ; CLANG=yes], [lyx_cv_prog_clang=no ; CLANG=no])])
])
AC_DEFUN([LYX_PROG_CXX], AC_DEFUN([LYX_PROG_CXX],
[AC_MSG_CHECKING([for a good enough C++ compiler]) [AC_MSG_CHECKING([for a good enough C++ compiler])
LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS]) LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
@ -150,8 +163,11 @@ if test -z "$CXX" ; then
fi fi
AC_MSG_RESULT($CXX) AC_MSG_RESULT($CXX)
AC_PROG_CXX AC_REQUIRE([AC_PROG_CXX])
AC_PROG_CXXCPP AC_REQUIRE([AC_PROG_CXXCPP])
AC_LANG_PUSH(C++)
LYX_PROG_CLANG
AC_LANG_POP(C++)
### We might want to get or shut warnings. ### We might want to get or shut warnings.
AC_ARG_ENABLE(warnings, AC_ARG_ENABLE(warnings,
@ -220,9 +236,12 @@ fi
# set the compiler options correctly. # set the compiler options correctly.
if test x$GXX = xyes; then if test x$GXX = xyes; then
dnl clang++ pretends to be g++ 4.2.1; this is not useful
if test x$CLANG = xno; then
dnl Useful for global version info dnl Useful for global version info
gxx_version=`${CXX} -dumpversion` gxx_version=`${CXX} -dumpversion`
CXX_VERSION="($gxx_version)" CXX_VERSION="($gxx_version)"
fi
if test "$ac_test_CXXFLAGS" = set; then if test "$ac_test_CXXFLAGS" = set; then
CXXFLAGS="$ac_save_CXXFLAGS" CXXFLAGS="$ac_save_CXXFLAGS"
@ -265,6 +284,8 @@ if test x$GXX = xyes; then
*) AM_CXXFLAGS="";; *) AM_CXXFLAGS="";;
esac esac
if test x$enable_stdlib_debug = xyes ; then if test x$enable_stdlib_debug = xyes ; then
dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
dnl See http://clang-developers.42468.n3.nabble.com/libc-debug-mode-td3336742.html
case $gxx_version in case $gxx_version in
3.4*|4.*) 3.4*|4.*)
lyx_flags="$lyx_flags stdlib-debug" lyx_flags="$lyx_flags stdlib-debug"
@ -277,6 +298,7 @@ if test x$GXX = xyes; then
case $gxx_version in case $gxx_version in
3.3*) 3.3*)
lyx_flags="$lyx_flags concept-checks" lyx_flags="$lyx_flags concept-checks"
dnl FIXME check whether this makes sense with clang/libc++
AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking]) AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
;; ;;
3.4*|4.*) 3.4*|4.*)
@ -286,6 +308,7 @@ if test x$GXX = xyes; then
esac esac
fi fi
if test x$enable_cxx11 = xyes ; then if test x$enable_cxx11 = xyes ; then
dnl FIXME: check what to do with clang (is anything needed at all?)
case $gxx_version in case $gxx_version in
4.3*|4.4*|4.5*|4.6*) 4.3*|4.4*|4.5*|4.6*)
lyx_flags="$lyx_flags c++11-mode" lyx_flags="$lyx_flags c++11-mode"
@ -297,6 +320,7 @@ if test x$GXX = xyes; then
;; ;;
esac esac
fi fi
dnl FIXME: this should be conditional to the use of libstdc++
AC_DEFINE(STD_STRING_USES_COW, 1, [std::string uses copy-on-write]) AC_DEFINE(STD_STRING_USES_COW, 1, [std::string uses copy-on-write])
fi fi
test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch" test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"