mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-03-04 10:48:52 +00:00
some relative/abs keymap folder stuff
This commit is contained in:
parent
9ae271c844
commit
d5760d02a6
@ -34,20 +34,38 @@ endwhile()
|
||||
file(READ keyboards/${QMK_KEYBOARD_FOLDER}/info.json 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
|
||||
if(EXISTS ${CMAKE_SOURCE_DIR}/keyboards/${FOLDER}/config.h)
|
||||
list(APPEND QMK_KEYBOARD_CONFIG_HS "${CMAKE_SOURCE_DIR}/keyboards/${FOLDER}/config.h")
|
||||
endif()
|
||||
# assuming every keyboard has a default/keymap.c at some level
|
||||
if(EXISTS ${CMAKE_SOURCE_DIR}/keyboards/${FOLDER}/keymaps/default/keymap.c)
|
||||
list(APPEND QMK_KEYBOARD_KEYMAPS "${CMAKE_SOURCE_DIR}/keyboards/${FOLDER}/keymaps/default/keymap.c")
|
||||
if(${IS_KEYMAP_FOLDER_RELATIVE})
|
||||
# assuming every keyboard has a default/keymap.c at some level
|
||||
if(EXISTS ${CMAKE_SOURCE_DIR}/keyboards/${FOLDER}/keymaps/${QMK_KEYMAP_FOLDER}/keymap.c)
|
||||
list(APPEND QMK_KEYBOARD_KEYMAPS "${CMAKE_SOURCE_DIR}/keyboards/${FOLDER}/keymaps/${QMK_KEYMAP_FOLDER}/keymap.c")
|
||||
endif()
|
||||
endif()
|
||||
get_filename_component(LAST_PART ${FOLDER} NAME)
|
||||
# assuming every keyboard has a header.h at some level
|
||||
@ -67,8 +85,11 @@ foreach(FOLDER ${QMK_KEYBOARD_FOLDERS})
|
||||
# endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED QMK_KEYBOARD_KEYMAPS)
|
||||
message(FATAL_ERROR "Keymap not found")
|
||||
if(${IS_KEYMAP_FOLDER_RELATIVE})
|
||||
if(NOT DEFINED QMK_KEYBOARD_KEYMAPS)
|
||||
message(FATAL_ERROR "Keymap not found")
|
||||
endif()
|
||||
list(GET QMK_KEYBOARD_KEYMAPS 0 QMK_KEYBOARD_KEYMAP)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED QMK_KEYBOARD_HEADERS)
|
||||
@ -76,11 +97,11 @@ if(NOT DEFINED QMK_KEYBOARD_HEADERS)
|
||||
endif()
|
||||
|
||||
# list(GET QMK_KEYBOARD_FOLDERS 0 QMK_KEYBOARD_BASE_FOLDER)
|
||||
list(GET QMK_KEYBOARD_KEYMAPS 0 QMK_KEYBOARD_KEYMAP)
|
||||
list(GET QMK_KEYBOARD_HEADERS -1 QMK_KEYBOARD_HEADER)
|
||||
|
||||
project(${QMK_KEYBOARD}
|
||||
LANGUAGES C CXX ASM
|
||||
HOMEPAGE_URL ${URL}
|
||||
VERSION ${DEVICE_VER})
|
||||
|
||||
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" VERSION_MATCH ${DEVICE_VER})
|
||||
|
@ -1,8 +1,8 @@
|
||||
macro(add_keyboard KEYBOARD_FOLDER)
|
||||
macro(add_keyboard KEYBOARD_FOLDER KEYMAP_FOLDER)
|
||||
# not entirely sure why this is necessary
|
||||
set(TEMP_PATH ${KEYBOARD_FOLDER})
|
||||
cmake_path(IS_RELATIVE TEMP_PATH IS_FOLDER_RELATIVE)
|
||||
if(${IS_FOLDER_RELATIVE})
|
||||
cmake_path(IS_RELATIVE TEMP_PATH IS_KEYBOARD_FOLDER_RELATIVE)
|
||||
if(${IS_KEYBOARD_FOLDER_RELATIVE})
|
||||
set(KEYBOARD_FOLDER_ABS ${CMAKE_SOURCE_DIR}/keyboards/${KEYBOARD_FOLDER})
|
||||
if(NOT EXISTS ${KEYBOARD_FOLDER_ABS})
|
||||
message(FATAL_ERROR "Keyboard does not exist in QMK - try using an absolute path to the keyboard folder")
|
||||
@ -13,6 +13,18 @@ macro(add_keyboard KEYBOARD_FOLDER)
|
||||
message(FATAL_ERROR "Absolute path to keyboard does not exist")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(TEMP_PATH ${KEYMAP_FOLDER})
|
||||
cmake_path(IS_RELATIVE TEMP_PATH IS_KEYMAP_FOLDER_RELATIVE)
|
||||
if(${IS_KEYMAP_FOLDER_RELATIVE})
|
||||
set(KEYMAP_NAME ${KEYMAP_FOLDER})
|
||||
else()
|
||||
if(WIN32)
|
||||
set(KEYMAP_NAME $ENV{USERNAME})
|
||||
else()
|
||||
set(KEYMAP_NAME $ENV{USE})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# find the right toolchain
|
||||
message(STATUS "Reading config from ${KEYBOARD_FOLDER_ABS}/info.json")
|
||||
@ -36,14 +48,14 @@ macro(add_keyboard KEYBOARD_FOLDER)
|
||||
message(FATAL_ERROR "Could not find platform for ${KEYBOARD_FOLDER}")
|
||||
endif()
|
||||
|
||||
if(${IS_FOLDER_RELATIVE})
|
||||
if(${IS_KEYBOARD_FOLDER_RELATIVE})
|
||||
string(REPLACE "/" "_" KEYBOARD_NAME ${KEYBOARD_FOLDER})
|
||||
else()
|
||||
string(JSON KEYBOARD_NAME GET ${JSON_STRING} keyboard_name)
|
||||
string(REPLACE " " "_" KEYBOARD_NAME ${KEYBOARD_NAME})
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(${KEYBOARD_NAME}
|
||||
ExternalProject_Add(${KEYBOARD_NAME}_${KEYMAP_NAME}
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}
|
||||
PREFIX ${CMAKE_SOURCE_DIR}/build/keyboards/${KEYBOARD_FOLDER}
|
||||
TMP_DIR ${CMAKE_SOURCE_DIR}/build/keyboards/${KEYBOARD_FOLDER}/tmp
|
||||
@ -61,5 +73,6 @@ macro(add_keyboard KEYBOARD_FOLDER)
|
||||
-DMAKE_ROOT=${MAKE_ROOT}
|
||||
-DQMK_KEYBOARD=${KEYBOARD_NAME}
|
||||
-DQMK_KEYBOARD_FOLDER=${KEYBOARD_FOLDER}
|
||||
-DQMK_KEYMAP_FOLDER=${KEYMAP_FOLDER}
|
||||
)
|
||||
endmacro(add_keyboard)
|
@ -2,7 +2,10 @@ include(ExternalProject)
|
||||
include(AddKeyboard)
|
||||
|
||||
if(DEFINED QMK_KEYBOARD_FOLDER)
|
||||
add_keyboard(${QMK_KEYBOARD_FOLDER})
|
||||
if(NOT DEFINED QMK_KEYMAP_FOLDER)
|
||||
set(QMK_KEYMAP_FOLDER "default")
|
||||
endif()
|
||||
add_keyboard(${QMK_KEYBOARD_FOLDER} ${QMK_KEYMAP_FOLDER})
|
||||
endif()
|
||||
|
||||
file(GLOB_RECURSE KEYBOARDS **/CMakeLists.txt)
|
||||
@ -10,5 +13,5 @@ file(GLOB_RECURSE KEYBOARDS **/CMakeLists.txt)
|
||||
foreach(KEYBOARD_CMAKE ${KEYBOARDS})
|
||||
get_filename_component(KEYBOARD_FOLDER_ABS "${KEYBOARD_CMAKE}" DIRECTORY)
|
||||
file(RELATIVE_PATH KEYBOARD_FOLDER "${CMAKE_SOURCE_DIR}/keyboards" "${KEYBOARD_FOLDER_ABS}")
|
||||
add_keyboard(${KEYBOARD_FOLDER})
|
||||
add_keyboard(${KEYBOARD_FOLDER} "default")
|
||||
endforeach()
|
Loading…
Reference in New Issue
Block a user