unknown state

This commit is contained in:
Jack Humbert
2023-04-03 21:02:40 -04:00
parent 4d999378d0
commit 40a3a431ef
16 changed files with 185 additions and 45 deletions
+1 -1
View File
@@ -2,4 +2,4 @@ add_library(platforms suspend.c synchronization_util.c timer.c)
target_include_directories(platforms PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(platforms PUBLIC quantum)
add_subdirectory(${CMAKE_SYSTEM_PROCESSOR})
add_subdirectory(${QMK_PLATFORM})
+6 -1
View File
@@ -1,10 +1,15 @@
add_compile_options(
-mmcu=${QMK_MCU}
)
add_link_options(
-mmcu=${QMK_MCU}
)
add_library(platforms_avr
hardware_id.c
platform.c
suspend.c
timer.c
printf.c
xprintf.S
bootloaders/bootloadhid.c
)
target_include_directories(platforms_avr PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
-168
View File
@@ -1,168 +0,0 @@
#
# AVR GCC Toolchain file
#
# @author Natesh Narain
# @since Feb 06 2016
set(TRIPLE "avr")
if(UNIX)
set(OS_SUFFIX "")
elseif(WIN32)
set(OS_SUFFIX ".exe")
endif()
# include(FindAVRToolchain)
# find_avr_toolchain()
# setup the AVR compiler variables
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR avr)
set(CMAKE_CROSS_COMPILING 1)
set(CMAKE_MAKE_PROGRAM "${MAKE_ROOT}/make${OS_SUFFIX}" CACHE PATH "make" FORCE)
set(CMAKE_C_COMPILER "${TOOLCHAIN_ROOT}/${TRIPLE}-gcc${OS_SUFFIX}" CACHE PATH "gcc" FORCE)
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_ROOT}/${TRIPLE}-g++${OS_SUFFIX}" CACHE PATH "g++" FORCE)
set(CMAKE_AR "${TOOLCHAIN_ROOT}/${TRIPLE}-ar${OS_SUFFIX}" CACHE PATH "ar" FORCE)
set(CMAKE_AS "${TOOLCHAIN_ROOT}/${TRIPLE}-as${OS_SUFFIX}" CACHE PATH "as" FORCE)
set(CMAKE_LINKER "${TOOLCHAIN_ROOT}/${TRIPLE}-ld${OS_SUFFIX}" CACHE PATH "linker" FORCE)
set(CMAKE_NM "${TOOLCHAIN_ROOT}/${TRIPLE}-nm${OS_SUFFIX}" CACHE PATH "nm" FORCE)
set(CMAKE_OBJCOPY "${TOOLCHAIN_ROOT}/${TRIPLE}-objcopy${OS_SUFFIX}" CACHE PATH "objcopy" FORCE)
set(CMAKE_OBJDUMP "${TOOLCHAIN_ROOT}/${TRIPLE}-objdump${OS_SUFFIX}" CACHE PATH "objdump" FORCE)
set(CMAKE_STRIP "${TOOLCHAIN_ROOT}/${TRIPLE}-strip${OS_SUFFIX}" CACHE PATH "strip" FORCE)
set(CMAKE_RANLIB "${TOOLCHAIN_ROOT}/${TRIPLE}-ranlib${OS_SUFFIX}" CACHE PATH "ranlib" FORCE)
set(AVR_SIZE "${TOOLCHAIN_ROOT}/${TRIPLE}-size${OS_SUFFIX}" CACHE PATH "size" FORCE)
# set(CMAKE_EXE_LINKER_FLAGS "-L /usr/lib/gcc/avr/4.8.2")
# avr uploader config
find_program(AVR_UPLOAD
NAME
avrdude
PATHS
/usr/bin/
$ENV{AVR_ROOT}
)
# setup the avr exectable macro
# set(AVR_LINKER_LIBS "-lc -lm -lgcc -Wl,-lprintf_flt -Wl,-u,vfprintf")
add_compile_options(
$<$<COMPILE_LANGUAGE:C>:-std=gnu11>
$<$<COMPILE_LANGUAGE:CXX>:-std=gnu++14>
# -flto
-Os
-Wall
-Wstrict-prototypes
-fcommon
# -g
$<$<BOOL:${WIN32}>:--param=min-pagesize=0>
-funsigned-char
-funsigned-bitfields
-ffunction-sections
-fdata-sections
-fpack-struct
-fshort-enums
-mcall-prologues
-fno-builtin-printf
$<$<COMPILE_LANGUAGE:C>:-fno-inline-small-functions>
$<$<COMPILE_LANGUAGE:C>:-fno-strict-aliasing>
$<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>
)
add_compile_definitions(
F_CPU=16000000
F_USB=16000000UL
__AVR_ATmega32U4__
# LTO_ENABLE
)
# include_directories("C:/Users/Jack/Downloads/avr-gcc-12.1.0-x64-windows/avr/include")
macro(add_qmk_executable target_name)
# add_subdirectory(${CMAKE_SOURCE_DIR}/platforms/avr platforms/avr)
# add_subdirectory(${CMAKE_SOURCE_DIR}/tmk_core/protocol/lufa tmk_core/protocol/lufa)
set(elf_file ${target_name}-${QMK_MCU}.elf)
set(map_file ${target_name}-${QMK_MCU}.map)
set(hex_file ${target_name}-${QMK_MCU}.hex)
set(lst_file ${target_name}-${QMK_MCU}.lst)
add_link_options(-Wl,--gc-sections,-Map=${map_file})
# create elf file
add_executable(${elf_file}
${ARGN}
)
target_link_libraries(${elf_file}
PUBLIC
quantum
tmk_core_protocol
tmk_core_protocol_lufa
platforms
platforms_avr
)
# set_target_properties(
# ${elf_file}
# PROPERTIES
# COMPILE_FLAGS "-mmcu=${QMK_MCU} -g -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics"
# LINK_FLAGS "-mmcu=${QMK_MCU} -Wl,-Map,${map_file}"
# )
# generate the lst file
add_custom_command(
OUTPUT ${lst_file}
COMMAND
${CMAKE_OBJDUMP} -h -S ${elf_file} > ${lst_file}
DEPENDS ${elf_file}
)
# create hex file
add_custom_command(
OUTPUT ${hex_file}
COMMAND
${CMAKE_OBJCOPY} -j .text -j .data -O ihex ${elf_file} ${hex_file}
DEPENDS ${elf_file}
)
add_custom_command(
OUTPUT "print-size-${elf_file}"
COMMAND
${AVR_SIZE} ${elf_file}
DEPENDS ${elf_file}
)
add_custom_command(
OUTPUT "print-size-${hex_file}"
COMMAND
${AVR_SIZE} ${hex_file}
DEPENDS ${hex_file}
)
# build the intel hex file for the device
add_custom_target(
${target_name}
ALL
DEPENDS ${hex_file} ${lst_file} "print-size-${elf_file}" "print-size-${hex_file}"
)
set_target_properties(
${target_name}
PROPERTIES
OUTPUT_NAME ${elf_file}
)
endmacro(add_qmk_executable)
+3
View File
@@ -0,0 +1,3 @@
add_link_options(
-mcpu=${QMK_MCU}
)
-146
View File
@@ -1,146 +0,0 @@
set(TRIPLE "arm-none-eabi")
if(UNIX)
set(OS_SUFFIX "")
elseif(WIN32)
set(OS_SUFFIX ".exe")
endif()
# include(FindARMToolchain)
# find_arm_toolchain()
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_CROSS_COMPILING 1)
set(CMAKE_MAKE_PROGRAM "${MAKE_ROOT}/make${OS_SUFFIX}" CACHE PATH "make" FORCE)
set(CMAKE_C_COMPILER "${TOOLCHAIN_ROOT}/${TRIPLE}-gcc${OS_SUFFIX}" CACHE PATH "gcc" FORCE)
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_ROOT}/${TRIPLE}-g++${OS_SUFFIX}" CACHE PATH "g++" FORCE)
set(CMAKE_AR "${TOOLCHAIN_ROOT}/${TRIPLE}-ar${OS_SUFFIX}" CACHE PATH "ar" FORCE)
set(CMAKE_AS "${TOOLCHAIN_ROOT}/${TRIPLE}-as${OS_SUFFIX}" CACHE PATH "as" FORCE)
set(CMAKE_LINKER "${TOOLCHAIN_ROOT}/${TRIPLE}-ld${OS_SUFFIX}" CACHE PATH "linker" FORCE)
set(CMAKE_NM "${TOOLCHAIN_ROOT}/${TRIPLE}-nm${OS_SUFFIX}" CACHE PATH "nm" FORCE)
set(CMAKE_OBJCOPY "${TOOLCHAIN_ROOT}/${TRIPLE}-objcopy${OS_SUFFIX}" CACHE PATH "objcopy" FORCE)
set(CMAKE_OBJDUMP "${TOOLCHAIN_ROOT}/${TRIPLE}-objdump${OS_SUFFIX}" CACHE PATH "objdump" FORCE)
set(CMAKE_STRIP "${TOOLCHAIN_ROOT}/${TRIPLE}-strip${OS_SUFFIX}" CACHE PATH "strip" FORCE)
set(CMAKE_RANLIB "${TOOLCHAIN_ROOT}/${TRIPLE}-ranlib${OS_SUFFIX}" CACHE PATH "ranlib" FORCE)
set(AVR_SIZE "${TOOLCHAIN_ROOT}/${TRIPLE}-size${OS_SUFFIX}" CACHE PATH "size" FORCE)
add_compile_options(
$<$<COMPILE_LANGUAGE:C>:-std=gnu11>
$<$<COMPILE_LANGUAGE:CXX>:-std=gnu++14>
# -flto
-Os
-Wall
-Wstrict-prototypes
# -fcommon
# -g
-fomit-frame-pointer
-ffunction-sections
-fdata-sections
-fno-common
-fshort-wchar
-fno-builtin-printf
# -funsigned-char
# -funsigned-bitfields
# -ffunction-sections
# -fdata-sections
# -fpack-struct
# -fshort-enums
# -fno-builtin-printf
# $<$<COMPILE_LANGUAGE:C>:-fno-inline-small-functions>
# $<$<COMPILE_LANGUAGE:C>:-fno-strict-aliasing>
# $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>
)
add_compile_definitions(
# F_CPU=16000000
# F_USB=16000000UL
# __AVR_ATmega32U4__
# LTO_ENABLE
)
add_link_options(--specs=nosys.specs)
# include_directories("C:/Users/Jack/Downloads/avr-gcc-12.1.0-x64-windows/avr/include")
macro(add_qmk_executable target_name)
set(elf_file ${target_name}-${QMK_MCU}.elf)
set(map_file ${target_name}-${QMK_MCU}.map)
set(hex_file ${target_name}-${QMK_MCU}.hex)
set(lst_file ${target_name}-${QMK_MCU}.lst)
add_link_options(-Wl,--gc-sections,-nostartfiles)
# create elf file
add_executable(${elf_file}
${ARGN}
)
target_link_libraries(${elf_file}
PUBLIC
quantum
tmk_core_protocol
platforms
)
# set_target_properties(
# ${elf_file}
# PROPERTIES
# COMPILE_FLAGS "-mmcu=${QMK_MCU} -g -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics"
# LINK_FLAGS "-mmcu=${QMK_MCU} -Wl,-Map,${map_file}"
# )
# generate the lst file
add_custom_command(
OUTPUT ${lst_file}
COMMAND
${CMAKE_OBJDUMP} -h -S ${elf_file} > ${lst_file}
DEPENDS ${elf_file}
)
# create hex file
add_custom_command(
OUTPUT ${hex_file}
COMMAND
${CMAKE_OBJCOPY} -j .text -j .data -O ihex ${elf_file} ${hex_file}
DEPENDS ${elf_file}
)
add_custom_command(
OUTPUT "print-size-${elf_file}"
COMMAND
${AVR_SIZE} ${elf_file}
DEPENDS ${elf_file}
)
add_custom_command(
OUTPUT "print-size-${hex_file}"
COMMAND
${AVR_SIZE} ${hex_file}
DEPENDS ${hex_file}
)
# build the intel hex file for the device
add_custom_target(
${target_name}
ALL
DEPENDS ${hex_file} ${lst_file} "print-size-${elf_file}" "print-size-${hex_file}"
)
set_target_properties(
${target_name}
PROPERTIES
OUTPUT_NAME ${elf_file}
)
endmacro(add_qmk_executable)