reactos/dll/keyboard/CMakeLists.txt
2021-01-05 17:48:53 +03:00

123 lines
2.4 KiB
CMake

list(APPEND _keyboard_layouts
kbda1
kbda2
kbda3
kbdal
kbdarme
kbdarmw
kbdaze
kbdazel
kbdbe
kbdbga
kbdbgm
kbdbgt
kbdblr
kbdbr
kbdbur
kbdcan
kbdcr
kbdcz
kbdcz1
kbdda
kbddv
kbdeo
kbdes
kbdest
kbdfc
kbdfi
kbdfr
kbdgeo
kbdgerg
kbdgneo
kbdgr
kbdgrist
kbdhe
kbdheb
kbdhu
kbdic
kbdinasa
kbdinben
kbdindev
kbdinguj
kbdinmal
kbdir
kbdit
kbdja
kbdkaz
kbdko
kbdla
kbdlt1
kbdlv
kbdmac
kbdne
kbdno
kbdpl
kbdpl1
kbdpo
kbdro
kbdrost
kbdru
kbdru1
kbdsf
kbdsg
kbdsk
kbdsk1
kbdsw
kbdtat
kbdth0
kbdth1
kbdth2
kbdth3
kbdtuf
kbdtuq
kbduk
kbdur
kbdurs
kbdus
kbdusa
kbdusl
kbdusr
kbdusx
kbduzb
kbdvntc
kbdycc
kbdycl)
foreach(_keyboard_layout ${_keyboard_layouts})
spec2def(${_keyboard_layout}.dll ${_keyboard_layout}/${_keyboard_layout}.spec)
add_library(${_keyboard_layout} MODULE
${_keyboard_layout}/${_keyboard_layout}.c
${_keyboard_layout}/${_keyboard_layout}.rc
${CMAKE_CURRENT_BINARY_DIR}/${_keyboard_layout}.def)
target_include_directories(${_keyboard_layout} PRIVATE ${REACTOS_SOURCE_DIR}/ntoskrnl/include)
set_entrypoint(${_keyboard_layout} 0)
set_image_base(${_keyboard_layout} 0x5FFF0000)
set_subsystem(${_keyboard_layout} native)
if(MSVC)
# Merge the .text and .rdata section into the .data section
add_target_link_flags(${_keyboard_layout} "/ignore:4254 /SECTION:.data,ER /MERGE:.text=.data /MERGE:.rdata=.data /MERGE:.bss=.data /MERGE:.edata=.data")
else()
# Use a custom linker script
add_target_link_flags(${_keyboard_layout} "-Wl,-T,${CMAKE_CURRENT_SOURCE_DIR}/kbdlayout.lds")
# Avoid "universal character names are only valid in C++ and C99" error.
set_property(TARGET ${_keyboard_layout} PROPERTY C_STANDARD 99)
endif()
# dynamic analysis switches
if(STACK_PROTECTOR)
target_compile_options(${_keyboard_layout} PRIVATE -fno-stack-protector)
endif()
if(RUNTIME_CHECKS)
target_link_libraries(${_keyboard_layout} runtmchk)
endif()
add_dependencies(${_keyboard_layout} psdk)
add_cd_file(TARGET ${_keyboard_layout} DESTINATION reactos/system32 FOR all)
endforeach()