From 9a495487c981774d0cb57478b855d58898c1505b Mon Sep 17 00:00:00 2001 From: Erik Junghanns Date: Wed, 14 Nov 2018 08:14:50 +0100 Subject: [PATCH] * Fixed pedantic compiler flags --- pedantic.cmake | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/pedantic.cmake b/pedantic.cmake index c9dc8ca..562fbd8 100644 --- a/pedantic.cmake +++ b/pedantic.cmake @@ -6,19 +6,45 @@ set ( __PEDANTIC_INCLUDED TRUE ) Include (CheckCCompilerFlag) Include (CheckCXXCompilerFlag) +Macro (__PEDANTIC_INVERT_WNO_FLAG VAR_IN VAR_OUT) + If (${VAR_IN} MATCHES "-Wno") + String (REPLACE "-Wno-" "-W" ${VAR_OUT} ${VAR_IN}) + Else () + Set (${VAR_OUT} ${VAR_IN}) + EndIf () +EndMacro () + +Macro (__PEDANTIC_MAKE_UNIQUE_NAME PREFIX FLAG OUTPUT) + String (REGEX REPLACE "[^0-9a-zA-Z]" "_" TMP_NAME ${FLAG}) + String (SUBSTRING ${TMP_NAME} 1 -1 TMP_NAME) + String (TOUPPER ${TMP_NAME} TMP_NAME) + Set (TMP_NAME "${PREFIX}_${TMP_NAME}") + Set (${OUTPUT} ${TMP_NAME}) +EndMacro () + Macro (__PEDANTIC_CHECK_AND_ADD_C_FLAG FLAG) - CHECK_C_COMPILER_FLAG(${FLAG} TMP) - If (TMP) + __PEDANTIC_MAKE_UNIQUE_NAME("HAVE_C_FLAG" ${FLAG} FLAG_NAME) + __PEDANTIC_INVERT_WNO_FLAG(${FLAG} TEST_FLAG) + Set (OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) + Set (CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${TEST_FLAG} -Werror") + CHECK_CXX_COMPILER_FLAG(${TEST_FLAG} ${FLAG_NAME}) + Set (CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) + If (FLAG_NAME) Set (PEDANTIC_C_FLAGS "${PEDANTIC_C_FLAGS} ${FLAG}") EndIf ( ) -EndMacro() +EndMacro () Macro (__PEDANTIC_CHECK_AND_ADD_CXX_FLAG FLAG) - CHECK_CXX_COMPILER_FLAG(${FLAG} TMP) - If (TMP) + __PEDANTIC_MAKE_UNIQUE_NAME("HAVE_CXX_FLAG" ${FLAG} FLAG_NAME) + __PEDANTIC_INVERT_WNO_FLAG(${FLAG} TEST_FLAG) + Set (OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) + Set (CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${TEST_FLAG} -Werror") + CHECK_CXX_COMPILER_FLAG(${TEST_FLAG} ${FLAG_NAME}) + Set (CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) + If (FLAG_NAME) Set (PEDANTIC_CXX_FLAGS "${PEDANTIC_CXX_FLAGS} ${FLAG}") EndIf ( ) -EndMacro() +EndMacro ( ) Set (PEDANTIC_C_FLAGS "") Set (PEDANTIC_CXX_FLAGS "") @@ -45,6 +71,7 @@ __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wold-style-definition) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Woverlength-strings) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wshadow) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wwrite-strings) +__PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wdocumentation) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-ftemplate-depth=2000) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-g) @@ -66,4 +93,5 @@ __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-pragmas) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-unknown-pragmas) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Woverlength-strings) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wshadow) -__PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wwrite-strings) \ No newline at end of file +__PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wwrite-strings) +__PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wdocumentation) \ No newline at end of file