Restructuration from CMakeCore with Edwin Stage 1

master
Kerem Yollu 2 years ago
parent 8471df9e9c
commit c893a9584e

@ -55,7 +55,8 @@ set(DRIVERS_HEADERS_DIR) #Declared empty because it will be filled automaticaly
# Directory fot the peripherals -> "Common to all CSL" # Directory fot the peripherals -> "Common to all CSL"
set(PERIPHERALS_DIR ${CMAKE_SOURCE_DIR}/peripherals) set(PERIPHERALS_DIR ${CMAKE_SOURCE_DIR}/peripherals)
set(PERIPHERALS_HEADERS_DIR ${CMAKE_SOURCE_DIR}/peripherals) set(PERIPHERALS_HEADERS_DIR)#Declared empty because it will be filled automaticaly afterwards
set(PERIPHERAL_LIBS)#Declared empty because it will be filled automaticaly afterwards
# Directory for the libraries -> "Common to all CSL" # Directory for the libraries -> "Common to all CSL"
set(LIBRARIES_DIR ${CMAKE_SOURCE_DIR}/libraries) set(LIBRARIES_DIR ${CMAKE_SOURCE_DIR}/libraries)
@ -63,8 +64,7 @@ set(LIBRARIES_HEADERS_DIR ${CMAKE_SOURCE_DIR}/libraries)
#################################################################################################### ####################################################################################################
# INCLUDES # INCLUDES ####################################################################################################
####################################################################################################
# Adding human readable color references for cmake # Adding human readable color references for cmake
include(${CMAKE_CORE_DIR}/colors.cmake) include(${CMAKE_CORE_DIR}/colors.cmake)
@ -96,12 +96,12 @@ include(${CSL_CONFIG_FILE})
#################################################################################################### ####################################################################################################
message("${BoldBlue}") message("${BoldBlue}")
message("+-------------------------------+") message("+-------------------------------+")
message("Cheking Driver Headers") message("Adding Header Directories")
message("+-------------------------------+") message("+-------------------------------+")
foreach(X IN LISTS DRIVERS_LIST) message("-->For Drivers")
addHeaderDir("${DRIVERS_DIR}" "${X}" "NEW_DRIVER_HEADER") createHeaderDirList("${DRIVERS_DIR}" "${DRIVERS_LIST}" "DRIVERS_HEADERS_DIR")
list(APPEND DRIVERS_HEADERS_DIR ${NEW_DRIVER_HEADER}) message("-->For Peripherals")
endforeach() createHeaderDirList("${PERIPHERALS_DIR}" "${PERIPHERALS_LIST}" "PERIPHERALS_HEADERS_DIR")
message("+-------------------------------+") message("+-------------------------------+")
set (COMMON_HEADERS ${CSL_HEADERS_DIR} set (COMMON_HEADERS ${CSL_HEADERS_DIR}
@ -130,10 +130,7 @@ message("+-------------------------------+")
message("Cheking Periferals") message("Cheking Periferals")
message("+-------------------------------+") message("+-------------------------------+")
foreach(X IN LISTS PERIPHERALS_LIST) makeSubmodules("${PERIPHERALS_DIR}" "${PERIPHERALS_LIST}" "PERIPHERAL_LIBS")
addPeripheral("${X}" "NEW_PERIPHERAL")
list(APPEND PERIPHERAL_LIBS ${NEW_PERIPHERAL})
endforeach()
message("+-------------------------------+") message("+-------------------------------+")
message("${ColourReset}") message("${ColourReset}")
@ -146,9 +143,9 @@ message("+-------------------------------+")
message("Cheking User's Project") message("Cheking User's Project")
message("+-------------------------------+") message("+-------------------------------+")
message("Included Project Headers :") message("Included Project Headers :")
checkDirectory("${PROJECT_HEADERS_DIR}") checkDirectories("${PROJECT_HEADERS_DIR}")
message("Included Project Sources :") message("Included Project Sources :")
checkDirectory("${PROJECT_SOURCES_DIR}") checkDirectories("${PROJECT_SOURCES_DIR}")
message("Declared sources :") message("Declared sources :")
printList("|-->" "${PROJECT_SOURCES_DIR_LIST}") printList("|-->" "${PROJECT_SOURCES_DIR_LIST}")

@ -3,8 +3,8 @@
# Project function for cheking header files source files and generating libraries from them. # Project function for cheking header files source files and generating libraries from them.
#################################################################################################### ####################################################################################################
#Searching if the given header and/or sources directory exists if not we brake the compilation #Searching if the given header and/or sources directory exists if not we brake the compilation
function(checkDirectory _directory) function(checkDirectories _directoryList)
foreach(DIR IN LISTS _directory) foreach(DIR IN LISTS _directoryList)
if(EXISTS ${DIR}) if(EXISTS ${DIR})
message("|--> ${DIR} : INCLUDED") message("|--> ${DIR} : INCLUDED")
else() else()
@ -13,40 +13,22 @@ function(checkDirectory _directory)
endforeach() endforeach()
endfunction() endfunction()
# This function goes an searches for directories containing header files and return the corresponding directory. function(checkDirectory _directory)
function(addHeaderDir _directory _alias _currentDriverHeader) if(EXISTS ${_directory})
if(EXISTS ${_directory}/${_alias} ) # Checks if the given directory exitsts else()
if(EXISTS ${_directory}/${_alias}/${_alias}.h) errorDirNotFound()
message(" --> Header File : ${_directory}/${_alias}/${_alias}.h = FOUND")
message(" |-> Driver directory : ${_directory}/${_alias} = ADDED TO HEADERS")
set(${_currentDriverHeader} ${_directory}/${_alias} PARENT_SCOPE)
else ()
errorHFileNotFound("${_directory}" "${_alias}")
endif()
else ()
errorHDirNotFound("${_directory}" "${_alias}")
endif() endif()
endfunction() endfunction()
#Searching each sources directory to find the desired source file and generate a libaray submodule for the linker # This function goes an searches for directories containing header files and return the corresponding directory.
function(projectAddItem alias _currentItem) function(createHeaderDirList _directory _list _headersList)
foreach(DIR IN LISTS PROJECT_SOURCES_DIR) set(_newheaderDirList)
if(EXISTS ${DIR}) foreach(DIR IN LISTS _list)
if(EXISTS ${DIR}/${alias}.${PL}) #For each directory we chanek if the given source file exitst checkDirectory("${_directory}/${DIR}")
message("|-->${alias}.${PL} FOUND in : ${DIR}") list(APPEND _newheaderDirList ${_directory}/${DIR})
message(" |-> Creating sub::${alias}.${PL} library submodule") message(" |-> Header Directory : ${_directory}/${DIR} = ADDED")
add_library(${alias}_submodule ${DIR}/${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(${_currentItem} sub::${alias} PARENT_SCOPE)
endif()
else()
message(FATAL_ERROR "Source directory <<${DIR}>> : NOT FOUND")
endif()
endforeach() endforeach()
set(${_headersList} ${_newheaderDirList} PARENT_SCOPE)
endfunction() endfunction()
#################################################################################################### ####################################################################################################
@ -120,3 +102,40 @@ function(printList _txt _list)
endforeach() endforeach()
endfunction() 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}")
if(EXISTS ${_directory}/${alias}/${alias}.${PL})
message(" |->Submodule Source File : ${alias}.c : FOUND")
message(" |-> DIR: ${_directory}/${alias}/${alias}.${PL}")
add_library(${alias}_submodule ${_directory}/${alias}/${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)
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}")
add_library(${alias}_submodule ${_directory}/${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)
list(APPEND _newSubmoduleList sub::${alias})
else()
message(" |->No Source File Found : Only headers will be added")
endif()
endif()
endforeach()
printList("_newSubmoduleList = " ${_newSubmoduleList})
set(${_submoduleList} ${_newSubmoduleList} PARENT_SCOPE)
endfunction()

Loading…
Cancel
Save