|
|
|
@ -1,16 +1,16 @@
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# Project function for cheking header files source files and generating libraries from them.
|
|
|
|
|
# DIRECTORY CHECKS
|
|
|
|
|
####################################################################################################
|
|
|
|
|
#Searching if the given header and/or sources directory exists if not we brake the compilation
|
|
|
|
|
function(checkDirectories _directoryList)
|
|
|
|
|
foreach(DIR IN LISTS _directoryList)
|
|
|
|
|
if(EXISTS ${DIR})
|
|
|
|
|
message("|--> ${DIR} : INCLUDED")
|
|
|
|
|
message("${BoldMagenta} |-> Added : ${DIR}")
|
|
|
|
|
else()
|
|
|
|
|
errorDirNotFound()
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
message("${ColourReset}")
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
function(checkDirectory _directory)
|
|
|
|
@ -20,102 +20,39 @@ function(checkDirectory _directory)
|
|
|
|
|
endif()
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# HEADER MANAGEMENT
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# This function goes an searches for directories containing header files and return the corresponding directory.
|
|
|
|
|
function(createHeaderDirList _directory _list _headersList)
|
|
|
|
|
set(_newheaderDirList)
|
|
|
|
|
foreach(DIR IN LISTS _list)
|
|
|
|
|
checkDirectory("${_directory}/${DIR}")
|
|
|
|
|
list(APPEND _newheaderDirList ${_directory}/${DIR})
|
|
|
|
|
message(" |-> Header Directory : ${_directory}/${DIR} = ADDED")
|
|
|
|
|
message("${BoldMagenta} |-> Added : ${_directory}/${DIR}")
|
|
|
|
|
endforeach()
|
|
|
|
|
set(${_headersList} ${_newheaderDirList} PARENT_SCOPE)
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# Peripheral function for generating libraries from them.
|
|
|
|
|
####################################################################################################
|
|
|
|
|
function(addPeripheral alias _currentPripheral)
|
|
|
|
|
if(EXISTS ${CSL_SOURCES_DIR}/imp_${alias}.${PL}) # Checks if the desired peripheral is implemented for the desired CSL.
|
|
|
|
|
message(" --> Peripheral: ${alias} = FOUND")
|
|
|
|
|
message(" |-> Drirectory: ${CSL_SOURCES_DIR}/imp_${alias}.${PL}")
|
|
|
|
|
if(EXISTS ${PERIPHERALS_HEADERS_DIR}/${alias}.${PL}) # Cheks if generic funtions are awailable. this is useful for standars as SPI i2c etc...
|
|
|
|
|
message(" --> Generic Library ${alias}.${PL} for imp_${alias}.${PL} = FOUND")
|
|
|
|
|
message(" |-> DIRECTORY: ${PERIPHERALS_HEADERS_DIR}/${alias}.${PL}")
|
|
|
|
|
add_library(${alias}_submodule ${PERIPHERALS_HEADERS_DIR}/${alias}.${PL} ${CSL_SOURCES_DIR}/imp_${alias}.${PL})
|
|
|
|
|
else()
|
|
|
|
|
add_library(${alias}_submodule ${CSL_SOURCES_DIR}/imp_${alias}.${PL})
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
target_compile_options(${alias}_submodule PRIVATE ${MAIN_FLAGS})
|
|
|
|
|
target_compile_definitions(${alias}_submodule PRIVATE ${MAIN_DEFS})
|
|
|
|
|
target_include_directories(${alias}_submodule PUBLIC ${COMMON_HEADERS})
|
|
|
|
|
add_library(sub::${alias} ALIAS ${alias}_submodule)
|
|
|
|
|
set(${_currentPripheral} sub::${alias} PARENT_SCOPE)
|
|
|
|
|
|
|
|
|
|
else ()
|
|
|
|
|
message("${BoldRed}")
|
|
|
|
|
message(FATAL_ERROR "\nThe Included <<${alias}>> peripheral was NOT found ### COMPILATION ABORTED ###\n")
|
|
|
|
|
message("${ColourReset}")
|
|
|
|
|
endif()
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# Driver function for generating libraries from them.
|
|
|
|
|
####################################################################################################
|
|
|
|
|
function(addDriver alias _currentDriver)
|
|
|
|
|
if(EXISTS ${DRIVERS_DIR}/${alias} ) # Checks if the desired peripheral is implemented for the desired CSL.
|
|
|
|
|
message(" --> Driver directory : ${DRIVERS_DIR}/${alias} = FOUND")
|
|
|
|
|
if(EXISTS ${DRIVERS_DIR}/${alias}/${alias}.${PL})
|
|
|
|
|
message(" |-> Source File : ${DRIVERS_DIR}/${alias}/${alias}.${PL} = FOUND")
|
|
|
|
|
if(EXISTS ${DRIVERS_DIR}/${alias}/${alias}.h)
|
|
|
|
|
message(" |-> Header File : ${DRIVERS_DIR}/${alias}/${alias}.h = FOUND")
|
|
|
|
|
add_library(${alias}_submodule ${DRIVERS_DIR}/${alias}/${alias}.${PL})
|
|
|
|
|
target_compile_options(${alias}_submodule PRIVATE ${MAIN_FLAGS})
|
|
|
|
|
target_compile_definitions(${alias}_submodule PRIVATE ${MAIN_DEFS})
|
|
|
|
|
target_include_directories(${alias}_submodule PUBLIC ${COMMON_HEADERS})
|
|
|
|
|
add_library(sub::${alias} ALIAS ${alias}_submodule)
|
|
|
|
|
set(${_currentDriver} sub::${alias} PARENT_SCOPE)
|
|
|
|
|
else ()
|
|
|
|
|
message("${BoldRed}")
|
|
|
|
|
message(FATAL_ERROR "\nThe Included <<${alias}>> Driver's Header file was NOT found ### COMPILATION ABORTED ###\n")
|
|
|
|
|
message("${ColourReset}")
|
|
|
|
|
endif()
|
|
|
|
|
else ()
|
|
|
|
|
message("${BoldRed}")
|
|
|
|
|
message(FATAL_ERROR "\nThe Included <<${alias}>> Driver's Source file was NOT found ### COMPILATION ABORTED ###\n")
|
|
|
|
|
message("${ColourReset}")
|
|
|
|
|
endif()
|
|
|
|
|
else ()
|
|
|
|
|
message("${BoldRed}")
|
|
|
|
|
message(FATAL_ERROR "\nThe Included <<${alias}>> Driver was NOT found ### COMPILATION ABORTED ###\n")
|
|
|
|
|
message("${ColourReset}")
|
|
|
|
|
endif()
|
|
|
|
|
set(${_headersList} ${_newheaderDirList} PARENT_SCOPE)
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# PRINT FUNCTIONS
|
|
|
|
|
# SUBMODULE MANAGEMENT
|
|
|
|
|
####################################################################################################
|
|
|
|
|
function(printList _txt _list)
|
|
|
|
|
foreach(X IN LISTS _list)
|
|
|
|
|
message("${_txt}${X}")
|
|
|
|
|
endforeach()
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
function(makeSubmodules _directory _aliasList _submoduleList)
|
|
|
|
|
set(_newSubmoduleList)
|
|
|
|
|
foreach(alias IN LISTS _aliasList)
|
|
|
|
|
checkDirectory("${_directory}/${alias}")
|
|
|
|
|
if(EXISTS ${CSL_SOURCES_DIR}/imp_${alias}.${PL})
|
|
|
|
|
message(" |->Submodule CSL Implementation for : ${alias} : FOUND")
|
|
|
|
|
message(" |-> DIR: ${CSL_SOURCES_DIR}/imp_${alias}.${PL}")
|
|
|
|
|
message("${BoldYellow} |-> Target Found : ${alias} ")
|
|
|
|
|
if(EXISTS ${_directory}/${alias}/${alias}.${PL})
|
|
|
|
|
message(" |->Submodule Source File : ${alias}.c : FOUND")
|
|
|
|
|
message(" |-> DIR: ${_directory}/${alias}/${alias}.${PL}")
|
|
|
|
|
message(" |-> Imp source : ${CSL_SOURCES_DIR}/imp_${alias}.${PL}")
|
|
|
|
|
message(" |-> Lib Source : ${_directory}/${alias}/${alias}.${PL} ")
|
|
|
|
|
add_library(${alias}_submodule ${_directory}/${alias}/${alias}.${PL} ${CSL_SOURCES_DIR}/imp_${alias}.${PL})
|
|
|
|
|
else()
|
|
|
|
|
message(" |-> Imp source : ${CSL_SOURCES_DIR}/imp_${alias}.${PL}")
|
|
|
|
|
add_library(${alias}_submodule ${CSL_SOURCES_DIR}/imp_${alias}.${PL})
|
|
|
|
|
endif()
|
|
|
|
|
message(" |-> Name : sub::${alias}")
|
|
|
|
|
target_compile_options(${alias}_submodule PRIVATE ${MAIN_FLAGS})
|
|
|
|
|
target_compile_definitions(${alias}_submodule PRIVATE ${MAIN_DEFS})
|
|
|
|
|
target_include_directories(${alias}_submodule PUBLIC ${COMMON_HEADERS})
|
|
|
|
@ -123,8 +60,9 @@ function(makeSubmodules _directory _aliasList _submoduleList)
|
|
|
|
|
list(APPEND _newSubmoduleList sub::${alias})
|
|
|
|
|
else()
|
|
|
|
|
if(EXISTS ${_directory}/${alias}/${alias}.${PL})
|
|
|
|
|
message(" |->Submodule Source File : ${alias}.c : FOUND")
|
|
|
|
|
message(" |-> DIR: ${_directory}/${alias}/${alias}.${PL}")
|
|
|
|
|
message("${BoldYellow} |-> Target Found : ${alias} ")
|
|
|
|
|
message(" |-> Source : ${_directory}/${alias}/${alias}.${PL}")
|
|
|
|
|
message(" |-> Name : sub::${alias}")
|
|
|
|
|
add_library(${alias}_submodule ${_directory}/${alias}/${alias}.${PL})
|
|
|
|
|
target_compile_options(${alias}_submodule PRIVATE ${MAIN_FLAGS})
|
|
|
|
|
target_compile_definitions(${alias}_submodule PRIVATE ${MAIN_DEFS})
|
|
|
|
@ -132,10 +70,21 @@ function(makeSubmodules _directory _aliasList _submoduleList)
|
|
|
|
|
add_library(sub::${alias} ALIAS ${alias}_submodule)
|
|
|
|
|
list(APPEND _newSubmoduleList sub::${alias})
|
|
|
|
|
else()
|
|
|
|
|
message(" |->No Source File Found : Only headers will be added")
|
|
|
|
|
message("${BoldMagenta} |-> No Source file for target : ${alias}")
|
|
|
|
|
message(" |-> Only headers will be added")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
printList("_newSubmoduleList = " ${_newSubmoduleList})
|
|
|
|
|
message("${ColourReset}")
|
|
|
|
|
set(${_submoduleList} ${_newSubmoduleList} PARENT_SCOPE)
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# PRINT FUNCTIONS
|
|
|
|
|
####################################################################################################
|
|
|
|
|
function(printList _txt _list)
|
|
|
|
|
foreach(X IN LISTS _list)
|
|
|
|
|
message("${_txt}${X}")
|
|
|
|
|
endforeach()
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|