branch: master commit 30067565d5dd21989381d4cbd84dd3155b3e0c31 Author: Konstantinos Poulios <logar...@gmail.com> AuthorDate: Fri Apr 12 16:16:02 2024 +0200
Treat clang separately in autoconf system and other minor build system changes --- CMakeLists.txt | 2 +- configure.ac | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f8694be..b6dd7b7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,7 +60,7 @@ set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation prefix") # General tests and configurations -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 14 CACHE STRING "Set C++ standard version (default: 14)) set(CMAKE_CXX_STANDARD_REQUIRED ON) check_include_file_cxx("cxxabi.h" GETFEM_HAVE_CXXABI_H) check_cxx_source_compiles( diff --git a/configure.ac b/configure.ac index 339025ba..8d03612d 100644 --- a/configure.ac +++ b/configure.ac @@ -27,7 +27,7 @@ dnl thus, updating cache ./config.cache avoided. define([AC_CACHE_LOAD], )dnl define([AC_CACHE_SAVE], )dnl -AC_INIT(getfem, 5.4.2) +AC_INIT([getfem],[5.4.2]) MAJOR_VERSION="5" MINOR_VERSION="4" PATCH_VERSION="2" @@ -40,7 +40,7 @@ AC_DEFINE_UNQUOTED(GMM_VERSION,"${PACKAGE_VERSION}",[GMM version]) AC_CONFIG_SRCDIR([install-sh]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config_autogenerated_not_used.h src/getfem/getfem_arch_config.h src/gmm/gmm_arch_config.h]) -AC_PREREQ(2.61) +AC_PREREQ([2.71]) AC_ARG_PROGRAM dnl ------------------------------------------------------------------------ @@ -114,15 +114,12 @@ dnl AC_CXX_FULL_SPECIALIZATION_SYNTAX (c)Luc Maisonobe v 1.1.1.1 (2001/07/26) dnl with some modification to test partial specialization AC_CACHE_CHECK(whether the compiler recognizes the partial specialization syntax, ac_cv_cxx_partial_specialization_syntax, -[AC_DIAGNOSE([obsolete],[Instead of using `AC_LANG', `AC_LANG_SAVE', and `AC_LANG_RESTORE', -you should use `AC_LANG_PUSH' and `AC_LANG_POP'.])dnl -AC_LANG_SAVE - AC_LANG([C++]) +[AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ template<class T> class A { public : int f () const { return 1; } }; template<class T> class A<T*> { public : int f () const { return 0; } };]], [[ A<float*> a; return a.f();]])],[ac_cv_cxx_partial_specialization_syntax=yes],[ac_cv_cxx_partial_specialization_syntax=no]) - AC_LANG_POP([]) + AC_LANG_POP([C++]) ]) if test "$ac_cv_cxx_partial_specialization_syntax" != yes; then echo "Your compiler ($CXX) does not support partial template specialization, trash it" @@ -135,6 +132,29 @@ echo "you are compiling GetFEM on a $host" case $CXX in + clang++) + GLANGVER=`$CXX --version | head -n 1 | grep -o -E "[[:digit:]]+.[[:digit:]]+.[[:digit:]]+"` + echo "Using the clang++ compiler $GLANGVER" + AC_CHECK_CXX_FLAG([$with_optimization],CXXFLAGS) + AC_CHECK_CXX_FLAG([-fmessage-length=0],CXXFLAGS) + AC_CHECK_CXX_FLAG([-fvisibility-inlines-hidden],CXXFLAGS) + AC_CHECK_CXX_FLAG([-ftemplate-depth-100],CXXFLAGS) + AC_CHECK_CXX_FLAG([-std=c++14], CXXFLAGS, [AC_MSG_ERROR([Used clang++ version does not support option -std=c++14.])]) + AC_CHECK_CXX_FLAG([-fPIC],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wall -W -Wextra],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wshadow],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wno-unknown-pragmas],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wno-variadic-macros],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wno-unused-but-set-variable],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wpointer-arith],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wcast-qual],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wwrite-strings],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wconversion],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wredundant-decls],CXXFLAGS) + AC_CHECK_CXX_FLAG([-Wno-long-long],CXXFLAGS) + AC_CHECK_CXX_FLAG([-rdynamic],SUPLDFLAGS) + CFLAGS="$CFLAGS $with_optimization -fPIC" + ;; *g++* | c++) GCCVER=`$CXX --version | head -1 | cut -d ' ' -f3` echo "Using the GNU g++ compiler $GCCVER" @@ -142,7 +162,7 @@ case $CXX in AC_CHECK_CXX_FLAG([-fmessage-length=0],CXXFLAGS) AC_CHECK_CXX_FLAG([-fvisibility-inlines-hidden],CXXFLAGS) AC_CHECK_CXX_FLAG([-ftemplate-depth-100],CXXFLAGS) - AC_CHECK_CXX_FLAG([-std=c++14], CXXFLAGS,[AC_CHECK_CXX_FLAG([-std=c++0x],CXXFLAGS,[AC_MSG_ERROR([g++ do not support option -std=c++14. Update g++ to at least release 4.9])] )]) + AC_CHECK_CXX_FLAG([-std=c++14], CXXFLAGS,[AC_CHECK_CXX_FLAG([-std=c++0x],CXXFLAGS,[AC_MSG_ERROR([Used g++ does not support option -std=c++14. Update g++ to at least release 4.9])] )]) AC_CHECK_CXX_FLAG([-fPIC],CXXFLAGS) AC_CHECK_CXX_FLAG([-Wall -W -Wextra],CXXFLAGS) dnl AC_CHECK_CXX_FLAG([-pedantic],CXXFLAGS)