If ( __PEDANTIC_INCLUDED ) Return ( ) EndIf ( ) 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) __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 () Macro (__PEDANTIC_CHECK_AND_ADD_CXX_FLAG FLAG) __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 ( ) Set (PEDANTIC_C_FLAGS "") Set (PEDANTIC_CXX_FLAGS "") Enable_Language ( C ) Enable_Language ( CXX ) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-g) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wall) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wextra) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wconversion) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Werror) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-unused-parameter) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wbad-function-cast) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wcast-align) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wcast-qual) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wconversion) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wdouble-promotion) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wfloat-equal) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wnested-externs) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-attributes) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-builtin-macro-redefined) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-vla) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-pragmas) __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-unknown-pragmas) __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) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wall) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wextra) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wconversion) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Werror) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-reorder) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-unused-parameter) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wcast-align) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wcast-qual) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wconversion) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wdouble-promotion) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wfloat-equal) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-attributes) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-builtin-macro-redefined) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-vla) __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) __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wdocumentation)