summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt163
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}
+ )