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