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 )
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 ( )
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 )
2010-05-06 09:59:35 +00:00
set ( ADDITIONAL_CXX_DEBUG_FLAGS )
set ( ADDITIONAL_CXX_RELEASE_FLAGS )
set ( ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS )
set ( ADDITIONAL_C_DEBUG_FLAGS )
set ( ADDITIONAL_C_RELEASE_FLAGS )
set ( ADDITIONAL_C_RELWITHDEBINFO_FLAGS )
################################################################################
# Defaults
################################################################################
# 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" )
# 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" )
# Increase the template depth as this might be exceeded from time to time
IF ( NOT CMAKE_SYSTEM MATCHES "SunOS*" )
list ( APPEND ADDITIONAL_CXX_DEBUG_FLAGS "-ftemplate-depth-100" )
list ( APPEND ADDITIONAL_CXX_RELEASE_FLAGS "-ftemplate-depth-100" )
list ( APPEND ADDITIONAL_CXX_RELWITHDEBINFO_FLAGS "-ftemplate-depth-100" )
ENDIF ( )
################################################################################
# OS Defines
################################################################################
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
################################################################################
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
set ( COMPILER_WARNINGS "-W" "-Wall" "-Wno-unused" "-Wextra" "-Wno-non-virtual-dtor" "-Wno-unused-parameter" CACHE STRINGLIST "This list contains the warning flags used during compilation " )
ELSEIF ( CMAKE_SYSTEM MATCHES "SunOS*" )
set ( COMPILER_WARNINGS "" CACHE STRINGLIST "This list contains the warning flags used during compilation " )
ELSE ( )
set ( COMPILER_WARNINGS "-W" "-Wall" "-Wno-unused" "-Wextra" CACHE STRINGLIST "This list contains the warning flags used during compilation " )
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 } )
2010-05-06 09:59:35 +00:00
2012-06-21 14:33:21 +00:00
list ( APPEND ADDITIONAL_C_DEBUG_FLAGS ${ COMPILER_WARNINGS } )
list ( APPEND ADDITIONAL_C_RELEASE_FLAGS ${ COMPILER_WARNINGS } )
list ( APPEND ADDITIONAL_C_RELWITHDEBINFO_FLAGS ${ COMPILER_WARNINGS } )
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 )
# Add a flag to check stl vectors in debugging mode
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" )
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" )
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
foreach ( flag ${ ADDITIONAL_CXX_DEBUG_FLAGS } )
if ( NOT CMAKE_CXX_FLAGS_DEBUG MATCHES "${flag}" )
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}" )
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}" )
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}" )
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}" )
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}" )
set ( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${flag} " )
endif ( )
endforeach ( )
#TODO : Test and remove it?!
IF ( CMAKE_SYSTEM MATCHES "SunOS*" )
set ( CMAKE_CFLAGS_RELEASE "-xO3" )
set ( CMAKE_CXX_FLAGS_RELEASE "-xO3" )
endif ( CMAKE_SYSTEM MATCHES "SunOS*" )
2009-05-01 21:17:01 +00:00
endif ( )