mirror of
https://github.com/reactos/reactos.git
synced 2024-11-18 13:01:40 +00:00
23373acbb9
There is no need to compile our DLLs as shared libraries since we are managing symbols exports and imports through spec files. On my system, this reduces the configure-time by a factor of two.
120 lines
2.3 KiB
CMake
120 lines
2.3 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
|
|
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()
|
|
|
|
if (STACK_PROTECTOR)
|
|
target_link_libraries(${_keyboard_layout} gcc_ssp)
|
|
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()
|