diff --git a/cmake/ACGCompiler.cmake b/cmake/ACGCompiler.cmake index 140803f6..2b13da80 100644 --- a/cmake/ACGCompiler.cmake +++ b/cmake/ACGCompiler.cmake @@ -19,7 +19,7 @@ if ( WIN32 ) list(APPEND ADDITIONAL_CMAKE_EXE_LINKER_FLAGS "/LARGEADDRESSAWARE" ) list(APPEND ADDITIONAL_CMAKE_SHARED_LINKER_FLAGS "/LARGEADDRESSAWARE" ) list(APPEND ADDITIONAL_CMAKE_MODULE_LINKER_FLAGS "/LARGEADDRESSAWARE" ) - endif() + endif() endif() @@ -45,10 +45,12 @@ endif( WIN32 ) if (UNIX) + set ( ADDITIONAL_CXX_FLAGS ) set ( ADDITIONAL_CXX_DEBUG_FLAGS ) set ( ADDITIONAL_CXX_RELEASE_FLAGS ) set ( ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS ) + set ( ADDITIONAL_C_FLAGS ) set ( ADDITIONAL_C_DEBUG_FLAGS ) set ( ADDITIONAL_C_RELEASE_FLAGS ) set ( ADDITIONAL_C_RELWITHDEBINFO_FLAGS ) @@ -58,19 +60,13 @@ if (UNIX) ################################################################################ # add our standard flags for Template inclusion - list(APPEND ADDITIONAL_CXX_DEBUG_FLAGS "-DINCLUDE_TEMPLATES" ) - list(APPEND ADDITIONAL_CXX_RELEASE_FLAGS "-DINCLUDE_TEMPLATES" ) - list(APPEND ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS "-DINCLUDE_TEMPLATES" ) + list(APPEND ADDITIONAL_CXX_FLAGS "-DINCLUDE_TEMPLATES" ) + list(APPEND ADDITIONAL_C_FLAGS "-DINCLUDE_TEMPLATES" ) - # add our standard flags for Template inclusion - list(APPEND ADDITIONAL_C_DEBUG_FLAGS "-DINCLUDE_TEMPLATES" ) - list(APPEND ADDITIONAL_C_RELEASE_FLAGS "-DINCLUDE_TEMPLATES" ) - list(APPEND ADDITIONAL_C_RELWITHDEBINFO_FLAGS "-DINCLUDE_TEMPLATES" ) - ################################################################################ # OS Defines ################################################################################ - + if (APPLE) add_definitions( -DARCH_DARWIN ) endif() @@ -91,7 +87,7 @@ if (UNIX) ################################################################################ # Warnings ################################################################################ - + # Add the standard compiler warnings if ( NOT COMPILER_WARNINGS ) @@ -104,18 +100,27 @@ if (UNIX) set ( COMPILER_WARNINGS "" CACHE STRINGLIST "This list contains the warning flags used during compilation " ) ELSE () set ( COMPILER_WARNINGS "-W" "-Wall" "-Wno-unused" "-Wextra" "-Wno-variadic-macros" CACHE STRINGLIST "This list contains the warning flags used during compilation " ) - ENDIF() + ENDIF() endif ( NOT COMPILER_WARNINGS ) - list(APPEND ADDITIONAL_CXX_DEBUG_FLAGS ${COMPILER_WARNINGS} ) - list(APPEND ADDITIONAL_CXX_RELEASE_FLAGS ${COMPILER_WARNINGS} ) - list(APPEND ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS ${COMPILER_WARNINGS} ) - - list(APPEND ADDITIONAL_C_DEBUG_FLAGS ${COMPILER_WARNINGS} ) - list(APPEND ADDITIONAL_C_RELEASE_FLAGS ${COMPILER_WARNINGS} ) - list(APPEND ADDITIONAL_C_RELWITHDEBINFO_FLAGS ${COMPILER_WARNINGS} ) - + list(APPEND ADDITIONAL_CXX_FLAGS ${COMPILER_WARNINGS} ) + list(APPEND ADDITIONAL_C_FLAGS ${COMPILER_WARNINGS} ) + + + if ("${CMAKE_CXX_COMPILER}" MATCHES ".*clang.*") + list(APPEND ADDITIONAL_CXX_FLAGS "-Weverything") +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-c++98-compat") +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-padded") +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-old-style-cast") +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-documentation-unknown-command") +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-unreachable-code-return") + # enable later: +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-sign-conversion") +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-deprecated") +# list(APPEND ADDITIONAL_CXX_FLAGS "-Wno-weak-vtables") + endif() + ################################################################################ # STL Vector checks ################################################################################ @@ -147,43 +152,49 @@ if (UNIX) ################################################################################ # Add the debug flags - foreach( flag ${ADDITIONAL_CXX_DEBUG_FLAGS} ) - if( NOT CMAKE_CXX_FLAGS_DEBUG MATCHES "${flag}" ) + foreach( flag ${ADDITIONAL_CXX_FLAGS} ${ADDITIONAL_CXX_DEBUG_FLAGS} ) + list (FIND ${CMAKE_CXX_FLAGS_DEBUG} ${flag} _index) + if (${_index} EQUAL -1) set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${flag} ") endif() endforeach() # Add the release flags - foreach( flag ${ADDITIONAL_CXX_RELEASE_FLAGS} ) - if( NOT CMAKE_CXX_FLAGS_RELEASE MATCHES "${flag}" ) + foreach( flag ${ADDITIONAL_CXX_FLAGS} ${ADDITIONAL_CXX_RELEASE_FLAGS} ) + list (FIND ${CMAKE_CXX_FLAGS_RELEASE} ${flag} _index) + if (${_index} EQUAL -1) set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${flag} ") endif() endforeach() # Add the release with debug info flags - foreach( flag ${ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS} ) - if( NOT CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "${flag}" ) + foreach( flag ${ADDITIONAL_CXX_FLAGS} ${ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS} ) + list (FIND ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${flag} _index) + if (${_index} EQUAL -1) set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${flag} ") endif() endforeach() # Add the debug flags - foreach( flag ${ADDITIONAL_C_DEBUG_FLAGS} ) - if( NOT CMAKE_C_FLAGS_DEBUG MATCHES "${flag}" ) + foreach( flag ${ADDITIONAL_C_FLAGS} ${ADDITIONAL_C_DEBUG_FLAGS} ) + list (FIND ${CMAKE_C_FLAGS_DEBUG} ${flag} _index) + if (${_index} EQUAL -1) set( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${flag} ") endif() endforeach() # Add the release flags - foreach( flag ${ADDITIONAL_C_RELEASE_FLAGS} ) - if( NOT CMAKE_C_FLAGS_RELEASE MATCHES "${flag}" ) + foreach( flag ${ADDITIONAL_C_FLAGS} ${ADDITIONAL_C_RELEASE_FLAGS} ) + list (FIND ${CMAKE_C_FLAGS_RELEASE} ${flag} _index) + if (${_index} EQUAL -1) set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${flag} ") endif() endforeach() # Add the release with debug info flags - foreach( flag ${ADDITIONAL_C_RELWITHDEBINFO_FLAGS} ) - if( NOT CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES "${flag}" ) + foreach( flag ${ADDITIONAL_C_FLAGS} ${ADDITIONAL_C_RELWITHDEBINFO_FLAGS} ) + list (FIND ${CMAKE_C_FLAGS_RELWITHDEBINFO} ${flag} _index) + if (${_index} EQUAL -1) set( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${flag} ") endif() endforeach()