mirror of
https://github.com/qmk/qmk_firmware.git
synced 2026-09-07 10:53:17 +02:00
98 lines
2.7 KiB
CMake
98 lines
2.7 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
include(UpdateSubmodule)
|
|
include(ResolveKeyboard)
|
|
include(ValidateJson)
|
|
include(ProcessKeyboard)
|
|
|
|
set(QMK_KEYBOARDS_FOLDER "${CMAKE_SOURCE_DIR}/keyboards")
|
|
|
|
function(_get_all_cmake_targets out_var current_dir)
|
|
get_property(targets DIRECTORY ${current_dir} PROPERTY BUILDSYSTEM_TARGETS)
|
|
get_property(subdirs DIRECTORY ${current_dir} PROPERTY SUBDIRECTORIES)
|
|
|
|
foreach(subdir ${subdirs})
|
|
_get_all_cmake_targets(subdir_targets ${subdir})
|
|
list(APPEND targets ${subdir_targets})
|
|
endforeach()
|
|
|
|
set(${out_var} ${targets} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
if(NOT DEFINED QMK_KEYBOARD)
|
|
# configure step - populate targets
|
|
project(qmk_firmware)
|
|
|
|
add_subdirectory(keyboards)
|
|
|
|
else()
|
|
# build step
|
|
if(NOT DEFINED QMK_KEYMAP_FOLDER)
|
|
set(QMK_KEYMAP_FOLDER "default")
|
|
endif()
|
|
|
|
resolve_keyboard(${QMK_KEYBOARD_FOLDER} QMK_KEYBOARD_FOLDER_ABS)
|
|
cmake_path(IS_PREFIX QMK_KEYBOARDS_FOLDER "${QMK_KEYBOARD_FOLDER_ABS}" IS_KEYBOARDS_FOLDER)
|
|
resolve_config_h(${QMK_KEYBOARD_FOLDER_ABS} QMK_KEYBOARD_CONFIG_H)
|
|
process_keyboard()
|
|
resolve_keyboard_h(${QMK_KEYBOARD_FOLDER_ABS} QMK_KEYBOARD_H)
|
|
resolve_keymap_c(${QMK_KEYBOARD_FOLDER_ABS} ${QMK_KEYMAP_FOLDER} QMK_KEYMAP_C)
|
|
|
|
message(STATUS "config.h: ${QMK_KEYBOARD_CONFIG_H}")
|
|
message(STATUS "keyboard.h: ${QMK_KEYBOARD_H}")
|
|
message(STATUS "keymap.c: ${QMK_KEYMAP_C}")
|
|
|
|
|
|
project(${QMK_KEYBOARD}
|
|
LANGUAGES C CXX ASM
|
|
HOMEPAGE_URL ${URL}
|
|
VERSION ${DEVICE_VER})
|
|
|
|
# add_compile_options(
|
|
# -include ${QMK_KEYBOARD_CONFIG_H}
|
|
# )
|
|
add_compile_definitions(
|
|
QMK_KEYBOARD_H="${QMK_KEYBOARD_H}"
|
|
KEYBOARD_${QMK_KEYBOARD}
|
|
KEYMAP_C="${QMK_KEYMAP_C}"
|
|
MATRIX_ROWS=8
|
|
MATRIX_COLS=6
|
|
)
|
|
|
|
if(DEFINED DIODE_DIRECTION)
|
|
add_compile_definitions(DIODE_DIRECTION=${DIODE_DIRECTION})
|
|
endif()
|
|
|
|
include_directories(${CMAKE_SOURCE_DIR})
|
|
|
|
# if(EXISTS ${QMK_KEYBOARD_FOLDER_ABS}/CMakeLists.txt)
|
|
# add_subdirectory(${QMK_KEYBOARD_FOLDER_ABS})
|
|
# else()
|
|
file(GLOB KEYBOARD_SRC "${QMK_KEYBOARD_FOLDER_ABS}/*.c")
|
|
list(REMOVE_ITEM KEYBOARD_SRC "${QMK_KEYMAP_C}")
|
|
add_qmk_executable(${TARGET_NAME} ${KEYBOARD_SRC})
|
|
|
|
# endif()
|
|
# add_library(qmk)
|
|
|
|
target_precompile_headers(qmk PUBLIC
|
|
${QMK_KEYBOARD_CONFIG_H}
|
|
)
|
|
|
|
resolve_keyboard_includes(${QMK_KEYBOARD_FOLDER_ABS})
|
|
|
|
add_subdirectory(quantum)
|
|
add_subdirectory(platforms)
|
|
add_subdirectory(tmk_core/protocol)
|
|
|
|
include(features/oled)
|
|
include(features/backlight)
|
|
include(features/eeprom)
|
|
include(features/matrix)
|
|
include(features/fnv)
|
|
endif()
|