https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f5bace8536ef75d796cf68...
commit f5bace8536ef75d796cf684cb0d6cd2de7b0f46c Author: Jérôme Gardou jerome.gardou@reactos.org AuthorDate: Tue Mar 23 09:54:46 2021 +0100 Commit: Jérôme Gardou zefklop@users.noreply.github.com CommitDate: Tue Mar 23 11:18:43 2021 +0100
[CMAKE] Move toolchain specific handling to set_module_type_toolchain
+ style fixes --- sdk/cmake/CMakeMacros.cmake | 10 +--------- sdk/cmake/gcc.cmake | 10 +++++++++- sdk/cmake/msvc.cmake | 5 ++++- 3 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/sdk/cmake/CMakeMacros.cmake b/sdk/cmake/CMakeMacros.cmake index 9df6eb608e2..537a045f6cd 100644 --- a/sdk/cmake/CMakeMacros.cmake +++ b/sdk/cmake/CMakeMacros.cmake @@ -574,14 +574,6 @@ function(set_module_type MODULE TYPE) set_subsystem(${MODULE} windows) endif()
- # Set the PE image version numbers from the NT OS version ReactOS is based on - if(MSVC) - target_link_options(${MODULE} PRIVATE "/VERSION:5.01") - else() - target_link_options(${MODULE} PRIVATE - -Wl,--major-image-version,5 -Wl,--minor-image-version,01 -Wl,--major-os-version,5 -Wl,--minor-os-version,01) - endif() - # Set unicode definitions if(__module_UNICODE) target_compile_definitions(${MODULE} PRIVATE UNICODE _UNICODE) @@ -643,7 +635,7 @@ function(set_module_type MODULE TYPE) endif() endif()
- if (TYPE STREQUAL kernel) + if(TYPE STREQUAL kernel) # Kernels are executables with exports set_property(TARGET ${MODULE} PROPERTY ENABLE_EXPORTS TRUE) set_target_properties(${MODULE} PROPERTIES DEFINE_SYMBOL "") diff --git a/sdk/cmake/gcc.cmake b/sdk/cmake/gcc.cmake index cd9585dc6cf..1b5604b6ccb 100644 --- a/sdk/cmake/gcc.cmake +++ b/sdk/cmake/gcc.cmake @@ -280,13 +280,20 @@ function(set_image_base MODULE IMAGE_BASE) endfunction()
function(set_module_type_toolchain MODULE TYPE) - if (TYPE IN_LIST KERNEL_MODULE_TYPES) + # Set the PE image version numbers from the NT OS version ReactOS is based on + target_link_options(${MODULE} PRIVATE + -Wl,--major-image-version,5 -Wl,--minor-image-version,01 -Wl,--major-os-version,5 -Wl,--minor-os-version,01) + + if(TYPE IN_LIST KERNEL_MODULE_TYPES) target_link_options(${MODULE} PRIVATE -Wl,--exclude-all-symbols,-file-alignment=0x1000,-section-alignment=0x1000) + if(${TYPE} STREQUAL "wdmdriver") target_link_options(${MODULE} PRIVATE "-Wl,--wdmdriver") endif() + # Place INIT &.rsrc section at the tail of the module, before .reloc add_linker_script(${MODULE} ${REACTOS_SOURCE_DIR}/sdk/cmake/init-section.lds) + # Fixup section characteristics # - Remove flags that LD overzealously puts (alignment flag, Initialized flags for code sections) # - INIT section is made discardable @@ -294,6 +301,7 @@ function(set_module_type_toolchain MODULE TYPE) # - PAGE & .edata sections are made pageable. add_custom_command(TARGET ${MODULE} POST_BUILD COMMAND native-pefixup --${TYPE} $<TARGET_FILE:${MODULE}>) + # Believe it or not, cmake doesn't do that set_property(TARGET ${MODULE} APPEND PROPERTY LINK_DEPENDS $<TARGET_PROPERTY:native-pefixup,IMPORTED_LOCATION>) endif() diff --git a/sdk/cmake/msvc.cmake b/sdk/cmake/msvc.cmake index fd716b96266..43a2c8a7fdc 100644 --- a/sdk/cmake/msvc.cmake +++ b/sdk/cmake/msvc.cmake @@ -249,6 +249,9 @@ function(set_image_base MODULE IMAGE_BASE) endfunction()
function(set_module_type_toolchain MODULE TYPE) + # Set the PE image version numbers from the NT OS version ReactOS is based on + target_link_options(${MODULE} PRIVATE "/VERSION:5.01") + if((TYPE STREQUAL win32dll) OR (TYPE STREQUAL win32ocx) OR (TYPE STREQUAL cpl)) target_link_options(${MODULE} PRIVATE /DLL) elseif(TYPE IN_LIST KERNEL_MODULE_TYPES) @@ -261,7 +264,7 @@ function(set_module_type_toolchain MODULE TYPE) target_link_options(${MODULE} PRIVATE /DRIVER:WDM) elseif (TYPE STREQUAL kernel) # Mark .rsrc section as non-disposable non-pageable, as bugcheck code needs to access it - target_link_options(${MODULE} PRIVATE /SECTION:.rsrc,!DP ) + target_link_options(${MODULE} PRIVATE /SECTION:.rsrc,!DP) endif() endif()