diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f9e069..e52af8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,20 @@ message("${Blue} |--> Project Def\t: ${PROJECT_DEFS} ${ColourReset}") message("${Blue} |--> Interfaces Dir\t: ${INTERFACES_DIR} ${ColourReset}") message("${Blue} |--> Libs used\t\t: ${EXTRA_LIBS} ${ColourReset}") +#################################################################################################### +#Library definitions +#################################################################################################### +list(APPEND EXTRA_LIBS sub::startup) +list(APPEND EXTRA_LIBS sub::delay) +list(APPEND EXTRA_LIBS sub::usart) +list(APPEND EXTRA_LIBS sub::timer) +list(APPEND EXTRA_LIBS sub::deviceSetup) +list(APPEND EXTRA_LIBS sub::max7219) +list(APPEND EXTRA_LIBS sub::spi) +list(APPEND EXTRA_LIBS sub::i2c) +list(APPEND EXTRA_LIBS sub::pin) + + #################################################################################################### #EXECUTABLE #################################################################################################### diff --git a/csl/stm32f042/Src/deviceSetup.c b/csl/stm32f042/Src/imp_deviceSetup.c similarity index 100% rename from csl/stm32f042/Src/deviceSetup.c rename to csl/stm32f042/Src/imp_deviceSetup.c diff --git a/csl/stm32f042/config.cmake b/csl/stm32f042/config.cmake index 39401ce..70d0cf6 100644 --- a/csl/stm32f042/config.cmake +++ b/csl/stm32f042/config.cmake @@ -65,13 +65,3 @@ set(LINKER_FLAGS set (MAIN_INCLUDES ${CMAKE_SOURCE_DIR}) set (MAIN_FLAGS ${C_FLAGS}) set (MAIN_DEFS ${C_DEFS}) - -list(APPEND EXTRA_LIBS sub::startup) -list(APPEND EXTRA_LIBS sub::delay) -list(APPEND EXTRA_LIBS sub::usart) -list(APPEND EXTRA_LIBS sub::timer) -list(APPEND EXTRA_LIBS sub::init) -list(APPEND EXTRA_LIBS sub::max7219) -list(APPEND EXTRA_LIBS sub::spi) -list(APPEND EXTRA_LIBS sub::i2c) -list(APPEND EXTRA_LIBS sub::pin) diff --git a/periferals/CMakeLists.txt b/periferals/CMakeLists.txt index 2cd3be5..c11be83 100644 --- a/periferals/CMakeLists.txt +++ b/periferals/CMakeLists.txt @@ -1,45 +1,28 @@ -add_library(SPI spi.c ${CSL_SOURCES}/imp_spi.c) -target_compile_options(SPI PRIVATE ${C_FLAGS}) -target_compile_definitions(SPI PRIVATE ${C_DEFS}) -target_include_directories(SPI PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) -add_library(sub::spi ALIAS SPI) - -add_library(DELAY ${CSL_SOURCES}/imp_delay.c) -target_compile_options(DELAY PRIVATE ${C_FLAGS}) -target_compile_definitions(DELAY PRIVATE ${C_DEFS}) -target_include_directories(DELAY PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) -add_library(sub::delay ALIAS DELAY) - -add_library(PIN ${CSL_SOURCES}/imp_pin.c) -target_compile_options(PIN PRIVATE ${C_FLAGS}) -target_compile_definitions(PIN PRIVATE ${C_DEFS}) -target_include_directories(PIN PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) -add_library(sub::pin ALIAS PIN) - -add_library(USART ${CSL_SOURCES}/imp_usart.c) -target_compile_options(USART PRIVATE ${C_FLAGS}) -target_compile_definitions(USART PRIVATE ${C_DEFS}) -target_include_directories(USART PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) -add_library(sub::usart ALIAS USART) - -# TODO: this point needs to be discussed. How should it work and what should it do? -add_library(INIT ${CSL_SOURCES}/deviceSetup.c) -target_compile_options(INIT PRIVATE ${C_FLAGS}) -target_compile_definitions(INIT PRIVATE ${C_DEFS}) -target_include_directories(INIT PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) -add_library(sub::init ALIAS INIT) - -add_library(I2C i2c.c ${CSL_SOURCES}/imp_i2c.c) -target_compile_options(I2C PRIVATE ${C_FLAGS}) -target_compile_definitions(I2C PRIVATE ${C_DEFS}) -target_include_directories(I2C PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) -add_library(sub::i2c ALIAS I2C) - -add_library(TIMER ${CSL_SOURCES}/imp_timer.c) -target_compile_options(TIMER PRIVATE ${C_FLAGS}) -target_compile_definitions(TIMER PRIVATE ${C_DEFS}) -target_include_directories(TIMER PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) -add_library(sub::timer ALIAS TIMER) - - - +function(addPeripheral alias) + if(EXISTS ${CSL_SOURCES}/imp_${alias}.c) # Checks if the desired peripheral is implemented for the desired CSL. + message("Chip has usart >>imp_${alias}.c was found<<") + if(EXISTS ${PERIFERALS_DIR}/${alias}.c) # Cheks if generic funtions are awailable. this is useful for standars as SPI i2c etc... + message("${alias}.c generic functions library extits") + add_library(${alias}_submodule ${alias}.c ${CSL_SOURCES}/imp_${alias}.c) + else() + add_library(${alias}_submodule ${CSL_SOURCES}/imp_${alias}.c) + endif() + + target_compile_options(${alias}_submodule PRIVATE ${C_FLAGS}) + target_compile_definitions(${alias}_submodule PRIVATE ${C_DEFS}) + target_include_directories(${alias}_submodule PUBLIC ${PERIFERALS_DIR} ${CSL_INCLUDES}) + add_library(sub::${alias} ALIAS ${alias}_submodule) + + else() # optional block + message("${BoldRed}Chip has no usart periferal >>imp_usart.c was not found<<") + message("${BoldRed}Compilation Aborted") + endif() +endfunction() + +addPeripheral("deviceSetup") # TODO: this point needs to be discussed. How should it work and what should it do? +addPeripheral("timer") +addPeripheral("usart") +addPeripheral("spi") +addPeripheral("i2c") +addPeripheral("delay") +addPeripheral("pin")