mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-08-13 18:12:13 +00:00
Add CMake firmware build system.
This commit is contained in:
29
firmware/chibios/os/hal/hal.cmake
Normal file
29
firmware/chibios/os/hal/hal.cmake
Normal file
@@ -0,0 +1,29 @@
|
||||
# List of all the ChibiOS/RT HAL files, there is no need to remove the files
|
||||
# from this list, you can disable parts of the HAL by editing halconf.h.
|
||||
set(HALSRC
|
||||
${CHIBIOS}/os/hal/src/hal.c
|
||||
${CHIBIOS}/os/hal/src/adc.c
|
||||
${CHIBIOS}/os/hal/src/can.c
|
||||
${CHIBIOS}/os/hal/src/ext.c
|
||||
${CHIBIOS}/os/hal/src/gpt.c
|
||||
${CHIBIOS}/os/hal/src/i2c.c
|
||||
${CHIBIOS}/os/hal/src/icu.c
|
||||
${CHIBIOS}/os/hal/src/mac.c
|
||||
${CHIBIOS}/os/hal/src/mmc_spi.c
|
||||
${CHIBIOS}/os/hal/src/mmcsd.c
|
||||
${CHIBIOS}/os/hal/src/pal.c
|
||||
${CHIBIOS}/os/hal/src/pwm.c
|
||||
${CHIBIOS}/os/hal/src/rtc.c
|
||||
${CHIBIOS}/os/hal/src/sdc.c
|
||||
${CHIBIOS}/os/hal/src/serial.c
|
||||
${CHIBIOS}/os/hal/src/serial_usb.c
|
||||
${CHIBIOS}/os/hal/src/spi.c
|
||||
${CHIBIOS}/os/hal/src/tm.c
|
||||
${CHIBIOS}/os/hal/src/uart.c
|
||||
${CHIBIOS}/os/hal/src/usb.c
|
||||
)
|
||||
|
||||
# Required include directories
|
||||
set(HALINC
|
||||
${CHIBIOS}/os/hal/include
|
||||
)
|
27
firmware/chibios/os/kernel/kernel.cmake
Normal file
27
firmware/chibios/os/kernel/kernel.cmake
Normal file
@@ -0,0 +1,27 @@
|
||||
# List of all the ChibiOS/RT kernel files, there is no need to remove the files
|
||||
# from this list, you can disable parts of the kernel by editing chconf.h.
|
||||
set(KERNSRC
|
||||
${CHIBIOS}/os/kernel/src/chsys.c
|
||||
${CHIBIOS}/os/kernel/src/chdebug.c
|
||||
${CHIBIOS}/os/kernel/src/chlists.c
|
||||
${CHIBIOS}/os/kernel/src/chvt.c
|
||||
${CHIBIOS}/os/kernel/src/chschd.c
|
||||
${CHIBIOS}/os/kernel/src/chthreads.c
|
||||
${CHIBIOS}/os/kernel/src/chdynamic.c
|
||||
${CHIBIOS}/os/kernel/src/chregistry.c
|
||||
${CHIBIOS}/os/kernel/src/chsem.c
|
||||
${CHIBIOS}/os/kernel/src/chmtx.c
|
||||
${CHIBIOS}/os/kernel/src/chcond.c
|
||||
${CHIBIOS}/os/kernel/src/chevents.c
|
||||
${CHIBIOS}/os/kernel/src/chmsg.c
|
||||
${CHIBIOS}/os/kernel/src/chmboxes.c
|
||||
${CHIBIOS}/os/kernel/src/chqueues.c
|
||||
${CHIBIOS}/os/kernel/src/chmemcore.c
|
||||
${CHIBIOS}/os/kernel/src/chheap.c
|
||||
${CHIBIOS}/os/kernel/src/chmempools.c
|
||||
)
|
||||
|
||||
# Required include directories
|
||||
set(KERNINC
|
||||
${CHIBIOS}/os/kernel/include
|
||||
)
|
107
firmware/chibios/os/ports/GCC/ARMCMx/rules.cmake
Normal file
107
firmware/chibios/os/ports/GCC/ARMCMx/rules.cmake
Normal file
@@ -0,0 +1,107 @@
|
||||
# ARM Cortex-Mx common makefile scripts and rules.
|
||||
|
||||
##############################################################################
|
||||
# Processing options coming from the upper Makefile.
|
||||
#
|
||||
|
||||
# Compiler options
|
||||
set(OPT ${USE_OPT})
|
||||
set(COPT ${USE_COPT})
|
||||
set(CPPOPT ${USE_CPPOPT})
|
||||
|
||||
# Garbage collection
|
||||
if(USE_LINK_GC STREQUAL "yes")
|
||||
set(OPT "${OPT} -ffunction-sections -fdata-sections -fno-common")
|
||||
set(LDOPT ",--gc-sections")
|
||||
else()
|
||||
set(LDOPT)
|
||||
endif()
|
||||
|
||||
# Linker extra options
|
||||
if(DEFINED USE_LDOPT)
|
||||
set(LDOPT "${LDOPT},${USE_LDOPT}")
|
||||
endif()
|
||||
|
||||
# Link time optimizations
|
||||
if(USE_LTO STREQUAL "yes")
|
||||
set(OPT "${OPT} -flto")
|
||||
endif()
|
||||
|
||||
# FPU-related options
|
||||
if(NOT DEFINED USE_FPU)
|
||||
set(USE_FPU no)
|
||||
endif()
|
||||
if(NOT USE_FPU STREQUAL "no")
|
||||
set(OPT "${OPT} -mfloat-abi=${USE_FPU} -mfpu=fpv4-sp-d16 -fsingle-precision-constant")
|
||||
set(DDEFS ${DDEFS} -DCORTEX_USE_FPU=TRUE)
|
||||
set(DADEFS ${DADEFS} -DCORTEX_USE_FPU=TRUE)
|
||||
else()
|
||||
set(DDEFS ${DDEFS} -DCORTEX_USE_FPU=FALSE)
|
||||
set(DADEFS ${DADEFS} -DCORTEX_USE_FPU=FALSE)
|
||||
endif()
|
||||
|
||||
# Source files groups and paths
|
||||
if(USE_THUMB STREQUAL "yes")
|
||||
set(TCSRC ${TCSRC} ${CSRC})
|
||||
set(TCPPSRC ${TCPPSRC} ${CPPSRC})
|
||||
else()
|
||||
set(ACSRC ${ACSRC} ${CSRC})
|
||||
set(ACPPSRC ${ACPPSRC} ${CPPSRC})
|
||||
endif()
|
||||
set(ASRC ${ACSRC} ${ACPPSRC})
|
||||
set(TSRC ${TCSRC} ${TCPPSRC})
|
||||
|
||||
# Paths
|
||||
set(IINCDIR ${INCDIR} ${DINCDIR} ${UINCDIR})
|
||||
set(LLIBDIR ${DLIBDIR} ${ULIBDIR})
|
||||
|
||||
# Macros
|
||||
set(DEFS ${DDEFS} ${UDEFS})
|
||||
set(ADEFS ${DADEFS} ${UADEFS})
|
||||
|
||||
# Libs
|
||||
set(LIBS ${DLIBS} ${ULIBS})
|
||||
|
||||
# Various settings
|
||||
set(MCFLAGS -mcpu=${MCU})
|
||||
set(ODFLAGS "-x --syms")
|
||||
set(ASFLAGS "${MCFLAGS} ${ADEFS}")
|
||||
set(ASXFLAGS "${MCFLAGS} ${ADEFS}")
|
||||
set(CFLAGS "${MCFLAGS} ${OPT} ${COPT} ${CWARN}")
|
||||
set(CPPFLAGS "${MCFLAGS} ${OPT} ${CPPOPT} ${CPPWARN}")
|
||||
set(LDFLAGS "-nostartfiles -Wl,-Map=${PROJECT_NAME}.map,--cref,--no-warn-mismatch,--library-path=${RULESPATH},--script=${LDSCRIPT}${LDOPT}")
|
||||
|
||||
# Thumb interwork enabled only if needed because it kills performance.
|
||||
if(DEFINED TSRC)
|
||||
set(CFLAGS "${CFLAGS}")
|
||||
set(CPPFLAGS "${CPPFLAGS}")
|
||||
set(ASFLAGS "${ASFLAGS}")
|
||||
set(DEFS ${DEFS} -DTHUMB_PRESENT)
|
||||
set(ADEFS ${ADEFS} -DTHUMB_PRESENT)
|
||||
if(DEFINED ASRC)
|
||||
# Mixed ARM and THUMB mode.
|
||||
set(CFLAGS "${CFLAGS} -mthumb-interwork")
|
||||
set(CPPFLAGS "${CPPFLAGS} -mthumb-interwork")
|
||||
set(ASFLAGS "${ASFLAGS} -mthumb-interwork")
|
||||
set(LDFLAGS "${LDFLAGS} -mthumb-interwork")
|
||||
else()
|
||||
# Pure THUMB mode, THUMB C code cannot be called by ARM asm code directly.
|
||||
set(CFLAGS "${CFLAGS} -mno-thumb-interwork")
|
||||
set(CPPFLAGS "${CPPFLAGS} -mno-thumb-interwork")
|
||||
set(ASFLAGS "${ASFLAGS} -mno-thumb-interwork -mthumb")
|
||||
set(LDFLAGS "${LDFLAGS} -mno-thumb-interwork -mthumb")
|
||||
set(DEFS ${DEFS} -DTHUMB_NO_INTERWORKING)
|
||||
set(ADEFS ${ADEFS} -DTHUMB_NO_INTERWORKING)
|
||||
endif()
|
||||
else()
|
||||
# Pure ARM mode
|
||||
set(CFLAGS "${CFLAGS} -mno-thumb-interwork")
|
||||
set(CPPFLAGS "${CPPFLAGS} -mno-thumb-interwork")
|
||||
set(ASFLAGS "${ASFLAGS} -mno-thumb-interwork")
|
||||
set(LDFLAGS "${LDFLAGS} -mno-thumb-interwork")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_FLAGS "${CFLAGS} ${TOPT}")
|
||||
set(CMAKE_CXX_FLAGS "${CPPFLAGS} ${TOPT}")
|
||||
set(CMAKE_AS_FLAGS "${ASFLAGS} ${TOPT}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${LDFLAGS}")
|
20
firmware/chibios/test/test.cmake
Normal file
20
firmware/chibios/test/test.cmake
Normal file
@@ -0,0 +1,20 @@
|
||||
# List of all the ChibiOS/RT test files.
|
||||
set(TESTSRC
|
||||
${CHIBIOS}/test/test.c
|
||||
${CHIBIOS}/test/testthd.c
|
||||
${CHIBIOS}/test/testsem.c
|
||||
${CHIBIOS}/test/testmtx.c
|
||||
${CHIBIOS}/test/testmsg.c
|
||||
${CHIBIOS}/test/testmbox.c
|
||||
${CHIBIOS}/test/testevt.c
|
||||
${CHIBIOS}/test/testheap.c
|
||||
${CHIBIOS}/test/testpools.c
|
||||
${CHIBIOS}/test/testdyn.c
|
||||
${CHIBIOS}/test/testqueues.c
|
||||
${CHIBIOS}/test/testbmk.c
|
||||
)
|
||||
|
||||
# Required include directories
|
||||
set(TESTINC
|
||||
${CHIBIOS}/test
|
||||
)
|
Reference in New Issue
Block a user