1 | cmake_minimum_required(VERSION 3.13)
|
2 |
|
3 |
|
4 | option(COMPUTER "Testing on a x86 System" OFF)
|
5 | option(MICROCONTROLLER "Build for Flashing AVR" ON)
|
6 |
|
7 | add_definitions(-DSILENT)#TODO remove
|
8 |
|
9 | if (COMPUTER)
|
10 | SET(FILES_PRINT
|
11 | output/display_16x4_xterminal.c
|
12 | output/display_16x4_xterminal_control.c
|
13 | output/display_16x4_xterminal_error.c
|
14 | output/display_16x4_xterminal_menue.c
|
15 | output/display_16x4_xterminal_time.c)
|
16 | else ()
|
17 | SET(FILES_PRINT
|
18 | output/display_16x4.c
|
19 | output/display_16x4_control.c
|
20 | output/display_16x4_error.c
|
21 | output/display_16x4_menue.c
|
22 | output/display_16x4_time.c)
|
23 | endif ()
|
24 | SET(FILES_CONTROL
|
25 | controlSystem/closedLoopSystem.c
|
26 | controlSystem/buffer.c
|
27 | controlSystem/temperature.c
|
28 | controlSystem/errorHandling.c)
|
29 | SET(FILES_INPUT
|
30 | input/adc.c
|
31 | input/sensors.c
|
32 | input/buttons.c)
|
33 | SET(FILES_CONFIG
|
34 | configChange/properties.c
|
35 | configChange/menueStructure.c
|
36 | configChange/menueService.c
|
37 | configChange/clock.c)
|
38 | SET(FILES_OUTPUT
|
39 | output/out_highVoltage.c
|
40 | output/out_lowVoltage.c
|
41 | output/displays.c
|
42 | output/display_7segment.c
|
43 | output/display_7segment_control.c
|
44 | output/display_7segment_error.c
|
45 | output/display_7segment_menu.c
|
46 | output/display_7segment_time.c
|
47 | output/disp_16x4.c
|
48 | ${FILES_PRINT}
|
49 | output/dummy.c)
|
50 | SET(FILES_SIMULATION
|
51 | simulation/terminal.c
|
52 | simulation/triggerInterrups.c
|
53 | simulation/windows.c
|
54 | simulation/portable_getch.c)
|
55 |
|
56 | SET(FILES_TWI
|
57 | i2c/twi_master.c
|
58 | i2c/i2c_RWRegister.c
|
59 | i2c/i2c_buttons.c
|
60 | i2c/i2c_HT16K33.c
|
61 | i2c/i2c_RTC.c
|
62 | i2c/i2c_RTC_advanced.c
|
63 | i2c/i2c_lcd.c
|
64 | i2c/i2c_lcd_advanced.c)
|
65 | SET(FILES_LIBS
|
66 | countdown.c)
|
67 | SET(FILES_
|
68 | timer_0.c
|
69 | timer_2.c
|
70 | inits.c
|
71 | ${FILES_LIBS}
|
72 | ${FILES_CONTROL}
|
73 | ${FILES_INPUT}
|
74 | ${FILES_OUTPUT}
|
75 | ${FILES_CONFIG})
|
76 |
|
77 | if (COMPUTER)
|
78 | SET(MICROCONTROLLER OFF)#TODO compile both
|
79 | message(WARNING "Settting up build for x68")
|
80 | SET(FILES main.c ${FILES_}
|
81 | ${FILES_SIMULATION}) # <-- Quelldatei(en)
|
82 |
|
83 |
|
84 | add_definitions(-DALLOW_PRINTF)
|
85 | add_definitions(-DGCC)
|
86 | add_definitions(-DTEST)
|
87 | project(Computer C)
|
88 |
|
89 | SET(CMAKE_C_STANDARD 99)
|
90 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
91 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
|
92 | add_definitions(-DCMAKE_BUILD_TYPE=Debug)
|
93 |
|
94 | #SET(SOURCE_FILES ${FILES})
|
95 | add_executable(${CMAKE_PROJECT_NAME} main.c ${FILES})
|
96 |
|
97 |
|
98 | include_directories(/opt/local/avr/include)
|
99 | endif ()
|
100 |
|
101 | if (MICROCONTROLLER)
|
102 | message(STATUS "Settting up build for AVR")
|
103 | SET(FILES main.c ${FILES_}
|
104 | ${FILES_TWI}) # <-- Quelldatei(en)
|
105 | add_definitions(-DAVR_GCC)
|
106 | add_definitions(-DTWI)
|
107 | endif ()
|
108 |
|
109 |
|
110 | #============================================================================================
|
111 | if (MICROCONTROLLER)
|
112 | CMAKE_MINIMUM_REQUIRED(VERSION 2.8.4)
|
113 |
|
114 | SET(CMAKE_SYSTEM_NAME Generic)
|
115 |
|
116 | #============================================================================================
|
117 | PROJECT(DentaGel2) # <-- Prjektname
|
118 |
|
119 | #SET(FILES main.c) # <-- Quelldatei(en)
|
120 |
|
121 | SET(DEVICE atmega16) # <-- MCU
|
122 | SET(FREQ 8000000) # <-- MCU-Frequenz
|
123 | SET(F_CPU FREQ)
|
124 |
|
125 | #SET(AVRBIN /opt/local/bin) # <-- Toolchain
|
126 | SET(AVRBIN /usr/bin) # <-- Toolchain
|
127 | SET(AVROBJCOPY avr-objcopy) # <-- ""
|
128 | SET(AVRSIZE avr-size) # <-- ""
|
129 | SET(AVRDUDE avrdude) # <-- ""
|
130 |
|
131 | SET(PROGRAMMER avrispmkii) # <-- Programmertype
|
132 | SET(PORT usb) # <-- USB bzw. Schnittstelle z.B. /dev/cu.usbserial....
|
133 | # SET(BAUD 57600) # <-- Übertragungsrate
|
134 |
|
135 | SET(EEPROM NO) # <-- soll eine x.eep Datei erstellt werden?
|
136 | SET(FLASH NO) # <-- soll Geflasht werden?
|
137 |
|
138 | #============================================================================================
|
139 |
|
140 | SET(CMAKE_C_COMPILER ${AVRBIN}/avr-gcc)
|
141 | SET(CMAKE_CXX_COMPILER ${AVRBIN}/avr-g++)
|
142 |
|
143 | SET(CMAKE_C_FLAGS "-Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -std=gnu99 -Wl,--gc-sections")
|
144 | SET(CMAKE_CXX_FLAGS "-Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -Wl,--gc-sections")
|
145 |
|
146 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
|
147 | set(CMAKE_PREFIX_PATH /opt/local/avr)
|
148 | set(CMAKE_EXECUTABLE_SUFFIX ".elf")
|
149 |
|
150 | include_directories(/opt/local/avr/include)
|
151 |
|
152 | SET(SOURCE_FILES ${FILES})
|
153 |
|
154 | #============================================================================================
|
155 |
|
156 | ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${SOURCE_FILES})
|
157 |
|
158 | ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${AVRBIN}/${AVROBJCOPY} -O ihex -R .eeprom ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.elf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.hex)
|
159 |
|
160 | if (EEPROM)
|
161 | ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${AVRBIN}/${AVROBJCOPY} -O ihex -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.elf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.eep)
|
162 | endif (EEPROM)
|
163 |
|
164 | ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${AVRBIN}/${AVRSIZE} --target=ihex ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.hex)
|
165 | ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${AVRBIN}/${AVRSIZE} --target=ihex --mcu=${DEVICE} -C ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.elf)
|
166 |
|
167 | if (FLASH)
|
168 | ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${AVRBIN}/${AVRDUDE} -p${DEVICE} -c${PROGRAMMER} -P${PORT} -b${BAUD} -U flash:w:${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.hex)
|
169 | endif (FLASH)
|
170 |
|
171 |
|
172 | endif (MICROCONTROLLER)
|