mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-03 19:05:59 -04:00
Revamp compiler flag support detection logic
This commit is contained in:
parent
8be33f4fb4
commit
be5bc9d1de
@ -59,16 +59,17 @@ FIND_PACKAGE(Doxygen)
|
|||||||
|
|
||||||
# compiler flags & definitions
|
# compiler flags & definitions
|
||||||
IF(MSVC)
|
IF(MSVC)
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
|
SET(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} /W3")
|
||||||
SET(WERROR_FLAG "/WX")
|
SET(SDL2PP_WERROR_FLAG "/WX")
|
||||||
ELSE(MSVC)
|
ELSE(MSVC)
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${SDL2PP_CXXSTD} -Wall -Wextra -pedantic")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${SDL2PP_CXXSTD}")
|
||||||
SET(WERROR_FLAG "-Werror")
|
SET(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wall -Wextra -pedantic")
|
||||||
|
SET(SDL2PP_WERROR_FLAG "-Werror")
|
||||||
|
|
||||||
INCLUDE(EnableCXXFlagIfSupported)
|
INCLUDE(AppendCXXFlagIfSupported)
|
||||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wmissing-prototypes)
|
APPEND_CXX_FLAG_IF_SUPPORTED(-Wmissing-prototypes SDL2PP_WARNINGS)
|
||||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wtautological-compare)
|
APPEND_CXX_FLAG_IF_SUPPORTED(-Wtautological-compare SDL2PP_WARNINGS)
|
||||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wshorten-64-to-32)
|
APPEND_CXX_FLAG_IF_SUPPORTED(-Wshorten-64-to-32 SDL2PP_WARNINGS)
|
||||||
ENDIF(MSVC)
|
ENDIF(MSVC)
|
||||||
|
|
||||||
LIST(REMOVE_DUPLICATES SDL2_ALL_INCLUDE_DIRS)
|
LIST(REMOVE_DUPLICATES SDL2_ALL_INCLUDE_DIRS)
|
||||||
@ -76,11 +77,6 @@ LIST(REMOVE_DUPLICATES SDL2_ALL_INCLUDE_DIRS)
|
|||||||
INCLUDE_DIRECTORIES(BEFORE ${PROJECT_SOURCE_DIR})
|
INCLUDE_DIRECTORIES(BEFORE ${PROJECT_SOURCE_DIR})
|
||||||
INCLUDE_DIRECTORIES(SYSTEM ${SDL2_ALL_INCLUDE_DIRS})
|
INCLUDE_DIRECTORIES(SYSTEM ${SDL2_ALL_INCLUDE_DIRS})
|
||||||
|
|
||||||
IF(SDL2PP_WITH_WERROR)
|
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WERROR_FLAG}")
|
|
||||||
ENDIF(SDL2PP_WITH_WERROR)
|
|
||||||
|
|
||||||
# platform checks
|
|
||||||
INCLUDE(CheckCompile)
|
INCLUDE(CheckCompile)
|
||||||
CHECK_COMPILE(
|
CHECK_COMPILE(
|
||||||
SDL2PP_WITH_EXPERIMENTAL_OPTIONAL
|
SDL2PP_WITH_EXPERIMENTAL_OPTIONAL
|
||||||
@ -93,6 +89,12 @@ CHECK_COMPILE(
|
|||||||
"Checking for [[deprecated]] attribute"
|
"Checking for [[deprecated]] attribute"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WARNINGS}")
|
||||||
|
|
||||||
|
IF(SDL2PP_WITH_WERROR)
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WERROR_FLAG}")
|
||||||
|
ENDIF(SDL2PP_WITH_WERROR)
|
||||||
|
|
||||||
# config.h
|
# config.h
|
||||||
CONFIGURE_FILE(
|
CONFIGURE_FILE(
|
||||||
SDL2pp/Config.hh.in
|
SDL2pp/Config.hh.in
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
INCLUDE(CheckCXXCompilerFlag)
|
INCLUDE(CheckCXXCompilerFlag)
|
||||||
|
|
||||||
MACRO(ENABLE_CXX_FLAG_IF_SUPPORTED FLAG)
|
MACRO(APPEND_CXX_FLAG_IF_SUPPORTED FLAG VARIABLE)
|
||||||
UNSET(HAS_FLAG CACHE)
|
UNSET(HAS_FLAG CACHE)
|
||||||
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 NO)
|
||||||
IF(HAS_FLAG)
|
IF(HAS_FLAG)
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${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")
|
||||||
ENDIF(HAS_FLAG)
|
ENDIF(HAS_FLAG)
|
||||||
ENDMACRO(ENABLE_CXX_FLAG_IF_SUPPORTED)
|
ENDMACRO(APPEND_CXX_FLAG_IF_SUPPORTED)
|
@ -1,11 +1,11 @@
|
|||||||
MACRO(CHECK_COMPILE RESULT_VAR SOURCE_FILE DESCRIPTION)
|
MACRO(CHECK_COMPILE RESULT_VAR SOURCE_FILE DESCRIPTION)
|
||||||
SET(SAVED_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
SET(SAVED_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WERROR_FLAG}")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WERROR_FLAG}")
|
||||||
TRY_COMPILE(${RESULT_VAR} ${CMAKE_BINARY_DIR} ${SOURCE_FILE})
|
TRY_COMPILE(RESULT_VAR ${CMAKE_BINARY_DIR} ${SOURCE_FILE})
|
||||||
IF(${RESULT_VAR})
|
IF(RESULT_VAR)
|
||||||
MESSAGE(STATUS "${DESCRIPTION}: yes")
|
MESSAGE(STATUS "${DESCRIPTION}: yes")
|
||||||
ELSE(${RESULT_VAR})
|
ELSE(RESULT_VAR)
|
||||||
MESSAGE(STATUS "${DESCRIPTION}: no")
|
MESSAGE(STATUS "${DESCRIPTION}: no")
|
||||||
ENDIF(${RESULT_VAR})
|
ENDIF(RESULT_VAR)
|
||||||
SET(CMAKE_CXX_FLAGS "${SAVED_CXX_FLAGS}")
|
SET(CMAKE_CXX_FLAGS "${SAVED_CXX_FLAGS}")
|
||||||
ENDMACRO(CHECK_COMPILE)
|
ENDMACRO(CHECK_COMPILE)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[[deprecated]]
|
[[deprecated]]
|
||||||
void f() {
|
static void f() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
@ -17,8 +17,8 @@ IF(SDL2PP_WITH_MIXER)
|
|||||||
ENDIF(SDL2PP_WITH_MIXER)
|
ENDIF(SDL2PP_WITH_MIXER)
|
||||||
|
|
||||||
# disable self-move warning: it's deliberately used in tests
|
# disable self-move warning: it's deliberately used in tests
|
||||||
INCLUDE(EnableCXXFlagIfSupported)
|
INCLUDE(AppendCXXFlagIfSupported)
|
||||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wno-self-move)
|
APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-self-move CMAKE_CXX_FLAGS)
|
||||||
|
|
||||||
ADD_DEFINITIONS(-DTESTDATA_DIR="${PROJECT_SOURCE_DIR}/testdata")
|
ADD_DEFINITIONS(-DTESTDATA_DIR="${PROJECT_SOURCE_DIR}/testdata")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user