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