Skip to content

Commit 6da5fad

Browse files
authored
New compile infrastructure (#533)
* Initial structure * no need to have an id for instance * erased no longer needed code * Added DigitalInput and DigitalOutput Services, and added support for Alternate functions * Replaced throw by undefined function * Implemented alternate functions * Added linker script and startup code, and fixed using hal template conf * Added initial GPIO mock * added pragma once on pines file * Remove mock infrastructure (still wip)
1 parent ad9e816 commit 6da5fad

18 files changed

Lines changed: 1897 additions & 1111 deletions

.cproject

Lines changed: 0 additions & 1012 deletions
This file was deleted.

.mxproject

Lines changed: 0 additions & 12 deletions
This file was deleted.

.project

Lines changed: 0 additions & 32 deletions
This file was deleted.

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"C_Cpp.default.cppStandard": "c++20",
2+
"C_Cpp.default.cppStandard": "c++23",
33
"C_Cpp.default.cStandard": "c17",
44
"C_Cpp.clang_format_fallbackStyle": "{BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 80}",
55
"C_Cpp.formatting": "clangFormat",

CMakeLists.txt

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,16 @@ if(NOT PROJECT_IS_TOP_LEVEL)
1111
set(STLIB_LIBRARY ${STLIB_LIBRARY} PARENT_SCOPE)
1212
endif()
1313

14+
include(CTest)
15+
enable_testing()
16+
1417
option(USE_ETHERNET "Enable ethernet peripheral" OFF)
1518
option(TARGET_NUCLEO "Targets the STM32H723 Nucleo development board" OFF)
1619

1720
message(STATUS "${PROJECT_NAME} Ethernet: ${USE_ETHERNET}")
1821
message(STATUS "${PROJECT_NAME} Nucleo: ${TARGET_NUCLEO}")
1922
message(STATUS "${PROJECT_NAME} Crosscompiling: ${CMAKE_CROSSCOMPILING}")
2023

21-
# ============================
22-
# Tests + GTest - Simulator
23-
# ============================
24-
if((PROJECT_IS_TOP_LEVEL AND (NOT CMAKE_CROSSCOMPILING)))
25-
include(FetchContent)
26-
option(BUILD_GMOCK OFF)
27-
option(INSTALL_GTEST OFF)
28-
FetchContent_Declare(
29-
googletest
30-
GIT_REPOSITORY https://github.com/google/googletest.git
31-
GIT_TAG v1.15.2
32-
)
33-
FetchContent_MakeAvailable(googletest)
34-
add_library(GTest::GTest INTERFACE IMPORTED)
35-
target_link_libraries(GTest::GTest INTERFACE gtest_main)
36-
endif()
3724

3825
if(NOT CMAKE_CROSSCOMPILING)
3926
message(STATUS "Compiling for simulator")
@@ -216,25 +203,25 @@ add_library(${STLIB_LIBRARY} STATIC
216203
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${LWIP_SOURCES}>
217204
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${USER_LWIP_SOURCES}>
218205

219-
${HALAL_C_NO_ETH}
220-
${HALAL_CPP_NO_ETH}
221-
$<$<BOOL:${USE_ETHERNET}>:${HALAL_C_ETH}>
222-
$<$<BOOL:${USE_ETHERNET}>:${HALAL_CPP_ETH}>
206+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${HALAL_C_NO_ETH}>
207+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${HALAL_CPP_NO_ETH}>
208+
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${HALAL_C_ETH}>
209+
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${HALAL_CPP_ETH}>
223210

224-
${CPP_UTILITIES_C}
225-
${CPP_UTILITIES_CPP}
211+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${CPP_UTILITIES_C}>
212+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${CPP_UTILITIES_CPP}>
226213

227-
${STLIB_LOW_C_NO_ETH}
228-
${STLIB_LOW_CPP_NO_ETH}
229-
$<$<BOOL:${USE_ETHERNET}>:${STLIB_LOW_C_ETH}>
230-
$<$<BOOL:${USE_ETHERNET}>:${STLIB_LOW_CPP_ETH}>
214+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${STLIB_LOW_C_NO_ETH}>
215+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${STLIB_LOW_CPP_NO_ETH}>
216+
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${STLIB_LOW_C_ETH}>
217+
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${STLIB_LOW_CPP_ETH}>
231218

232-
${STLIB_HIGH_C_NO_ETH}
233-
${STLIB_HIGH_CPP_NO_ETH}
234-
$<$<BOOL:${USE_ETHERNET}>:${STLIB_HIGH_C_ETH}>
235-
$<$<BOOL:${USE_ETHERNET}>:${STLIB_HIGH_CPP_ETH}>
219+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${STLIB_HIGH_C_NO_ETH}>
220+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${STLIB_HIGH_CPP_NO_ETH}>
221+
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${STLIB_HIGH_C_ETH}>
222+
$<$<AND:$<BOOL:${CMAKE_CROSSCOMPILING}>,$<BOOL:${USE_ETHERNET}>>:${STLIB_HIGH_CPP_ETH}>
236223

237-
${CMAKE_CURRENT_LIST_DIR}/Src/ST-LIB.cpp
224+
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:${CMAKE_CURRENT_LIST_DIR}/Src/ST-LIB.cpp>
238225
)
239226

240227
set_target_properties(${STLIB_LIBRARY} PROPERTIES
@@ -248,7 +235,7 @@ target_compile_definitions(${STLIB_LIBRARY} PUBLIC
248235
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:USE_HAL_DRIVER>
249236
$<$<BOOL:${CMAKE_CROSSCOMPILING}>:STM32H723xx>
250237

251-
$<$<NOT:$<BOOL:${CMAKE_CROSSCOMPILING}>>:SIM_ON>
238+
$<$<NOT:$<BOOL:${CMAKE_CROSSCOMPILING}>>:TESTING_ENV>
252239

253240
$<$<BOOL:${USE_ETHERNET}>:STLIB_ETH>
254241
$<IF:$<BOOL:${TARGET_NUCLEO}>,NUCLEO,BOARD>
@@ -313,6 +300,23 @@ target_include_directories(${STLIB_LIBRARY} PUBLIC
313300
${CMAKE_CURRENT_LIST_DIR}/Inc/ST-LIB_HIGH
314301
)
315302

303+
304+
if(PROJECT_IS_TOP_LEVEL)
305+
configure_file(
306+
${CMAKE_CURRENT_LIST_DIR}/Inc/stm32h7xx_hal_conf_template.h
307+
${CMAKE_CURRENT_BINARY_DIR}/stm32h7xx_hal_conf.h
308+
COPYONLY
309+
)
310+
311+
target_include_directories(${STLIB_LIBRARY} PUBLIC
312+
${CMAKE_CURRENT_BINARY_DIR}
313+
)
314+
else()
315+
target_include_directories(${STLIB_LIBRARY} PUBLIC
316+
${CMAKE_SOURCE_DIR}/Core/Inc
317+
)
318+
endif()
319+
316320
if(PROJECT_IS_TOP_LEVEL)
317321
execute_process(
318322
COMMAND ${CMAKE_COMMAND} -E create_symlink

Inc/HALAL/HALAL.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#pragma once
22

3+
#include "HALAL/Models/GPIO.hpp"
4+
#include "HALAL/Models/Pin.hpp"
5+
36
#include "HALAL/Models/HALconfig/HALconfig.hpp"
47
#include "HALAL/Models/DMA/DMA.hpp"
58

0 commit comments

Comments
 (0)