From d7a7f9d9b05c3e3a9728bb1644a556527a721afd Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Fri, 28 Apr 2017 14:24:36 +0300 Subject: CMakeLists.txt updates Strip symbols, link the runtime statically, fix MinGW-w64 builds, etc. --- um/CMakeLists.txt | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'um/CMakeLists.txt') diff --git a/um/CMakeLists.txt b/um/CMakeLists.txt index f7d8b24..0329c45 100644 --- a/um/CMakeLists.txt +++ b/um/CMakeLists.txt @@ -1,4 +1,76 @@ project(windows7_drivers_utils) +get_directory_property(parent_directory PARENT_DIRECTORY) +set(is_root_project $) + +set(WIN7DRV_USE_STATIC_RUNTIME "${is_root_project}" CACHE BOOL "Link the runtime statically") +set(WIN7DRV_STRIP_SYMBOL_TABLE "${is_root_project}" CACHE BOOL "Strip symbol tables") + +if(is_root_project) + if(MSVC) + add_compile_options(/MP /W4) + elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + add_compile_options(-Wall -Wextra -std=c++11) + endif() +endif() + +function(use_static_runtime_msvc target) + target_compile_options("${target}" PRIVATE + $<$:/MTd> + $<$>:/MT>) +endfunction() + +function(use_static_runtime_gcc target) + get_target_property(target_type "${target}" TYPE) + if(target_type STREQUAL EXECUTABLE) + target_link_libraries("${target}" PRIVATE -static) + endif() +endfunction() + +function(use_static_runtime target) + if(MSVC) + use_static_runtime_msvc("${target}") + elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + use_static_runtime_gcc("${target}") + else() + message(WARNING "Unrecognized toolset") + endif() +endfunction() + +function(strip_symbol_table_gcc target) + target_link_libraries("${target}" PRIVATE + $<$,$>:-s>) +endfunction() + +function(strip_symbol_table target) + if(MSVC) + elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + strip_symbol_table_gcc("${target}") + else() + message(WARNING "Unrecognized toolset") + endif() +endfunction() + +macro(add_executable target) + _add_executable(${ARGV}) + if(TARGET "${target}") + if(WIN7DRV_USE_STATIC_RUNTIME) + use_static_runtime("${target}") + endif() + if(WIN7DRV_STRIP_SYMBOL_TABLE) + strip_symbol_table("${target}") + endif() + endif() +endmacro() + +macro(add_library target) + _add_library(${ARGV}) + if(TARGET "${target}") + if(WIN7DRV_USE_STATIC_RUNTIME) + use_static_runtime("${target}") + endif() + endif() +endmacro() + add_subdirectory(service) add_subdirectory(wrappers) -- cgit v1.2.3