You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
KED/env/cmake_core/cmakeCore.cmake

91 lines
3.9 KiB

####################################################################################################
# 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("${BoldMagenta} |-> Added : ${DIR}")
else()
errorDirNotFound()
endif()
endforeach()
message("${ColourReset}")
endfunction()
function(checkDirectory _directory)
if(EXISTS ${_directory})
else()
errorDirNotFound()
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("${BoldMagenta} |-> Added : ${_directory}/${DIR}")
endforeach()
message("${ColourReset}")
set(${_headersList} ${_newheaderDirList} PARENT_SCOPE)
endfunction()
####################################################################################################
# SUBMODULE MANAGEMENT
####################################################################################################
function(makeSubmodules _directory _aliasList _submoduleList)
set(_newSubmoduleList)
foreach(alias IN LISTS _aliasList)
checkDirectory("${_directory}/${alias}")
if(EXISTS ${CSL_SOURCES_DIR}/imp_${alias}.${PL})
message("${BoldYellow} |-> Target Found : ${alias} ")
if(EXISTS ${_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})
add_library(sub::${alias} ALIAS ${alias}_submodule)
list(APPEND _newSubmoduleList sub::${alias})
else()
if(EXISTS ${_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})
target_include_directories(${alias}_submodule PUBLIC ${COMMON_HEADERS})
add_library(sub::${alias} ALIAS ${alias}_submodule)
list(APPEND _newSubmoduleList sub::${alias})
else()
message("${BoldMagenta} |-> No Source file for target : ${alias}")
message(" |-> Only headers will be added")
endif()
endif()
endforeach()
message("${ColourReset}")
set(${_submoduleList} ${_newSubmoduleList} PARENT_SCOPE)
endfunction()
####################################################################################################
# PRINT FUNCTIONS
####################################################################################################
function(printList _txt _list)
foreach(X IN LISTS _list)
message("${_txt}${X}")
endforeach()
endfunction()