2009-05-01 21:17:01 +00:00
################################################################################
# Custom settings for compiler flags and similar
################################################################################
2012-06-21 14:33:21 +00:00
if ( WIN32 )
################################################################################
# Windows large memory support
################################################################################
if ( NOT DEFINED WINDOWS_LARGE_MEMORY_SUPPORT )
set ( WINDOWS_LARGE_MEMORY_SUPPORT true CACHE BOOL "Enable or disable binary support for large memory" )
endif ( )
set ( ADDITIONAL_CMAKE_EXE_LINKER_FLAGS )
set ( ADDITIONAL_CMAKE_SHARED_LINKER_FLAGS )
set ( ADDITIONAL_CMAKE_MODULE_LINKER_FLAGS )
if ( WINDOWS_LARGE_MEMORY_SUPPORT )
2016-05-09 11:15:25 +02:00
if ( MSVC )
2013-09-30 09:14:53 +00:00
list ( APPEND ADDITIONAL_CMAKE_EXE_LINKER_FLAGS "/LARGEADDRESSAWARE" )
list ( APPEND ADDITIONAL_CMAKE_SHARED_LINKER_FLAGS "/LARGEADDRESSAWARE" )
list ( APPEND ADDITIONAL_CMAKE_MODULE_LINKER_FLAGS "/LARGEADDRESSAWARE" )
2019-05-28 11:05:05 +02:00
endif ( )
2012-06-21 14:33:21 +00:00
endif ( )
foreach ( flag ${ ADDITIONAL_CMAKE_EXE_LINKER_FLAGS } )
if ( NOT CMAKE_EXE_LINKER_FLAGS MATCHES "${flag}" )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flag} " )
endif ( )
endforeach ( )
foreach ( flag ${ ADDITIONAL_CMAKE_SHARED_LINKER_FLAGS } )
if ( NOT CMAKE_SHARED_LINKER_FLAGS MATCHES "${flag}" )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${flag} " )
endif ( )
endforeach ( )
foreach ( flag ${ ADDITIONAL_CMAKE_MODULE_LINKER_FLAGS } )
if ( NOT CMAKE_MODULE_LINKER_FLAGS MATCHES "${flag}" )
set ( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${flag} " )
endif ( )
endforeach ( )
endif ( WIN32 )
2009-05-01 21:17:01 +00:00
if ( UNIX )
2019-05-28 11:05:05 +02:00
set ( ADDITIONAL_CXX_FLAGS )
2010-05-06 09:59:35 +00:00
set ( ADDITIONAL_CXX_DEBUG_FLAGS )
set ( ADDITIONAL_CXX_RELEASE_FLAGS )
set ( ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS )
2019-05-28 11:05:05 +02:00
set ( ADDITIONAL_C_FLAGS )
2010-05-06 09:59:35 +00:00
set ( ADDITIONAL_C_DEBUG_FLAGS )
set ( ADDITIONAL_C_RELEASE_FLAGS )
set ( ADDITIONAL_C_RELWITHDEBINFO_FLAGS )
################################################################################
# Defaults
################################################################################
# add our standard flags for Template inclusion
2019-05-28 11:05:05 +02:00
list ( APPEND ADDITIONAL_CXX_FLAGS "-DINCLUDE_TEMPLATES" )
list ( APPEND ADDITIONAL_C_FLAGS "-DINCLUDE_TEMPLATES" )
2013-09-30 09:14:53 +00:00
2010-05-06 09:59:35 +00:00
################################################################################
# OS Defines
################################################################################
2019-05-28 11:05:05 +02:00
2009-05-01 21:17:01 +00:00
if ( APPLE )
add_definitions ( -DARCH_DARWIN )
2010-05-06 09:59:35 +00:00
endif ( )
################################################################################
# Build/Release Defines
################################################################################
IF ( NOT CMAKE_SYSTEM MATCHES "SunOS*" )
list ( APPEND ADDITIONAL_CXX_DEBUG_FLAGS "-DDEBUG" )
list ( APPEND ADDITIONAL_CXX_RELEASE_FLAGS "-DNDEBUG" )
list ( APPEND ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS "-DDEBUG" )
list ( APPEND ADDITIONAL_C_DEBUG_FLAGS "-DDEBUG" )
list ( APPEND ADDITIONAL_C_RELEASE_FLAGS "-DNDEBUG" )
list ( APPEND ADDITIONAL_C_RELWITHDEBINFO_FLAGS "-DDEBUG" )
ENDIF ( )
################################################################################
# Warnings
################################################################################
2019-05-28 11:05:05 +02:00
2012-06-21 14:33:21 +00:00
# Add the standard compiler warnings
if ( NOT COMPILER_WARNINGS )
IF ( APPLE )
# Skip unused parameters as it has to be used for the documentation via doxygen and the interfaces
2013-09-30 09:14:53 +00:00
set ( COMPILER_WARNINGS "-W" "-Wall" "-Wno-unused" "-Wextra" "-Wno-non-virtual-dtor" "-Wno-unused-parameter" "-Wno-variadic-macros" CACHE STRINGLIST "This list contains the warning flags used during compilation " )
elseif ( "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" MATCHES ".*clang" )
set ( COMPILER_WARNINGS "-W" "-Wall" "-Wextra" "-Wno-non-virtual-dtor" "-Wno-unused-parameter" "-Wno-variadic-macros" CACHE STRINGLIST "This list contains the warning flags used during compilation " )
2012-06-21 14:33:21 +00:00
ELSEIF ( CMAKE_SYSTEM MATCHES "SunOS*" )
set ( COMPILER_WARNINGS "" CACHE STRINGLIST "This list contains the warning flags used during compilation " )
ELSE ( )
2013-09-30 09:14:53 +00:00
set ( COMPILER_WARNINGS "-W" "-Wall" "-Wno-unused" "-Wextra" "-Wno-variadic-macros" CACHE STRINGLIST "This list contains the warning flags used during compilation " )
2019-05-28 11:05:05 +02:00
ENDIF ( )
2012-06-21 14:33:21 +00:00
endif ( NOT COMPILER_WARNINGS )
2019-05-28 11:05:05 +02:00
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 ( )
2010-05-06 09:59:35 +00:00
################################################################################
# STL Vector checks
################################################################################
# Pre initialize stl vector check variable
if ( NOT STL_VECTOR_CHECKS )
set ( STL_VECTOR_CHECKS false CACHE BOOL "Include full stl vector checks in debug mode (This option is only used in debug Mode!)" )
endif ( NOT STL_VECTOR_CHECKS )
2015-12-03 16:11:45 +01:00
# Add a flag to check stl vectors
2010-05-06 09:59:35 +00:00
if ( STL_VECTOR_CHECKS AND NOT CMAKE_SYSTEM MATCHES "SunOS*" )
list ( APPEND ADDITIONAL_CXX_DEBUG_FLAGS "-D_GLIBCXX_DEBUG" )
list ( APPEND ADDITIONAL_CXX_DEBUG_FLAGS "-D_GLIBCXX_DEBUG_PEDANTIC" )
2015-12-03 16:11:45 +01:00
list ( APPEND ADDITIONAL_CXX_RELEASE_FLAGS "-D_GLIBCXX_DEBUG" )
list ( APPEND ADDITIONAL_CXX_RELEASE_FLAGS "-D_GLIBCXX_DEBUG_PEDANTIC" )
2010-05-06 09:59:35 +00:00
list ( APPEND ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS "-D_GLIBCXX_DEBUG" )
list ( APPEND ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS "-D_GLIBCXX_DEBUG_PEDANTIC" )
list ( APPEND ADDITIONAL_C_DEBUG_FLAGS "-D_GLIBCXX_DEBUG" )
list ( APPEND ADDITIONAL_C_DEBUG_FLAGS "-D_GLIBCXX_DEBUG_PEDANTIC" )
2015-12-03 16:11:45 +01:00
list ( APPEND ADDITIONAL_C_RELEASE_FLAGS "-D_GLIBCXX_DEBUG" )
list ( APPEND ADDITIONAL_C_RELEASE_FLAGS "-D_GLIBCXX_DEBUG_PEDANTIC" )
2010-05-06 09:59:35 +00:00
list ( APPEND ADDITIONAL_C_RELWITHDEBINFO_FLAGS "-D_GLIBCXX_DEBUG" )
list ( APPEND ADDITIONAL_C_RELWITHDEBINFO_FLAGS "-D_GLIBCXX_DEBUG_PEDANTIC" )
endif ( )
################################################################################
# Process the additional flags:
################################################################################
# Add the debug flags
2019-05-28 11:05:05 +02:00
foreach ( flag ${ ADDITIONAL_CXX_FLAGS } ${ ADDITIONAL_CXX_DEBUG_FLAGS } )
list ( FIND ${ CMAKE_CXX_FLAGS_DEBUG } ${ flag } _index )
if ( ${ _index } EQUAL -1 )
2010-05-06 09:59:35 +00:00
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${flag} " )
endif ( )
endforeach ( )
# Add the release flags
2019-05-28 11:05:05 +02:00
foreach ( flag ${ ADDITIONAL_CXX_FLAGS } ${ ADDITIONAL_CXX_RELEASE_FLAGS } )
list ( FIND ${ CMAKE_CXX_FLAGS_RELEASE } ${ flag } _index )
if ( ${ _index } EQUAL -1 )
2010-05-06 09:59:35 +00:00
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${flag} " )
endif ( )
endforeach ( )
# Add the release with debug info flags
2019-05-28 11:05:05 +02:00
foreach ( flag ${ ADDITIONAL_CXX_FLAGS } ${ ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS } )
list ( FIND ${ CMAKE_CXX_FLAGS_RELWITHDEBINFO } ${ flag } _index )
if ( ${ _index } EQUAL -1 )
2010-05-06 09:59:35 +00:00
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${flag} " )
endif ( )
endforeach ( )
# Add the debug flags
2019-05-28 11:05:05 +02:00
foreach ( flag ${ ADDITIONAL_C_FLAGS } ${ ADDITIONAL_C_DEBUG_FLAGS } )
list ( FIND ${ CMAKE_C_FLAGS_DEBUG } ${ flag } _index )
if ( ${ _index } EQUAL -1 )
2010-05-06 09:59:35 +00:00
set ( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${flag} " )
endif ( )
endforeach ( )
# Add the release flags
2019-05-28 11:05:05 +02:00
foreach ( flag ${ ADDITIONAL_C_FLAGS } ${ ADDITIONAL_C_RELEASE_FLAGS } )
list ( FIND ${ CMAKE_C_FLAGS_RELEASE } ${ flag } _index )
if ( ${ _index } EQUAL -1 )
2010-05-06 09:59:35 +00:00
set ( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${flag} " )
endif ( )
endforeach ( )
# Add the release with debug info flags
2019-05-28 11:05:05 +02:00
foreach ( flag ${ ADDITIONAL_C_FLAGS } ${ ADDITIONAL_C_RELWITHDEBINFO_FLAGS } )
list ( FIND ${ CMAKE_C_FLAGS_RELWITHDEBINFO } ${ flag } _index )
if ( ${ _index } EQUAL -1 )
2010-05-06 09:59:35 +00:00
set ( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${flag} " )
endif ( )
endforeach ( )
2009-05-01 21:17:01 +00:00
endif ( )