diff --git a/sdk/cmake/CMakeMacros.cmake b/sdk/cmake/CMakeMacros.cmake index 1429580b2ac..2d5628f02a2 100644 --- a/sdk/cmake/CMakeMacros.cmake +++ b/sdk/cmake/CMakeMacros.cmake @@ -540,6 +540,8 @@ function(add_importlibs _module) endforeach() endfunction() +# Some helper lists +list(APPEND KERNEL_MODULE_TYPES kerneldll kernelmodedriver wdmdriver) function(set_module_type MODULE TYPE) cmake_parse_arguments(__module "UNICODE" "IMAGEBASE" "ENTRYPOINT" ${ARGN}) diff --git a/sdk/cmake/gcc.cmake b/sdk/cmake/gcc.cmake index 9f38f811e4d..442422a74dc 100644 --- a/sdk/cmake/gcc.cmake +++ b/sdk/cmake/gcc.cmake @@ -280,13 +280,18 @@ function(set_image_base MODULE IMAGE_BASE) endfunction() function(set_module_type_toolchain MODULE TYPE) - if((${TYPE} STREQUAL "kernelmodedriver") OR (${TYPE} STREQUAL "wdmdriver")) - add_target_link_flags(${MODULE} "-Wl,--exclude-all-symbols,-file-alignment=0x1000,-section-alignment=0x1000") + 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") - add_target_link_flags(${MODULE} "-Wl,--wdmdriver") + target_link_options(${MODULE} PRIVATE "-Wl,--wdmdriver") endif() # Place INIT section at the tail of the module add_linker_script(${MODULE} ${REACTOS_SOURCE_DIR}/sdk/cmake/init-section.lds) + # Fixup section characteristiscs + add_custom_command(TARGET ${MODULE} POST_BUILD + COMMAND native-pefixup --driver $) + # Believe it or not, cmake doesn't do that + set_property(TARGET ${MODULE} APPEND PROPERTY LINK_DEPENDS $) endif() endfunction()