summaryrefslogtreecommitdiff
path: root/sw/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'sw/cmake')
-rw-r--r--sw/cmake/gcc-arm-none-eabi.cmake51
-rw-r--r--sw/cmake/st-project.cmake198
2 files changed, 249 insertions, 0 deletions
diff --git a/sw/cmake/gcc-arm-none-eabi.cmake b/sw/cmake/gcc-arm-none-eabi.cmake
new file mode 100644
index 0000000..5e91a53
--- /dev/null
+++ b/sw/cmake/gcc-arm-none-eabi.cmake
@@ -0,0 +1,51 @@
+set(WINDOWS_ST_CLT_PATH "C:/ST/STM32CubeCLT/STM32CubeCLT/GNU-tools-for-STM32/bin/")
+set(MAC_ST_CLT_PATH "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/")
+if(EXISTS "${WINDOWS_ST_CLT_PATH}")
+ set(TOOLCHAIN_DIRECTORIES ${WINDOWS_ST_CLT_PATH})
+elseif(EXISTS "${MAC_ST_CLT_PATH}")
+ set(TOOLCHAIN_DIRECTORIES ${MAC_ST_CLT_PATH})
+else()
+ # Try to find an STM32CubeIDE installation to use for the toolchain.
+ file(GLOB TOOLCHAIN_DIRECTORIES
+ "C:/ST/STM32CubeIDE_*/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"
+ "/opt/st/stm32cubeide_*/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"
+ "/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"
+ )
+endif()
+list(LENGTH TOOLCHAIN_DIRECTORIES TOOLCHAIN_DIRECTORIES_COUNT)
+
+if(TOOLCHAIN_DIRECTORIES_COUNT LESS 1)
+ message(WARNING "Could not find an STM32CubeIDE installation. Falling back to tools available on PATH.")
+else()
+ list(GET TOOLCHAIN_DIRECTORIES 0 TOOLCHAIN_DIRECTORY)
+ if (TOOLCHAIN_DIRECTORIES_COUNT GREATER 1)
+ message(STATUS "Found multiple STM32CubeIDE installations. Using \"${TOOLCHAIN_DIRECTORY}\".")
+ endif()
+endif()
+
+if(WIN32)
+ set(TOOLCHAIN_SUFFIX ".exe")
+endif()
+
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMAKE_SYSTEM_PROCESSOR arm)
+
+set(TOOLCHAIN_PREFIX "arm-none-eabi-")
+if(DEFINED TOOLCHAIN_DIRECTORY)
+ set(TOOLCHAIN_PREFIX "${TOOLCHAIN_DIRECTORY}/${TOOLCHAIN_PREFIX}")
+endif()
+set(FLAGS "-fdata-sections -ffunction-sections --specs=nano.specs -Wl,--gc-sections")
+set(ASM_FLAGS "-x assembler-with-cpp")
+set(CPP_FLAGS "-fno-rtti -fno-exceptions -fno-threadsafe-statics")
+
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc${TOOLCHAIN_SUFFIX} ${FLAGS})
+set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER} ${ASM_FLAGS})
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++${TOOLCHAIN_SUFFIX} ${FLAGS} ${CPP_FLAGS})
+set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy${TOOLCHAIN_SUFFIX})
+set(CMAKE_SIZE ${TOOLCHAIN_PREFIX}size${TOOLCHAIN_SUFFIX})
+
+set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf")
+set(CMAKE_EXECUTABLE_SUFFIX_C ".elf")
+set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf")
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) \ No newline at end of file
diff --git a/sw/cmake/st-project.cmake b/sw/cmake/st-project.cmake
new file mode 100644
index 0000000..f52fce3
--- /dev/null
+++ b/sw/cmake/st-project.cmake
@@ -0,0 +1,198 @@
+# THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
+# BASED ON /Users/nevetsokyeron/Documents/GitHub/plinky_public/sw
+
+function(add_st_target_properties TARGET_NAME)
+
+target_compile_definitions(
+ ${TARGET_NAME} PRIVATE
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:USE_HAL_DRIVER>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:STM32L476xx>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:DEBUG>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:USE_HAL_DRIVER>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:STM32L476xx>"
+)
+
+target_include_directories(
+ ${TARGET_NAME} PRIVATE
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Include>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Core/Src/tinyusb/src>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Core/Inc>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32L4xx/Include>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc/Legacy>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Include>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Core/Src/tinyusb/src>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Core/Inc>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32L4xx/Include>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc/Legacy>"
+)
+
+target_compile_options(
+ ${TARGET_NAME} PRIVATE
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:ASM>>:-g3>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:-g3>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:CXX>>:-g3>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:ASM>>:-g0>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:-g0>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:CXX>>:-g0>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:-O3>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:CXX>>:-Os>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:C>>:>"
+ "$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:CXX>>:>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:C>>:>"
+ "$<$<AND:$<NOT:$<CONFIG:Debug>>,$<COMPILE_LANGUAGE:CXX>>:>"
+ "$<$<CONFIG:Debug>:-mcpu=cortex-m4>"
+ "$<$<CONFIG:Debug>:-mfpu=fpv4-sp-d16>"
+ "$<$<CONFIG:Debug>:-mfloat-abi=hard>"
+ "$<$<NOT:$<CONFIG:Debug>>:-mcpu=cortex-m4>"
+ "$<$<NOT:$<CONFIG:Debug>>:-mfpu=fpv4-sp-d16>"
+ "$<$<NOT:$<CONFIG:Debug>>:-mfloat-abi=hard>"
+)
+
+target_link_libraries(
+ ${TARGET_NAME} PRIVATE
+)
+
+target_link_directories(
+ ${TARGET_NAME} PRIVATE
+)
+
+target_link_options(
+ ${TARGET_NAME} PRIVATE
+ "$<$<CONFIG:Debug>:-mcpu=cortex-m4>"
+ "$<$<CONFIG:Debug>:-mfpu=fpv4-sp-d16>"
+ "$<$<CONFIG:Debug>:-mfloat-abi=hard>"
+ "$<$<NOT:$<CONFIG:Debug>>:-mcpu=cortex-m4>"
+ "$<$<NOT:$<CONFIG:Debug>>:-mfpu=fpv4-sp-d16>"
+ "$<$<NOT:$<CONFIG:Debug>>:-mfloat-abi=hard>"
+ -T
+ "$<$<CONFIG:Debug>:${PROJECT_SOURCE_DIR}/STM32L476VGTX_FLASH.ld>"
+ "$<$<NOT:$<CONFIG:Debug>>:${PROJECT_SOURCE_DIR}/STM32L476VGTX_FLASH.ld>"
+)
+
+target_sources(
+ ${TARGET_NAME} PRIVATE
+ "Core/Src/gfx.c"
+ "Core/Src/lis2dh12_reg.c"
+ "Core/Src/main.c"
+ "Core/Src/plinky.c"
+ "Core/Src/stm32l4xx_hal_msp.c"
+ "Core/Src/stm32l4xx_it.c"
+ "Core/Src/syscalls.c"
+ "Core/Src/sysmem.c"
+ "Core/Src/system_stm32l4xx.c"
+ "Core/Src/tinyusb/src/class/audio/audio_device.c"
+ "Core/Src/tinyusb/src/class/bth/bth_device.c"
+ "Core/Src/tinyusb/src/class/cdc/cdc_device.c"
+ "Core/Src/tinyusb/src/class/cdc/cdc_host.c"
+ "Core/Src/tinyusb/src/class/cdc/cdc_rndis_host.c"
+ "Core/Src/tinyusb/src/class/dfu/dfu_rt_device.c"
+ "Core/Src/tinyusb/src/class/hid/hid_device.c"
+ "Core/Src/tinyusb/src/class/hid/hid_host.c"
+ "Core/Src/tinyusb/src/class/midi/midi_device.c"
+ "Core/Src/tinyusb/src/class/msc/msc_device.c"
+ "Core/Src/tinyusb/src/class/msc/msc_host.c"
+ "Core/Src/tinyusb/src/class/net/net_device.c"
+ "Core/Src/tinyusb/src/class/usbtmc/usbtmc_device.c"
+ "Core/Src/tinyusb/src/class/vendor/vendor_device.c"
+ "Core/Src/tinyusb/src/class/vendor/vendor_host.c"
+ "Core/Src/tinyusb/src/common/tusb_fifo.c"
+ "Core/Src/tinyusb/src/device/usbd_control.c"
+ "Core/Src/tinyusb/src/device/usbd.c"
+ "Core/Src/tinyusb/src/host/hub.c"
+ "Core/Src/tinyusb/src/host/usbh_control.c"
+ "Core/Src/tinyusb/src/host/usbh.c"
+ "Core/Src/tinyusb/src/portable/dialog/da146xx/dcd_da146xx.c"
+ "Core/Src/tinyusb/src/portable/ehci/ehci.c"
+ "Core/Src/tinyusb/src/portable/espressif/esp32s2/dcd_esp32s2.c"
+ "Core/Src/tinyusb/src/portable/microchip/samd/dcd_samd.c"
+ "Core/Src/tinyusb/src/portable/microchip/samg/dcd_samg.c"
+ "Core/Src/tinyusb/src/portable/nordic/nrf5x/dcd_nrf5x.c"
+ "Core/Src/tinyusb/src/portable/nuvoton/nuc120/dcd_nuc120.c"
+ "Core/Src/tinyusb/src/portable/nuvoton/nuc121/dcd_nuc121.c"
+ "Core/Src/tinyusb/src/portable/nuvoton/nuc505/dcd_nuc505.c"
+ "Core/Src/tinyusb/src/portable/nxp/khci/dcd_khci.c"
+ "Core/Src/tinyusb/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c"
+ "Core/Src/tinyusb/src/portable/nxp/lpc17_40/dcd_lpc17_40.c"
+ "Core/Src/tinyusb/src/portable/nxp/lpc17_40/hcd_lpc17_40.c"
+ "Core/Src/tinyusb/src/portable/nxp/transdimension/dcd_transdimension.c"
+ "Core/Src/tinyusb/src/portable/nxp/transdimension/hcd_transdimension.c"
+ "Core/Src/tinyusb/src/portable/ohci/ohci.c"
+ "Core/Src/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c"
+ "Core/Src/tinyusb/src/portable/raspberrypi/rp2040/hcd_rp2040.c"
+ "Core/Src/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c"
+ "Core/Src/tinyusb/src/portable/renesas/usba/dcd_usba.c"
+ "Core/Src/tinyusb/src/portable/silabs/efm32/dcd_efm32.c"
+ "Core/Src/tinyusb/src/portable/sony/cxd56/dcd_cxd56.c"
+ "Core/Src/tinyusb/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c"
+ "Core/Src/tinyusb/src/portable/st/synopsys/dcd_synopsys.c"
+ "Core/Src/tinyusb/src/portable/template/dcd_template.c"
+ "Core/Src/tinyusb/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c"
+ "Core/Src/tinyusb/src/portable/valentyusb/eptri/dcd_eptri.c"
+ "Core/Src/tinyusb/src/tusb.c"
+ "Core/Src/tinyusb/src/usb_descriptors.c"
+ "Core/Src/tinyusb/src/usbmidi.c"
+ "Core/Startup/startup_stm32l476vgtx.s"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pcd_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pcd.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_sai_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_sai.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tsc.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c"
+ "Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_usb.c"
+ # "emu/imgui_impl_glfw.cpp"
+ # "emu/imgui_impl_opengl3.cpp"
+ # "emu/imgui/gl3w/GL/gl3w.c"
+ # "emu/imgui/imgui_draw.cpp"
+ # "emu/imgui/imgui_widgets.cpp"
+ # "emu/imgui/imgui.cpp"
+ # "emu/knob.cpp"
+ # "emu/main.cpp"
+ # "emu/pffft.cpp"
+ # "emu/wavetable/wavetable.cpp"
+ # "plinkyfwpkg/plinkyfwpkg.cpp"
+)
+
+add_custom_command(
+ TARGET ${TARGET_NAME} POST_BUILD
+ COMMAND ${CMAKE_SIZE} $<TARGET_FILE:${TARGET_NAME}>
+)
+
+add_custom_command(
+ TARGET ${TARGET_NAME} POST_BUILD
+ COMMAND ${CMAKE_OBJCOPY} -O ihex
+ $<TARGET_FILE:${TARGET_NAME}> ${TARGET_NAME}.hex
+)
+
+add_custom_command(
+ TARGET ${TARGET_NAME} POST_BUILD
+ COMMAND ${CMAKE_OBJCOPY} -O binary
+ $<TARGET_FILE:${TARGET_NAME}> ${TARGET_NAME}.bin
+)
+
+endfunction() \ No newline at end of file