From f9cd2526fc5878c52e290a8dc0bb9260c5bd797a Mon Sep 17 00:00:00 2001 From: Steven Noreyko <1909661+okyeron@users.noreply.github.com> Date: Mon, 19 Feb 2024 15:21:50 -0600 Subject: add vscode cmake stuff --- sw/cmake/gcc-arm-none-eabi.cmake | 51 ++++++++++ sw/cmake/st-project.cmake | 198 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 249 insertions(+) create mode 100644 sw/cmake/gcc-arm-none-eabi.cmake create mode 100644 sw/cmake/st-project.cmake (limited to 'sw/cmake') 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 + "$<$,$>:USE_HAL_DRIVER>" + "$<$,$>:STM32L476xx>" + "$<$,$>:DEBUG>" + "$<$>,$>:USE_HAL_DRIVER>" + "$<$>,$>:STM32L476xx>" +) + +target_include_directories( + ${TARGET_NAME} PRIVATE + "$<$,$>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Include>" + "$<$,$>:${PROJECT_SOURCE_DIR}/Core/Src/tinyusb/src>" + "$<$,$>:${PROJECT_SOURCE_DIR}/Core/Inc>" + "$<$,$>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32L4xx/Include>" + "$<$,$>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc>" + "$<$,$>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc/Legacy>" + "$<$>,$>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Include>" + "$<$>,$>:${PROJECT_SOURCE_DIR}/Core/Src/tinyusb/src>" + "$<$>,$>:${PROJECT_SOURCE_DIR}/Core/Inc>" + "$<$>,$>:${PROJECT_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32L4xx/Include>" + "$<$>,$>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc>" + "$<$>,$>:${PROJECT_SOURCE_DIR}/Drivers/STM32L4xx_HAL_Driver/Inc/Legacy>" +) + +target_compile_options( + ${TARGET_NAME} PRIVATE + "$<$,$>:-g3>" + "$<$,$>:-g3>" + "$<$,$>:-g3>" + "$<$>,$>:-g0>" + "$<$>,$>:-g0>" + "$<$>,$>:-g0>" + "$<$>,$>:-O3>" + "$<$>,$>:-Os>" + "$<$,$>:>" + "$<$,$>:>" + "$<$>,$>:>" + "$<$>,$>:>" + "$<$:-mcpu=cortex-m4>" + "$<$:-mfpu=fpv4-sp-d16>" + "$<$:-mfloat-abi=hard>" + "$<$>:-mcpu=cortex-m4>" + "$<$>:-mfpu=fpv4-sp-d16>" + "$<$>:-mfloat-abi=hard>" +) + +target_link_libraries( + ${TARGET_NAME} PRIVATE +) + +target_link_directories( + ${TARGET_NAME} PRIVATE +) + +target_link_options( + ${TARGET_NAME} PRIVATE + "$<$:-mcpu=cortex-m4>" + "$<$:-mfpu=fpv4-sp-d16>" + "$<$:-mfloat-abi=hard>" + "$<$>:-mcpu=cortex-m4>" + "$<$>:-mfpu=fpv4-sp-d16>" + "$<$>:-mfloat-abi=hard>" + -T + "$<$:${PROJECT_SOURCE_DIR}/STM32L476VGTX_FLASH.ld>" + "$<$>:${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} $ +) + +add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_OBJCOPY} -O ihex + $ ${TARGET_NAME}.hex +) + +add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_OBJCOPY} -O binary + $ ${TARGET_NAME}.bin +) + +endfunction() \ No newline at end of file -- cgit v1.2.3