diff --git a/CMakeLists.txt b/CMakeLists.txt index bfbe38378..43f7ef6d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,8 @@ 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) @@ -144,6 +146,11 @@ 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 -Wsign-promo") endif() + +if(WIN32 AND MINGW) + # Activate DEP and ASLR + list(APPEND OC_EXE_LINKER_FLAGS "--nxcompat --dynamicbase") +endif() ############################################################################ # List target source files. Don't directly create a target since we condi- # tionally add more sources depending on configuration options later. @@ -1078,8 +1085,15 @@ set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Flags used by the compiler during deb 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_CXX_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})