mirror of
https://github.com/osiweb/unified_retro_keyboard.git
synced 2025-02-06 15:30:39 +00:00
Streamline build and add more processor variants
- CMakeLists.txt, src/CMakeLists.txt: user ARCH for the actual processor, and ARCH_FAMILY to specify the arch_*.[ch] files. - generic-gcc-avr.cmake: fix optimizations to O1 or O0 - make-targets.sh: simplify cmake invocation, eliminate mkdir+cd, instead use cmake flags to specify directory names and source dir.
This commit is contained in:
parent
27f2616d22
commit
ca8cff670a
@ -4,23 +4,60 @@ set(KEYMAPFILE keymaps.txt)
|
||||
|
||||
# Set up the toolchain and other architecture specific details
|
||||
|
||||
if(ARCH MATCHES atmega328p)
|
||||
message(STATUS "setting up for atmega328p")
|
||||
set(AVF_H_FUSE 0xd9)
|
||||
set(ARCH_FAMILY_ATMEGA328P atmega328p)
|
||||
set(ARCH_FAMILY_ATMEGA2560 atmega2560)
|
||||
|
||||
if(ARCH MATCHES atmega328p OR ARCH MATCHES atmega168p OR ARCH MATCHES atmega88p)
|
||||
set(FUSE_NOTES "Setting up for ${ARCH}: \n\n\
|
||||
Fuses: EXTENDED = 0xFF, HIGH = 0xdf, LOW = 0xd2\n\n\
|
||||
Brownout detect level: 111 (disabled) \n\
|
||||
Debug Wire (DWEN): 0 (disabled) \n\
|
||||
SPIEN: 1 (enabled) \n\
|
||||
Watchdog (WDTON): 0 (disabled) \n\
|
||||
Save EEPROM (EESAVE): 0 (disabled) \n\
|
||||
Boot section / size (BOOTZ): 11 (size=128[88p,168p]/256[328p])) \n\
|
||||
Boot Reset Vector (BOOTRST): 0 (disabled) \n\
|
||||
Divide Clock by 8 (CKDIV8): 0 (disabled) \n\
|
||||
Clock out B0 (CKOUT) 0 (disabled) \n\
|
||||
Clock select (CKSEL3:0): 0010 (Ext Crystal 8.0 MHz) \n\
|
||||
Startup time (SUT): 01 (4.1 ms)\n\n")
|
||||
|
||||
set(AVR_X_FUSE 0xff)
|
||||
set(AVR_H_FUSE 0xdf)
|
||||
set(AVR_L_FUSE 0xd2)
|
||||
|
||||
set(AVR_MCU ${ARCH})
|
||||
|
||||
set(ARCH_FAMILY ${ARCH_FAMILY_ATMEGA328P})
|
||||
set(ARCH_TYPE AVR)
|
||||
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/generic-gcc-avr.cmake)
|
||||
set (PROJECT_OUT_TARGET ${PROJECT_TARGET}.elf)
|
||||
set (FINAL_TARGET ${TARGET}.elf)
|
||||
|
||||
elseif(ARCH MATCHES atmega2560)
|
||||
message(STATUS "setting up for atmega2560")
|
||||
set(AVF_H_FUSE 0x99)
|
||||
elseif(ARCH MATCHES atmega640 OR ARCH MATCHES atmega1280 OR ARCH MATCHES atmega2560)
|
||||
set(FUSE_NOTES "Setting up for ${ARCH}: \n\n\
|
||||
Fuses: EXTENDED = 0xFD, HIGH = 0x98, LOW = 0xFD\n\n\
|
||||
Brownout detect level: 111 (disabled) \n\
|
||||
On-chip Debug (OCD): 0 (disabled) \n\
|
||||
JTAGEN: 1 (enabled) \n\
|
||||
SPIEN: 1 (enabled) \n\
|
||||
Watchdog (WDTON): 0 (disabled) \n\
|
||||
Save EEPROM (EESAVE): 0 (disabled) \n\
|
||||
Boot section / size (BOOTZ): 00 (size=4096/start=$1F000) \n\
|
||||
Boot Reset Vector (BOOTRST): 0 (enabled) \n\
|
||||
Divide Clock by 8 (CKDIV8): 0 (disabled) \n\
|
||||
Clock out E7 (CKOUT) 0 (disabled) \n\
|
||||
Clock select (CKSEL0:3): 0111 (Full Swing Osc.) \n\
|
||||
Startup time (SUT): 10 (4.1 ms)\n\n")
|
||||
|
||||
set(AVR_X_FUSE 0xff)
|
||||
set(AVR_H_FUSE 0x99)
|
||||
set(AVR_L_FUSE 0xe7)
|
||||
|
||||
set(AVR_MCU ${ARCH})
|
||||
set(ARCH_FAMILY ${ARCH_FAMILY_ATMEGA2560})
|
||||
set(ARCH_TYPE AVR)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/generic-gcc-avr.cmake)
|
||||
set (PROJECT_OUT_TARGET ${PROJECT_TARGET}.elf)
|
||||
set (FINAL_TARGET ${TARGET}.elf)
|
||||
|
||||
endif()
|
||||
|
||||
@ -46,7 +83,7 @@ set (PROJECT_EXECUTABLE_TARGET_NAME ${PROJECT_TARGET_NAME})
|
||||
if(ARCH MATCHES test)
|
||||
add_subdirectory(test)
|
||||
else()
|
||||
if((ARCH MATCHES atmega328p) OR (ARCH MATCHES atmega2560))
|
||||
if(ARCH_TYPE MATCHES AVR)
|
||||
set (PROJECT_EXECUTABLE_TARGET_NAME ${PROJECT_TARGET_NAME}.elf)
|
||||
|
||||
function(custom_add_library EXECUTABLE_NAME)
|
||||
|
@ -50,6 +50,15 @@ set(CMAKE_SYSTEM_PROCESSOR avr)
|
||||
set(CMAKE_C_COMPILER ${AVR_CC})
|
||||
set(CMAKE_CXX_COMPILER ${AVR_CXX})
|
||||
|
||||
#Flags used by the C compiler during DEBUG builds.
|
||||
set(CMAKE_C_FLAGS_DEBUG "-O0 -g")
|
||||
#Flags used by the C compiler during MINSIZEREL builds.
|
||||
set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
|
||||
#Flags used by the C compiler during RELEASE builds.
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O1 -DNDEBUG")
|
||||
#Flags used by the C compiler during RELWITHDEBINFO builds.
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O1 -g -DNDEBUG")
|
||||
|
||||
##########################################################################
|
||||
# c_toolchain_flags
|
||||
# - Adds a list of compiler-specific flags to the CFLAGS variable in the
|
||||
@ -68,7 +77,6 @@ function(c_toolchain_flags)
|
||||
-fdata-sections
|
||||
-fpack-struct
|
||||
-fshort-enums
|
||||
-O2
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wpointer-arith
|
||||
@ -106,8 +114,8 @@ endmacro(optimization_off)
|
||||
|
||||
|
||||
macro(optimization_full)
|
||||
set(CMAKE_CFLAGS_RELEASE "-O3" "-NDEBUG")
|
||||
set(CMAKE_CFLAGS "-O3" "-NDEBUG")
|
||||
set(CMAKE_CFLAGS_RELEASE "-O1" "-NDEBUG")
|
||||
set(CMAKE_CFLAGS "-O1" "-NDEBUG")
|
||||
endmacro(optimization_full)
|
||||
|
||||
##########################################################################
|
||||
|
@ -16,7 +16,11 @@ add_valid_target() {
|
||||
|
||||
add_valid_target test
|
||||
add_valid_target atmega328p
|
||||
add_valid_target atmega168p
|
||||
add_valid_target atmega88p
|
||||
add_valid_target atmega2560
|
||||
add_valid_target atmega1280
|
||||
add_valid_target atmega640
|
||||
|
||||
|
||||
check_valid_target() {
|
||||
@ -58,17 +62,9 @@ build_arch() {
|
||||
local target_arch="$1"
|
||||
local hardware_sig="$2"
|
||||
|
||||
if [[ ! -d "build-$target_arch" ]]
|
||||
then
|
||||
mkdir "build-$target_arch"
|
||||
fi
|
||||
cmake -S . -B "build-$target_arch" -G "$GENERATOR" -DCMAKE_INSTALL_PREFIX=".." -DARCH="$target_arch" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_TYPE"
|
||||
|
||||
if [[ -d "build-$target_arch" ]]
|
||||
then
|
||||
(cd "build-$target_arch" \
|
||||
&& cmake -G "$GENERATOR" -DCMAKE_INSTALL_PREFIX=".." -DARCH="$target_arch" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" ..)
|
||||
fi
|
||||
}
|
||||
|
||||
deploy_arch() {
|
||||
|
@ -46,8 +46,8 @@ message("**********************\n\n")
|
||||
|
||||
set (PROJECT_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
configure_file(${PROJECT_SRC_DIR}/Arch/asdf_arch_${ARCH}.h ${CMAKE_CURRENT_BINARY_DIR}/asdf_arch.h COPYONLY)
|
||||
configure_file(${PROJECT_SRC_DIR}/Arch/asdf_arch_${ARCH}.c ${CMAKE_CURRENT_BINARY_DIR}/asdf_arch.c COPYONLY)
|
||||
configure_file(${PROJECT_SRC_DIR}/Arch/asdf_arch_${ARCH_FAMILY}.h ${CMAKE_CURRENT_BINARY_DIR}/asdf_arch.h COPYONLY)
|
||||
configure_file(${PROJECT_SRC_DIR}/Arch/asdf_arch_${ARCH_FAMILY}.c ${CMAKE_CURRENT_BINARY_DIR}/asdf_arch.c COPYONLY)
|
||||
configure_file(${PROJECT_SRC_DIR}/asdf_keymap_setup.c.in ${CMAKE_CURRENT_BINARY_DIR}/asdf_keymap_setup.c)
|
||||
configure_file(${PROJECT_SRC_DIR}/asdf_keymap_setup.h.in ${CMAKE_CURRENT_BINARY_DIR}/asdf_keymap_setup.h)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user