forked from Mirrors/openclonk
CMake: Stop the OC_*_FLAGS song and dance
CMake handles adding un-cached flags properly, so we don't have to force flags into the cache.liquid_container
parent
0abef8dac5
commit
3922e7c5ee
|
@ -45,96 +45,52 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ${PROJECT_FOLDERS})
|
|||
############################################################################
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
set(OC_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
separate_arguments(OC_CXX_FLAGS)
|
||||
set(OC_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
|
||||
separate_arguments(OC_CXX_FLAGS_DEBUG)
|
||||
set(OC_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
|
||||
separate_arguments(OC_EXE_LINKER_FLAGS)
|
||||
set(OC_EXE_LINKER_FLAGS_DEBUG ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
|
||||
separate_arguments(OC_EXE_LINKER_FLAGS_DEBUG)
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG("-std=gnu++14" USE_GCC_STD_14)
|
||||
if(USE_GCC_STD_14)
|
||||
list(APPEND OC_CXX_FLAGS "-std=gnu++14")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
# Disable non-standard conversion from string literal to (nonconst) char*
|
||||
list(APPEND OC_CXX_FLAGS /Zc:strictStrings)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:strictStrings")
|
||||
|
||||
list(APPEND OC_CXX_FLAGS /MP)
|
||||
list(REMOVE_ITEM OC_CXX_FLAGS_DEBUG /Gm)
|
||||
# Enable multi-core builds
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
||||
|
||||
# Activate edit-and-continue
|
||||
list(REMOVE_ITEM OC_CXX_FLAGS_DEBUG /Zi)
|
||||
list(APPEND OC_CXX_FLAGS_DEBUG /ZI /Gy)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} /ZI /Gy")
|
||||
|
||||
# do not link the release CRT in debug builds
|
||||
list(APPEND OC_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRT")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRT")
|
||||
set(HAVE_PRECOMPILED_HEADERS ON CACHE INTERNAL "Compiler supports precompiled headers")
|
||||
|
||||
# Suppress warnings about "non-secure" functions
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS)
|
||||
# Disable warning C4244: 'conversion' conversion from 'type1' to 'type2', possible loss of data
|
||||
list(APPEND OC_CXX_FLAGS "/wd4244")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244")
|
||||
# Disable warning C4267: 'var' : conversion from 'size_t' to 'type', possible loss of data (64 bit build only)
|
||||
list(APPEND OC_CXX_FLAGS "/wd4267")
|
||||
endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
list(APPEND OC_CXX_FLAGS -Wall -Wextra -Wredundant-decls -Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Winit-self -Wsign-promo -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
list(APPEND OC_CXX_FLAGS -Wall -Wextra -Wextra-tokens -Wpointer-arith -Wno-cast-align -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wextra-tokens -Wpointer-arith -Wno-cast-align -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual")
|
||||
elseif(CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wredundant-decls -Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Winit-self -Wsign-promo -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual")
|
||||
endif()
|
||||
|
||||
if(WIN32 AND MINGW)
|
||||
# Activate DEP and ASLR
|
||||
list(APPEND OC_EXE_LINKER_FLAGS -Wl,--nxcompat -Wl,--dynamicbase)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
# Don't put this into CMAKE_CXX_FLAGS because otherwise it is cached,
|
||||
# and when the path is changed both the old and new definition appears
|
||||
# in the list of flags.
|
||||
add_definitions("-DOC_SYSTEM_DATA_DIR=\"${CMAKE_INSTALL_PREFIX}/share/games/openclonk\"")
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
list(APPEND OC_CXX_FLAGS -fobjc-arc)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc")
|
||||
endif()
|
||||
|
||||
if(OC_CXX_FLAGS)
|
||||
list(REMOVE_DUPLICATES OC_CXX_FLAGS)
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS "" CACHE STRING "C++ compiler flags" FORCE)
|
||||
foreach(FLAG ${OC_CXX_FLAGS})
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}" CACHE STRING "C++ compiler flags" FORCE)
|
||||
endforeach()
|
||||
if(OC_CXX_FLAGS_DEBUG)
|
||||
list(REMOVE_DUPLICATES OC_CXX_FLAGS_DEBUG)
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
||||
foreach(FLAG ${OC_CXX_FLAGS_DEBUG})
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${FLAG}" CACHE STRING "Flags used by the compiler during debug builds." FORCE)
|
||||
endforeach()
|
||||
if(OC_EXE_LINKER_FLAGS)
|
||||
list(REMOVE_DUPLICATES OC_EXE_LINKER_FLAGS)
|
||||
endif()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "Flags used by the linker." FORCE)
|
||||
foreach(FLAG ${OC_EXE_LINKER_FLAGS})
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}" CACHE STRING "Flags used by the linker." FORCE)
|
||||
endforeach()
|
||||
if(OC_EXE_LINKER_FLAGS_DEBUG)
|
||||
list(REMOVE_DUPLICATES OC_EXE_LINKER_FLAGS_DEBUG)
|
||||
endif()
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "Flags used by the linker during debug builds." FORCE)
|
||||
foreach(FLAG ${OC_EXE_LINKER_FLAGS_DEBUG})
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FLAG}" CACHE STRING "Flags used by the linker during debug builds." FORCE)
|
||||
endforeach()
|
||||
|
||||
############################################################################
|
||||
# Check for compiler quirks and features
|
||||
############################################################################
|
||||
|
|
Loading…
Reference in New Issue