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