diff options
author | Oxore <oxore@protonmail.com> | 2022-10-09 02:54:07 +0300 |
---|---|---|
committer | Oxore <oxore@protonmail.com> | 2022-10-09 02:57:01 +0300 |
commit | b1c8bb5df090d65cdd37a7acafb5dee8e3c530c6 (patch) | |
tree | 04e77389b96ed575bff7810ebb71857eff7e3b46 /CMakeLists.txt | |
parent | 59651845feac3c6a2cb8e91e7494fd0e7940d145 (diff) |
Add CMakeLists.txt and make it compile with GCC
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..c8edd8a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,163 @@ +cmake_minimum_required(VERSION 3.16) +project(NixieClock) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED True) +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED True) +set(CMAKE_EXPORT_COMPILE_COMMANDS True) +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer") +set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer") +set(nixie_clock_sources + "Libraries/Indicate/indicate_modes_task.c" + "Libraries/TouchSense/stmCriticalSection.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_linrot.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_dxs.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_time.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_globals.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_acq_stm32f0xx.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_object.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_filter.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_acq.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_time_stm32f0xx.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_touchkey.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl.c" + "Libraries/TouchSense/STMTouch_Driver/src/tsl_ecs.c" + "Libraries/TouchSense/tsl_user.c" + "Libraries/Button/button_handler.c" + "Libraries/Button/button_task.c" + "Libraries/LED_Driver/led_driver_config.c" + "Libraries/LED_Driver/led_driver_process.c" + "Libraries/LED_Driver/led_driver_task.c" + "Libraries/LTimers/ltimers.c" + "Libraries/LTimers/ltimers_config.c" + "Libraries/FreeRTOS/queue.c" + "Libraries/FreeRTOS/timers.c" + "Libraries/FreeRTOS/tasks.c" + "Libraries/FreeRTOS/list.c" + "Libraries/FreeRTOS/croutine.c" + "Libraries/FreeRTOS/event_groups.c" + "Libraries/FreeRTOS/heap_2.c" + "Libraries/NixieDriver/nixie_driver_config.c" + "Libraries/NixieDriver/nixie_driver_task.c" + "Libraries/NixieDriver/nixie_driver_process.c" + "Libraries/Head_Task/head_task.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_exti.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_iwdg.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_comp.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_gpio.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rcc.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_spi.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_wwdg.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dbgmcu.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_tim.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_rtc.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crc.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_crs.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_syscfg.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dac.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_cec.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_dma.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_can.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_pwr.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_flash.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_misc.c" + "Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_adc.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_i2c.c" + #"Libraries/STM32F0xx_StdPeriph_Driver/src/stm32f0xx_usart.c" + "Libraries/LightSensor/light_sensor_task.c" + "Libraries/Time/time.c" + "Project/src/main.c" + "Project/src/stm32f0xx_it.c" + "Project/src/system_stm32f0xx.c" + "Project/src/platform/stm32f0-gcc/freertos/port.c" + "Project/src/platform/stm32f0-gcc/startup/handlers_cm.c" + "Project/src/platform/stm32f0-gcc/startup/stack.cpp" + "Project/src/platform/stm32f0-gcc/startup/startup.cpp" + ) + +add_executable(${PROJECT_NAME} + ${nixie_clock_sources} + ) + +target_include_directories(${PROJECT_NAME} PRIVATE + ${CMAKE_SOURCE_DIR} + "Libraries/TouchSense/STMTouch_Driver/inc" + "Libraries/CMSIS/Device/Include" + "Libraries/NixieDriver" + "Libraries/FreeRTOS/include" + "Libraries/LTimers" + "Libraries/TouchSense" + "Libraries/Head_Task" + "Libraries/STM32F0xx_StdPeriph_Driver/inc" + "Libraries/Indicate" + "Libraries/LightSensor" + "Libraries/Button" + "Libraries/LED_Driver" + "Libraries/Time" + "Project/inc" + "Project/src/platform/stm32f0-gcc/freertos" + ) + +target_compile_definitions(${PROJECT_NAME} PRIVATE + STM32F0XX=1 + LED_DRIVER=1 + ) + +# select linker script +set(linker_script_mcu "${CMAKE_SOURCE_DIR}/Project/ld/stm32f072x8.ld") +set(linker_script_flash "${CMAKE_SOURCE_DIR}/Project/ld/_flash.ld") +set(linker_script_sram "${CMAKE_SOURCE_DIR}/Project/ld/_sram.ld") + +target_compile_options(${PROJECT_NAME} PRIVATE + ${cpu_options} + $<$<COMPILE_LANGUAGE:C>:-std=c11> + $<$<COMPILE_LANGUAGE:CXX>:-std=c++17> + $<$<COMPILE_LANGUAGE:CXX>:-fms-extensions> + $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions> + $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti> + $<$<COMPILE_LANGUAGE:CXX>:-fno-use-cxa-atexit> + $<$<COMPILE_LANGUAGE:CXX>:-fno-threadsafe-statics> + $<$<COMPILE_LANGUAGE:CXX>:-Wold-style-cast> + $<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-override> + $<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-final-types> + $<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-final-methods> + -fstrict-volatile-bitfields + -ffunction-sections + -g3 + -Wall + -Wextra + -pedantic + -Wcast-align + -Wshadow + -Wlogical-op + -Wno-unused # TODO remove +) + +target_link_options(${PROJECT_NAME} PRIVATE + ${cpu_options} + -Wl,--gc-sections + -T${linker_script_mcu} + -T${linker_script_flash} + -T${linker_script_sram} + -nostartfiles + -nostdlib + ) + +link_directories( + ${CMAKE_SOURCE_DIR} +) + +target_link_libraries(${PROJECT_NAME} + c + gcc +) + +set_property(TARGET ${PROJECT_NAME} PROPERTY LINK_DEPENDS + ${linker_script_mcu} + ${linker_script_flash} + ${linker_script_sram} + ) |