diff options
Diffstat (limited to 'um')
-rw-r--r-- | um/CMakeLists.txt | 74 | ||||
-rw-r--r-- | um/common.cmake | 75 |
2 files changed, 77 insertions, 72 deletions
diff --git a/um/CMakeLists.txt b/um/CMakeLists.txt index 0329c45..487faab 100644 --- a/um/CMakeLists.txt +++ b/um/CMakeLists.txt @@ -1,76 +1,6 @@ -project(windows7_drivers_utils) +project(win7drv CXX) -get_directory_property(parent_directory PARENT_DIRECTORY) -set(is_root_project $<NOT:parent_directory>) - -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 - $<$<CONFIG:Debug>:/MTd> - $<$<NOT:$<CONFIG:Debug>>:/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 - $<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:-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() +include(common.cmake) add_subdirectory(service) add_subdirectory(wrappers) diff --git a/um/common.cmake b/um/common.cmake new file mode 100644 index 0000000..1bd0c3d --- /dev/null +++ b/um/common.cmake @@ -0,0 +1,75 @@ +get_directory_property(parent_directory PARENT_DIRECTORY) +set(is_root_project $<NOT:parent_directory>) + +set(USE_STATIC_RUNTIME "${is_root_project}" CACHE BOOL "Link the runtime statically") +set(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) + endif() +endif() + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +function(use_static_runtime_msvc target) + target_compile_options("${target}" PRIVATE + $<$<CONFIG:Debug>:/MTd> + $<$<NOT:$<CONFIG:Debug>>:/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 + $<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:-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(USE_STATIC_RUNTIME) + use_static_runtime("${target}") + endif() + if(STRIP_SYMBOL_TABLE) + strip_symbol_table("${target}") + endif() + endif() +endmacro() + +macro(add_library target) + _add_library(${ARGV}) + if(TARGET "${target}") + if(USE_STATIC_RUNTIME) + use_static_runtime("${target}") + endif() + endif() +endmacro() |