https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f5bace8536ef75d796cf6…
commit f5bace8536ef75d796cf684cb0d6cd2de7b0f46c
Author: Jérôme Gardou <jerome.gardou(a)reactos.org>
AuthorDate: Tue Mar 23 09:54:46 2021 +0100
Commit: Jérôme Gardou <zefklop(a)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()