more absolute keyboard/keymap support

This commit is contained in:
Jack Humbert 2023-04-03 13:43:40 -04:00
parent 2ebad0d33f
commit 4d999378d0
2 changed files with 89 additions and 66 deletions

View File

@ -20,6 +20,18 @@ else()
# build step
set(TEMP_PATH ${QMK_KEYBOARD_FOLDER})
cmake_path(IS_RELATIVE TEMP_PATH IS_KEYBOARD_FOLDER_RELATIVE)
if(NOT DEFINED QMK_KEYMAP_FOLDER)
set(QMK_KEYMAP_FOLDER "default")
endif()
set(TEMP_PATH ${QMK_KEYMAP_FOLDER})
cmake_path(IS_RELATIVE TEMP_PATH IS_KEYMAP_FOLDER_RELATIVE)
if(${IS_KEYBOARD_FOLDER_RELATIVE})
set(QMK_KEYBOARD_FOLDER_ABS ${CMAKE_SOURCE_DIR}/keyboards/${QMK_KEYBOARD_FOLDER})
set(QMK_KEYBOARD_CURRENT_FOLDER ${QMK_KEYBOARD_FOLDER})
set(QMK_KEYBOARD_FOLDERS)
set(QMK_KEYBOARD_FOLDER_PARTS)
@ -30,33 +42,6 @@ while(NOT ${QMK_KEYBOARD_CURRENT_FOLDER} STREQUAL "")
get_filename_component(QMK_KEYBOARD_CURRENT_FOLDER ${QMK_KEYBOARD_CURRENT_FOLDER} DIRECTORY)
endwhile()
# would be nice to also do validation here
include(ValidateJSON)
validate_json(keyboards/${QMK_KEYBOARD_FOLDER}/info.json keyboard QMK_KEYBOARD_INFO_JSON_STRING)
string(JSON KEYBOARD_NAME GET ${QMK_KEYBOARD_INFO_JSON_STRING} keyboard_name)
string(JSON MANUFACTURER GET ${QMK_KEYBOARD_INFO_JSON_STRING} manufacturer)
string(JSON URL GET ${QMK_KEYBOARD_INFO_JSON_STRING} url)
string(JSON QMK_MCU GET ${QMK_KEYBOARD_INFO_JSON_STRING} processor)
string(JSON VENDOR_ID GET ${QMK_KEYBOARD_INFO_JSON_STRING} usb vid)
string(JSON PRODUCT_ID GET ${QMK_KEYBOARD_INFO_JSON_STRING} usb pid)
string(JSON DEVICE_VER GET ${QMK_KEYBOARD_INFO_JSON_STRING} usb device_version)
if(NOT DEFINED QMK_KEYMAP_FOLDER)
set(QMK_KEYMAP_FOLDER "default")
endif()
set(TEMP_PATH ${QMK_KEYMAP_FOLDER})
cmake_path(IS_RELATIVE TEMP_PATH IS_KEYMAP_FOLDER_RELATIVE)
if(NOT ${IS_KEYMAP_FOLDER_RELATIVE})
if(EXISTS "${QMK_KEYMAP_FOLDER}/keymap.c")
set(QMK_KEYBOARD_KEYMAP "${QMK_KEYMAP_FOLEDR}/keymap.c")
else()
message(FATAL_ERROR "Could not find keymap.c in keymap folder")
endif()
endif()
foreach(FOLDER ${QMK_KEYBOARD_FOLDERS})
include_directories(${CMAKE_SOURCE_DIR}/keyboards/${FOLDER})
# assuming every keyboard has a config at some level
@ -92,14 +77,52 @@ if(${IS_KEYMAP_FOLDER_RELATIVE})
message(FATAL_ERROR "Keymap not found")
endif()
list(GET QMK_KEYBOARD_KEYMAPS 0 QMK_KEYBOARD_KEYMAP)
else()
if(EXISTS "${QMK_KEYMAP_FOLDER}/keymap.c")
set(QMK_KEYBOARD_KEYMAP "${QMK_KEYMAP_FOLEDR}/keymap.c")
else()
message(FATAL_ERROR "Could not find keymap.c in keymap folder")
endif()
endif()
if(NOT DEFINED QMK_KEYBOARD_HEADERS)
message(FATAL_ERROR "Header not found")
endif()
# list(GET QMK_KEYBOARD_FOLDERS 0 QMK_KEYBOARD_BASE_FOLDER)
list(GET QMK_KEYBOARD_HEADERS -1 QMK_KEYBOARD_HEADER)
else(${IS_KEYBOARD_FOLDER_RELATIVE})
set(QMK_KEYBOARD_FOLDER_ABS ${QMK_KEYBOARD_FOLDER})
if(${IS_KEYMAP_FOLDER_RELATIVE})
if(EXISTS "${QMK_KEYBOARD_FOLDER}/keymaps/${QMK_KEYMAP_FOLDER}/keymap.c")
set(QMK_KEYBOARD_KEYMAP "${QMK_KEYBOARD_FOLDER}/keymaps/{QMK_KEYMAP_FOLDER}/keymap.c")
else()
message(FATAL_ERROR "Could not find keymap in keymap folder '${QMK_KEYMAP_FOLDER}'")
endif()
else()
if(EXISTS "${QMK_KEYMAP_FOLDER}/keymap.c")
set(QMK_KEYBOARD_KEYMAP "{QMK_KEYMAP_FOLDER}/keymap.c")
else()
message(FATAL_ERROR "Could not find keymap in keymap folder '${QMK_KEYMAP_FOLDER}'")
endif()
endif()
if(NOT DEFINED QMK_KEYBOARD_HEADER)
get_filename_component((LAST_PART ${QMK_KEYBOARD_FOLDER}) NAME)
set(QMK_KEYBOARD_HEADER "${LAST_PART}.h")
endif()
endif()
include(ValidateJSON)
validate_json(${QMK_KEYBOARD_FOLDER_ABS}/info.json keyboard QMK_KEYBOARD_INFO_JSON_STRING)
string(JSON KEYBOARD_NAME GET ${QMK_KEYBOARD_INFO_JSON_STRING} keyboard_name)
string(JSON MANUFACTURER GET ${QMK_KEYBOARD_INFO_JSON_STRING} manufacturer)
string(JSON URL GET ${QMK_KEYBOARD_INFO_JSON_STRING} url)
string(JSON QMK_MCU GET ${QMK_KEYBOARD_INFO_JSON_STRING} processor)
string(JSON VENDOR_ID GET ${QMK_KEYBOARD_INFO_JSON_STRING} usb vid)
string(JSON PRODUCT_ID GET ${QMK_KEYBOARD_INFO_JSON_STRING} usb pid)
string(JSON DEVICE_VER GET ${QMK_KEYBOARD_INFO_JSON_STRING} usb device_version)
project(${QMK_KEYBOARD}
LANGUAGES C CXX ASM

View File

@ -52,10 +52,10 @@ macro(add_keyboard KEYBOARD_FOLDER KEYMAP_FOLDER)
endif()
if(${IS_KEYBOARD_FOLDER_RELATIVE})
string(REPLACE "/" "_" KEYBOARD_NAME ${KEYBOARD_FOLDER})
string(MAKE_C_IDENTIFIER ${KEYBOARD_FOLDER} KEYBOARD_NAME)
else()
string(JSON KEYBOARD_NAME GET ${JSON_STRING} keyboard_name)
string(REPLACE " " "_" KEYBOARD_NAME ${KEYBOARD_NAME})
string(MAKE_C_IDENTIFIER ${KEYBOARD_NAME} KEYBOARD_NAME)
endif()
ExternalProject_Add(${KEYBOARD_NAME}_${KEYMAP_NAME}