| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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()
|