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
|
||||
IF(MSVC)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
|
||||
SET(WERROR_FLAG "/WX")
|
||||
SET(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} /W3")
|
||||
SET(SDL2PP_WERROR_FLAG "/WX")
|
||||
ELSE(MSVC)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${SDL2PP_CXXSTD} -Wall -Wextra -pedantic")
|
||||
SET(WERROR_FLAG "-Werror")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${SDL2PP_CXXSTD}")
|
||||
SET(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wall -Wextra -pedantic")
|
||||
SET(SDL2PP_WERROR_FLAG "-Werror")
|
||||
|
||||
INCLUDE(EnableCXXFlagIfSupported)
|
||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wmissing-prototypes)
|
||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wtautological-compare)
|
||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wshorten-64-to-32)
|
||||
INCLUDE(AppendCXXFlagIfSupported)
|
||||
APPEND_CXX_FLAG_IF_SUPPORTED(-Wmissing-prototypes SDL2PP_WARNINGS)
|
||||
APPEND_CXX_FLAG_IF_SUPPORTED(-Wtautological-compare SDL2PP_WARNINGS)
|
||||
APPEND_CXX_FLAG_IF_SUPPORTED(-Wshorten-64-to-32 SDL2PP_WARNINGS)
|
||||
ENDIF(MSVC)
|
||||
|
||||
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(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)
|
||||
CHECK_COMPILE(
|
||||
SDL2PP_WITH_EXPERIMENTAL_OPTIONAL
|
||||
@ -93,6 +89,12 @@ CHECK_COMPILE(
|
||||
"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
|
||||
CONFIGURE_FILE(
|
||||
SDL2pp/Config.hh.in
|
||||
|
@ -1,14 +1,14 @@
|
||||
INCLUDE(CheckCXXCompilerFlag)
|
||||
|
||||
MACRO(ENABLE_CXX_FLAG_IF_SUPPORTED FLAG)
|
||||
MACRO(APPEND_CXX_FLAG_IF_SUPPORTED FLAG VARIABLE)
|
||||
UNSET(HAS_FLAG CACHE)
|
||||
SET(CMAKE_REQUIRED_QUIET YES)
|
||||
CHECK_CXX_COMPILER_FLAG(${FLAG} HAS_FLAG)
|
||||
SET(CMAKE_REQUIRED_QUIET NO)
|
||||
IF(HAS_FLAG)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
|
||||
SET(VARIABLE "${VARIABLE} ${FLAG}")
|
||||
MESSAGE(STATUS "Checking for ${FLAG}: yes")
|
||||
ELSE(HAS_FLAG)
|
||||
MESSAGE(STATUS "Checking for ${FLAG}: no")
|
||||
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)
|
||||
SET(SAVED_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WERROR_FLAG}")
|
||||
TRY_COMPILE(${RESULT_VAR} ${CMAKE_BINARY_DIR} ${SOURCE_FILE})
|
||||
IF(${RESULT_VAR})
|
||||
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})
|
||||
ELSE(RESULT_VAR)
|
||||
MESSAGE(STATUS "${DESCRIPTION}: no")
|
||||
ENDIF(${RESULT_VAR})
|
||||
ENDIF(RESULT_VAR)
|
||||
SET(CMAKE_CXX_FLAGS "${SAVED_CXX_FLAGS}")
|
||||
ENDMACRO(CHECK_COMPILE)
|
||||
|
@ -1,5 +1,5 @@
|
||||
[[deprecated]]
|
||||
void f() {
|
||||
static void f() {
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
@ -17,8 +17,8 @@ IF(SDL2PP_WITH_MIXER)
|
||||
ENDIF(SDL2PP_WITH_MIXER)
|
||||
|
||||
# disable self-move warning: it's deliberately used in tests
|
||||
INCLUDE(EnableCXXFlagIfSupported)
|
||||
ENABLE_CXX_FLAG_IF_SUPPORTED(-Wno-self-move)
|
||||
INCLUDE(AppendCXXFlagIfSupported)
|
||||
APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-self-move CMAKE_CXX_FLAGS)
|
||||
|
||||
ADD_DEFINITIONS(-DTESTDATA_DIR="${PROJECT_SOURCE_DIR}/testdata")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user