mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-27 03:21:15 +00:00
51 lines
2.4 KiB
CMake
51 lines
2.4 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
include(ResolveKeyboard)
|
|
include(ValidateJson)
|
|
|
|
set(QMK_KEYBOARDS_FOLDER "${CMAKE_SOURCE_DIR}/keyboards")
|
|
set(CMAKE_MESSAGE_INDENT "")
|
|
|
|
resolve_keyboard(${QMK_KEYBOARD_FOLDER} KEYBOARD_FOLDER_ABS)
|
|
validate_json(${KEYBOARD_FOLDER_ABS}/info.json keyboard JSON_STR)
|
|
cmake_path(IS_PREFIX QMK_KEYBOARDS_FOLDER "${KEYBOARD_FOLDER_ABS}" IS_KEYBOARDS_FOLDER)
|
|
|
|
file(WRITE "${CMAKE_SOURCE_DIR}/build/keyboard_keymaps" "")
|
|
if(${IS_KEYBOARDS_FOLDER})
|
|
file(RELATIVE_PATH RELATIVE_KEYBOARD_FOLDER ${QMK_KEYBOARDS_FOLDER} ${KEYBOARD_FOLDER_ABS})
|
|
while(NOT ${RELATIVE_KEYBOARD_FOLDER} STREQUAL "")
|
|
file(GLOB KEYMAPS "${QMK_KEYBOARDS_FOLDER}/${RELATIVE_KEYBOARD_FOLDER}/keymaps/*/keymap.c")
|
|
foreach(KEYMAP ${KEYMAPS})
|
|
file(RELATIVE_PATH KEYMAP_C "${QMK_KEYBOARDS_FOLDER}/${RELATIVE_KEYBOARD_FOLDER}/keymaps" "${KEYMAP}")
|
|
get_filename_component(KEYMAP_FOLDER ${KEYMAP_C} DIRECTORY)
|
|
# message(STATUS "${KEYMAP_FOLDER}")
|
|
file(APPEND "${CMAKE_SOURCE_DIR}/build/keyboard_keymaps" "${KEYMAP_FOLDER}\n")
|
|
endforeach()
|
|
get_filename_component(RELATIVE_KEYBOARD_FOLDER ${RELATIVE_KEYBOARD_FOLDER} DIRECTORY)
|
|
endwhile()
|
|
else()
|
|
if(EXISTS "${KEYBOARD_FOLDER_ABS}/keymap.c")
|
|
set(${KEYMAP_C_STR} "${KEYBOARD_FOLDER_ABS}/keymap.c" PARENT_SCOPE)
|
|
elseif(EXISTS "${KEYBOARD_FOLDER_ABS}/keymaps/${KEYMAP_FOLDER}/keymap.c")
|
|
set(${KEYMAP_C_STR} "${KEYBOARD_FOLDER_ABS}/keymaps/${KEYMAP_FOLDER}/keymap.c" PARENT_SCOPE)
|
|
endif()
|
|
endif()
|
|
|
|
string(JSON COMMUNITY_LAYOUTS ERROR_VARIABLE NO_COMMUNITY_LAYOUTS GET ${JSON_STR} community_layouts)
|
|
|
|
if(${NO_COMMUNITY_LAYOUTS} STREQUAL "NOTFOUND")
|
|
string(JSON NUM_LAYOUTS LENGTH ${COMMUNITY_LAYOUTS})
|
|
math(EXPR MAX "${NUM_LAYOUTS} - 1")
|
|
foreach(IDX RANGE ${MAX})
|
|
string(JSON LAYOUT GET ${COMMUNITY_LAYOUTS} ${IDX})
|
|
file(GLOB KEYMAPS "${CMAKE_SOURCE_DIR}/layouts/community/${LAYOUT}/*/keymap.c")
|
|
foreach(KEYMAP ${KEYMAPS})
|
|
file(RELATIVE_PATH KEYMAP_C "${CMAKE_SOURCE_DIR}/layouts/community/${LAYOUT}" "${KEYMAP}")
|
|
get_filename_component(KEYMAP_FOLDER ${KEYMAP_C} DIRECTORY)
|
|
# message(STATUS "${KEYMAP_FOLDER}")
|
|
file(APPEND "${CMAKE_SOURCE_DIR}/build/keyboard_keymaps" "${KEYMAP_FOLDER}\n")
|
|
endforeach()
|
|
endforeach()
|
|
endif() |