Browse Source

one target one target one target

Jack Humbert 3 years ago
parent
commit
c9ca9b9875

+ 1 - 1
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})
 

+ 1 - 1
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)

+ 2 - 3
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()

+ 8 - 3
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()

+ 2 - 4
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)

+ 22 - 0
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()

+ 11 - 6
cmake/toolchains/avr.cmake

@@ -63,8 +63,8 @@ find_program(CMAKE_MAKE_PROGRAM NAME make
 add_compile_options(
     $<$<COMPILE_LANGUAGE:C>:-std=gnu11>
     $<$<COMPILE_LANGUAGE:CXX>:-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}
     )
 

+ 2 - 2
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)

+ 2 - 1
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)