More fixes for compiler feature detection

This commit is contained in:
Dmitry Marakasov 2015-09-17 16:44:59 +03:00
parent e3feb2f7a4
commit bee32f54da
5 changed files with 22 additions and 31 deletions

View File

@ -80,13 +80,13 @@ INCLUDE_DIRECTORIES(SYSTEM ${SDL2_ALL_INCLUDE_DIRS})
INCLUDE(CheckCompile) INCLUDE(CheckCompile)
CHECK_COMPILE( CHECK_COMPILE(
SDL2PP_WITH_EXPERIMENTAL_OPTIONAL SDL2PP_WITH_EXPERIMENTAL_OPTIONAL
${PROJECT_SOURCE_DIR}/cmake/std_experimental_optional_test.cc "#include <experimental/optional>\nint main() { std::experimental::optional<int> o; return !o; }"
"Checking for experimental/optional header" "experimental/optional header"
) )
CHECK_COMPILE( CHECK_COMPILE(
SDL2PP_WITH_DEPRECATED SDL2PP_WITH_DEPRECATED
${PROJECT_SOURCE_DIR}/cmake/attribute_deprecated_test.cc "[[deprecated]]\nstatic void f() {} int main() { return 0; }"
"Checking for [[deprecated]] attribute" "[[deprecated]] attribute"
) )
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WARNINGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WARNINGS}")

View File

@ -2,11 +2,12 @@ INCLUDE(CheckCXXCompilerFlag)
MACRO(APPEND_CXX_FLAG_IF_SUPPORTED FLAG VARIABLE) MACRO(APPEND_CXX_FLAG_IF_SUPPORTED FLAG VARIABLE)
UNSET(HAS_FLAG CACHE) UNSET(HAS_FLAG CACHE)
SET(SAVED_CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET})
SET(CMAKE_REQUIRED_QUIET YES) SET(CMAKE_REQUIRED_QUIET YES)
CHECK_CXX_COMPILER_FLAG(${FLAG} HAS_FLAG) CHECK_CXX_COMPILER_FLAG(${FLAG} HAS_FLAG)
SET(CMAKE_REQUIRED_QUIET NO) SET(CMAKE_REQUIRED_QUIET ${SAVED_CMAKE_REQUIRED_QUIET})
IF(HAS_FLAG) IF(HAS_FLAG)
SET(VARIABLE "${VARIABLE} ${FLAG}") SET(${VARIABLE} "${${VARIABLE}} ${FLAG}")
MESSAGE(STATUS "Checking for ${FLAG}: yes") MESSAGE(STATUS "Checking for ${FLAG}: yes")
ELSE(HAS_FLAG) ELSE(HAS_FLAG)
MESSAGE(STATUS "Checking for ${FLAG}: no") MESSAGE(STATUS "Checking for ${FLAG}: no")

View File

@ -1,11 +1,16 @@
MACRO(CHECK_COMPILE RESULT_VAR SOURCE_FILE DESCRIPTION) INCLUDE(CheckCXXSourceCompiles)
SET(SAVED_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WERROR_FLAG}") MACRO(CHECK_COMPILE RESULT_VAR CODE DESCRIPTION)
TRY_COMPILE(RESULT_VAR ${CMAKE_BINARY_DIR} ${SOURCE_FILE}) SET(SAVED_CMAKE_REQUIRED_QUIET "${CMAKE_REQUIRED_QUIET}")
IF(RESULT_VAR) SET(SAVED_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
MESSAGE(STATUS "${DESCRIPTION}: yes") SET(CMAKE_REQUIRED_QUIET YES)
ELSE(RESULT_VAR) SET(CMAKE_REQUIRED_FLAGS "${SDL2PP_WERROR_FLAG}")
MESSAGE(STATUS "${DESCRIPTION}: no") CHECK_CXX_SOURCE_COMPILES("${CODE}" ${RESULT_VAR})
ENDIF(RESULT_VAR) SET(CMAKE_REQUIRED_QUIET "${SAVED_CMAKE_REQUIRED_QUIET}")
SET(CMAKE_CXX_FLAGS "${SAVED_CXX_FLAGS}") 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) ENDMACRO(CHECK_COMPILE)

View File

@ -1,7 +0,0 @@
[[deprecated]]
static void f() {
}
int main() {
return 0;
}

View File

@ -1,8 +0,0 @@
#include <experimental/optional>
#include <string>
int main() {
std::experimental::optional<std::string> o;
return !o;
}