From c9ca9b987548758a46e6da50452cc02bb12a7ced Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 4 Apr 2023 13:42:50 -0400 Subject: [PATCH] one target one target one target --- CMakeLists.txt | 2 +- cmake/AddKeyboard.cmake | 2 +- cmake/FindARMToolchain.cmake | 5 ++--- cmake/FindAVRToolchain.cmake | 11 ++++++++--- cmake/Findlufa.cmake | 6 ++---- cmake/GetDfuProgrammer.cmake | 22 ++++++++++++++++++++++ cmake/toolchains/avr.cmake | 17 +++++++++++------ tmk_core/protocol/CMakeLists.txt | 4 ++-- tmk_core/protocol/lufa/CMakeLists.txt | 3 ++- 9 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 cmake/GetDfuProgrammer.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a81084f52a..20cff5cb645 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,7 +101,7 @@ else() add_qmk_executable(${QMK_KEYBOARD} ${KEYBOARD_SRC}) endif() -add_library(qmk) +# add_library(qmk) resolve_keyboard_includes(${QMK_KEYBOARD_FOLDER_ABS}) diff --git a/cmake/AddKeyboard.cmake b/cmake/AddKeyboard.cmake index e2b5ce92a15..2ead7499d20 100644 --- a/cmake/AddKeyboard.cmake +++ b/cmake/AddKeyboard.cmake @@ -71,5 +71,5 @@ macro(add_keyboard KEYBOARD_FOLDER KEYMAP_FOLDER) -DQMK_KEYMAP_FOLDER=${KEYMAP_FOLDER} ) -file(APPEND "${CMAKE_SOURCE_DIR}/build/targets" "${KEYBOARD_SLUG}_${KEYMAP_NAME}|${KEYBOARD_NAME}|${MANUFACTURER}|${KEYBOARD_FOLDER}\n") +file(APPEND "${CMAKE_SOURCE_DIR}/build/targets" "${KEYBOARD_SLUG}_${KEYMAP_NAME}|${KEYBOARD_NAME} with ${KEYMAP_FOLDER}|${KEYBOARD_FOLDER}|Made by: ${MANUFACTURER}\n") endmacro(add_keyboard) \ No newline at end of file diff --git a/cmake/FindARMToolchain.cmake b/cmake/FindARMToolchain.cmake index d0426eb5c8f..0078451c430 100644 --- a/cmake/FindARMToolchain.cmake +++ b/cmake/FindARMToolchain.cmake @@ -1,9 +1,9 @@ macro(find_arm_toolchain) - find_toolchain(arm-none-eabi TOOLCHAIN_ROOT MAKE_ROOT) + find_toolchain(arm-none-eabi TOOLCHAIN_ROOT) if(NOT TOOLCHAIN_ROOT) include(GetARMToolchain) - find_toolchain(arm-none-eabi TOOLCHAIN_ROOT MAKE_ROOT) + find_toolchain(arm-none-eabi TOOLCHAIN_ROOT) endif() if(NOT TOOLCHAIN_ROOT) @@ -11,5 +11,4 @@ macro(find_arm_toolchain) endif() message(STATUS "ARM toolchain found: ${TOOLCHAIN_ROOT}") - message(STATUS "Found make: ${MAKE_ROOT}") endmacro() \ No newline at end of file diff --git a/cmake/FindAVRToolchain.cmake b/cmake/FindAVRToolchain.cmake index c671c50d1b1..bb207e1555a 100644 --- a/cmake/FindAVRToolchain.cmake +++ b/cmake/FindAVRToolchain.cmake @@ -1,9 +1,15 @@ macro(find_avr_toolchain) - find_toolchain(avr TOOLCHAIN_ROOT MAKE_ROOT) + find_toolchain(avr TOOLCHAIN_ROOT) if(NOT TOOLCHAIN_ROOT) include(GetAVRToolchain) - find_toolchain(avr TOOLCHAIN_ROOT MAKE_ROOT) + find_toolchain(avr TOOLCHAIN_ROOT) + endif() + + find_program(DFU_PROGRAMMER NAMES dfu-programmer PATHS ${CMAKE_SOURCE_DIR}/toolchains/dfu-programmer/) + if(${DFU_PROGRAMMER} STREQUAL "DFU_PROGRAMMER-NOTFOUND") + include(GetDfuProgrammer) + find_program(DFU_PROGRAMMER NAMES dfu-programmer PATHS ${CMAKE_SOURCE_DIR}/toolchains/dfu-programmer/) endif() if(NOT TOOLCHAIN_ROOT) @@ -11,5 +17,4 @@ macro(find_avr_toolchain) endif() message(STATUS "AVR toolchain found: ${TOOLCHAIN_ROOT}") - message(STATUS "Found make: ${MAKE_ROOT}") endmacro() \ No newline at end of file diff --git a/cmake/Findlufa.cmake b/cmake/Findlufa.cmake index c6137635943..83912123b3d 100644 --- a/cmake/Findlufa.cmake +++ b/cmake/Findlufa.cmake @@ -2,7 +2,7 @@ include(UpdateSubmodule) update_submodule(lib/lufa) set(LUFA_PATH ${CMAKE_SOURCE_DIR}/lib/lufa) set(LUFA_ROOT_PATH ${LUFA_PATH}/LUFA) -add_library(lufa +target_sources(qmk PUBLIC ${LUFA_ROOT_PATH}/Drivers/USB/Core/${ARCH}/USBController_${ARCH}.c ${LUFA_ROOT_PATH}/Drivers/USB/Core/${ARCH}/USBInterrupt_${ARCH}.c ${LUFA_ROOT_PATH}/Drivers/USB/Core/ConfigDescriptors.c @@ -21,9 +21,7 @@ add_library(lufa ${LUFA_ROOT_PATH}/Drivers/USB/Core/DeviceStandardReq.c ${LUFA_PATH}/LUFA/Drivers/USB/USB.h ) -target_include_directories(lufa PUBLIC ${LUFA_PATH}) - -# target_link_libraries(lufa qmk) +target_include_directories(qmk PUBLIC ${LUFA_PATH}) # target_link_libraries(lufa ${QMK_TARGET}) # target_link_libraries(lufa tmk_core_protocol) # target_link_libraries(lufa tmk_core_protocol_lufa) \ No newline at end of file diff --git a/cmake/GetDfuProgrammer.cmake b/cmake/GetDfuProgrammer.cmake new file mode 100644 index 00000000000..3f1b289e18e --- /dev/null +++ b/cmake/GetDfuProgrammer.cmake @@ -0,0 +1,22 @@ +message("Downloading dfu-programmer") +if(WIN32) +file(DOWNLOAD + https://github.com/dfu-programmer/dfu-programmer/releases/download/v1.0.0/dfu-programmer-x64-1.0.0.7z + ${CMAKE_SOURCE_DIR}/toolchains/downloads/dfu-programmer-x64-1.0.0.7z + SHOW_PROGRESS +) +file(ARCHIVE_EXTRACT + INPUT ${CMAKE_SOURCE_DIR}/toolchains/downloads/dfu-programmer-x64-1.0.0.7z + DESTINATION ${CMAKE_SOURCE_DIR}/toolchains/dfu-programmer/ +) +elseif(UNIX) +file(DOWNLOAD + https://github.com/dfu-programmer/dfu-programmer/releases/download/v1.0.0/dfu-programmer-linux-1.0.0.7z + ${CMAKE_SOURCE_DIR}/toolchains/downloads/dfu-programmer-linux-1.0.0.7z + SHOW_PROGRESS +) +file(ARCHIVE_EXTRACT + INPUT ${CMAKE_SOURCE_DIR}/toolchains/downloads/dfu-programmer-linux-1.0.0.7z + DESTINATION ${CMAKE_SOURCE_DIR}/toolchains/dfu-programmer/ +) +endif() \ No newline at end of file diff --git a/cmake/toolchains/avr.cmake b/cmake/toolchains/avr.cmake index eadf1c88dba..9755e3a771a 100644 --- a/cmake/toolchains/avr.cmake +++ b/cmake/toolchains/avr.cmake @@ -63,8 +63,8 @@ find_program(CMAKE_MAKE_PROGRAM NAME make add_compile_options( $<$:-std=gnu11> $<$:-std=gnu++14> - # -flto - -mrelax + -flto + # -mrelax -Os -Wall -Wstrict-prototypes @@ -88,7 +88,7 @@ add_compile_definitions( F_CPU=16000000 F_USB=16000000UL __AVR_ATmega32U4__ - # LTO_ENABLE + LTO_ENABLE ) add_link_options( @@ -114,9 +114,13 @@ macro(add_qmk_executable target_name) ) # create elf file - add_executable(${QMK_TARGET} ${ARGN}) + add_executable(qmk ${ARGN}) - target_link_libraries(${QMK_TARGET} qmk) + set_target_properties(qmk + PROPERTIES OUTPUT_NAME ${QMK_TARGET} + ) + + # target_link_libraries(${QMK_TARGET} qmk) # set_target_properties(${QMK_TARGET} # PROPERTIES @@ -134,7 +138,8 @@ macro(add_qmk_executable target_name) # create hex file add_custom_command( OUTPUT ${hex_file} - COMMAND ${CMAKE_OBJCOPY} -j .text -j .data -O ihex ${QMK_TARGET} ${hex_file} + # COMMAND ${CMAKE_OBJCOPY} -j .text -j .data -O ihex ${QMK_TARGET} ${hex_file} + COMMAND ${CMAKE_OBJCOPY} -O ihex -R .eeprom -R .fuse -R .lock -R .signature ${QMK_TARGET} ${hex_file} DEPENDS ${QMK_TARGET} ) diff --git a/tmk_core/protocol/CMakeLists.txt b/tmk_core/protocol/CMakeLists.txt index 8a15ad00cb6..86c2afd0dcf 100644 --- a/tmk_core/protocol/CMakeLists.txt +++ b/tmk_core/protocol/CMakeLists.txt @@ -4,11 +4,11 @@ target_sources(qmk PUBLIC usb_device_state.c usb_util.c ) -target_compile_definitions( +# target_compile_definitions( # MOUSE_ENABLED # EXTRAKEY_ENABLE # NKRO_ENABLE -) +# ) target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) # target_link_libraries(tmk_core_protocol ${QMK_TARGET}) # target_link_libraries(tmk_core_protocol quantum) diff --git a/tmk_core/protocol/lufa/CMakeLists.txt b/tmk_core/protocol/lufa/CMakeLists.txt index 7b36900f152..690e5a0abb4 100644 --- a/tmk_core/protocol/lufa/CMakeLists.txt +++ b/tmk_core/protocol/lufa/CMakeLists.txt @@ -20,9 +20,10 @@ target_sources(qmk PUBLIC ) find_package(lufa REQUIRED) +# target_compile_definitions(lufa PUBLIC ${COMPILE_DEFINITIONS}) target_include_directories(qmk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(qmk lufa) +# target_link_libraries(qmk lufa) # target_link_libraries(tmk_core_protocol_lufa ${QMK_TARGET}) # target_link_libraries(tmk_core_protocol_lufa quantum)