From bee32f54dad912d15e952ffd0a91b95a376bbe7e Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Thu, 17 Sep 2015 16:44:59 +0300 Subject: [PATCH] More fixes for compiler feature detection --- CMakeLists.txt | 8 ++++---- cmake/AppendCXXFlagIfSupported.cmake | 5 +++-- cmake/CheckCompile.cmake | 25 +++++++++++++++---------- cmake/attribute_deprecated_test.cc | 7 ------- cmake/std_experimental_optional_test.cc | 8 -------- 5 files changed, 22 insertions(+), 31 deletions(-) delete mode 100644 cmake/attribute_deprecated_test.cc delete mode 100644 cmake/std_experimental_optional_test.cc diff --git a/CMakeLists.txt b/CMakeLists.txt index f439048..a232726 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,13 +80,13 @@ INCLUDE_DIRECTORIES(SYSTEM ${SDL2_ALL_INCLUDE_DIRS}) INCLUDE(CheckCompile) CHECK_COMPILE( SDL2PP_WITH_EXPERIMENTAL_OPTIONAL - ${PROJECT_SOURCE_DIR}/cmake/std_experimental_optional_test.cc - "Checking for experimental/optional header" + "#include \nint main() { std::experimental::optional o; return !o; }" + "experimental/optional header" ) CHECK_COMPILE( SDL2PP_WITH_DEPRECATED - ${PROJECT_SOURCE_DIR}/cmake/attribute_deprecated_test.cc - "Checking for [[deprecated]] attribute" + "[[deprecated]]\nstatic void f() {} int main() { return 0; }" + "[[deprecated]] attribute" ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WARNINGS}") diff --git a/cmake/AppendCXXFlagIfSupported.cmake b/cmake/AppendCXXFlagIfSupported.cmake index 7421109..ee38818 100644 --- a/cmake/AppendCXXFlagIfSupported.cmake +++ b/cmake/AppendCXXFlagIfSupported.cmake @@ -2,11 +2,12 @@ INCLUDE(CheckCXXCompilerFlag) MACRO(APPEND_CXX_FLAG_IF_SUPPORTED FLAG VARIABLE) UNSET(HAS_FLAG CACHE) + SET(SAVED_CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET}) SET(CMAKE_REQUIRED_QUIET YES) CHECK_CXX_COMPILER_FLAG(${FLAG} HAS_FLAG) - SET(CMAKE_REQUIRED_QUIET NO) + SET(CMAKE_REQUIRED_QUIET ${SAVED_CMAKE_REQUIRED_QUIET}) IF(HAS_FLAG) - SET(VARIABLE "${VARIABLE} ${FLAG}") + SET(${VARIABLE} "${${VARIABLE}} ${FLAG}") MESSAGE(STATUS "Checking for ${FLAG}: yes") ELSE(HAS_FLAG) MESSAGE(STATUS "Checking for ${FLAG}: no") diff --git a/cmake/CheckCompile.cmake b/cmake/CheckCompile.cmake index ce52160..5f93361 100644 --- a/cmake/CheckCompile.cmake +++ b/cmake/CheckCompile.cmake @@ -1,11 +1,16 @@ -MACRO(CHECK_COMPILE RESULT_VAR SOURCE_FILE DESCRIPTION) - SET(SAVED_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WERROR_FLAG}") - TRY_COMPILE(RESULT_VAR ${CMAKE_BINARY_DIR} ${SOURCE_FILE}) - IF(RESULT_VAR) - MESSAGE(STATUS "${DESCRIPTION}: yes") - ELSE(RESULT_VAR) - MESSAGE(STATUS "${DESCRIPTION}: no") - ENDIF(RESULT_VAR) - SET(CMAKE_CXX_FLAGS "${SAVED_CXX_FLAGS}") +INCLUDE(CheckCXXSourceCompiles) + +MACRO(CHECK_COMPILE RESULT_VAR CODE DESCRIPTION) + SET(SAVED_CMAKE_REQUIRED_QUIET "${CMAKE_REQUIRED_QUIET}") + SET(SAVED_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") + SET(CMAKE_REQUIRED_QUIET YES) + SET(CMAKE_REQUIRED_FLAGS "${SDL2PP_WERROR_FLAG}") + CHECK_CXX_SOURCE_COMPILES("${CODE}" ${RESULT_VAR}) + SET(CMAKE_REQUIRED_QUIET "${SAVED_CMAKE_REQUIRED_QUIET}") + SET(CMAKE_REQUIRED_FLAGS "${SAVED_CMAKE_REQUIRED_FLAGS}") + IF(${RESULT_VAR}) + MESSAGE(STATUS "Checking for ${DESCRIPTION}: yes") + ELSE(${RESULT_VAR}) + MESSAGE(STATUS "Checking for ${DESCRIPTION}: no") + ENDIF(${RESULT_VAR}) ENDMACRO(CHECK_COMPILE) diff --git a/cmake/attribute_deprecated_test.cc b/cmake/attribute_deprecated_test.cc deleted file mode 100644 index 77e0e49..0000000 --- a/cmake/attribute_deprecated_test.cc +++ /dev/null @@ -1,7 +0,0 @@ -[[deprecated]] -static void f() { -} - -int main() { - return 0; -} diff --git a/cmake/std_experimental_optional_test.cc b/cmake/std_experimental_optional_test.cc deleted file mode 100644 index 8d77d5d..0000000 --- a/cmake/std_experimental_optional_test.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include - -int main() { - std::experimental::optional o; - - return !o; -}