[DLL:KEYBOARD] Add Romanian Standard Keyboard layout. (#861)
[reactos.git] / dll / keyboard / CMakeLists.txt
index 445de43..6c84084 100644 (file)
 
-add_subdirectory(kbda1)
-add_subdirectory(kbda2)
-add_subdirectory(kbda3)
-add_subdirectory(kbdal)
-add_subdirectory(kbdarme)
-add_subdirectory(kbdarmw)
-add_subdirectory(kbdaze)
-add_subdirectory(kbdazel)
-add_subdirectory(kbdbe)
-add_subdirectory(kbdbga)
-add_subdirectory(kbdbgm)
-add_subdirectory(kbdbgt)
-add_subdirectory(kbdblr)
-add_subdirectory(kbdbr)
-add_subdirectory(kbdbur)
-add_subdirectory(kbdcan)
-add_subdirectory(kbdcr)
-add_subdirectory(kbdcz)
-add_subdirectory(kbdcz1)
-add_subdirectory(kbdda)
-add_subdirectory(kbddv)
-add_subdirectory(kbdes)
-add_subdirectory(kbdest)
-add_subdirectory(kbdfc)
-add_subdirectory(kbdfi)
-add_subdirectory(kbdfr)
-add_subdirectory(kbdgeo)
-add_subdirectory(kbdgerg)
-add_subdirectory(kbdgneo)
-add_subdirectory(kbdgr)
-add_subdirectory(kbdgrist)
-add_subdirectory(kbdhe)
-add_subdirectory(kbdheb)
-add_subdirectory(kbdhu)
-add_subdirectory(kbdic)
-add_subdirectory(kbdinasa)
-add_subdirectory(kbdinben)
-add_subdirectory(kbdindev)
-add_subdirectory(kbdinguj)
-add_subdirectory(kbdinmal)
-add_subdirectory(kbdir)
-add_subdirectory(kbdit)
-add_subdirectory(kbdja)
-add_subdirectory(kbdkaz)
-add_subdirectory(kbdko)
-add_subdirectory(kbdla)
-add_subdirectory(kbdlt1)
-add_subdirectory(kbdlv)
-add_subdirectory(kbdmac)
-add_subdirectory(kbdne)
-add_subdirectory(kbdno)
-add_subdirectory(kbdpl)
-add_subdirectory(kbdpl1)
-add_subdirectory(kbdpo)
-add_subdirectory(kbdro)
-add_subdirectory(kbdru)
-add_subdirectory(kbdru1)
-add_subdirectory(kbdsg)
-add_subdirectory(kbdsk)
-add_subdirectory(kbdsk1)
-add_subdirectory(kbdsw)
-add_subdirectory(kbdtat)
-add_subdirectory(kbdth0)
-add_subdirectory(kbdth1)
-add_subdirectory(kbdth2)
-add_subdirectory(kbdth3)
-add_subdirectory(kbdtuf)
-add_subdirectory(kbdtuq)
-add_subdirectory(kbduk)
-add_subdirectory(kbdur)
-add_subdirectory(kbdurs)
-add_subdirectory(kbdus)
-add_subdirectory(kbdusa)
-add_subdirectory(kbdusl)
-add_subdirectory(kbdusr)
-add_subdirectory(kbdusx)
-add_subdirectory(kbduzb)
-add_subdirectory(kbdvntc)
-add_subdirectory(kbdycc)
-add_subdirectory(kbdycl)
+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} SHARED
+        ${_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")
+    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()