2 list(APPEND _keyboard_layouts
87 foreach(_keyboard_layout ${_keyboard_layouts})
88 spec2def(${_keyboard_layout}.dll ${_keyboard_layout}/${_keyboard_layout}.spec)
90 add_library(${_keyboard_layout} MODULE
91 ${_keyboard_layout}/${_keyboard_layout}.c
92 ${_keyboard_layout}/${_keyboard_layout}.rc
93 ${CMAKE_CURRENT_BINARY_DIR}/${_keyboard_layout}.def)
95 target_include_directories(${_keyboard_layout} PRIVATE ${REACTOS_SOURCE_DIR}/ntoskrnl/include)
96 set_entrypoint(${_keyboard_layout} 0)
97 set_image_base(${_keyboard_layout} 0x5FFF0000)
98 set_subsystem(${_keyboard_layout} native)
101 # Merge the .text and .rdata section into the .data section
102 target_link_options(${_keyboard_layout} PRIVATE "/ignore:4254;/SECTION:.data,ER;/MERGE:.text=.data;/MERGE:.rdata=.data;/MERGE:.bss=.data;/MERGE:.edata=.data")
104 # Use a custom linker script
105 target_link_options(${_keyboard_layout} PRIVATE "-Wl,-T,${CMAKE_CURRENT_SOURCE_DIR}/kbdlayout.lds")
107 # Avoid "universal character names are only valid in C++ and C99" error.
108 set_property(TARGET ${_keyboard_layout} PROPERTY C_STANDARD 99)
111 # dynamic analysis switches
113 target_compile_options(${_keyboard_layout} PRIVATE -fno-stack-protector)
117 target_link_libraries(${_keyboard_layout} runtmchk)
120 add_dependencies(${_keyboard_layout} psdk)
121 add_cd_file(TARGET ${_keyboard_layout} DESTINATION reactos/system32 FOR all)