Skip to content

Commit 31b0d65

Browse files
committed
Toolchain update
Changes to be committed: modified: cmake/Core.cmake modified: cmake/Macro.cmake
1 parent cd5099f commit 31b0d65

File tree

2 files changed

+129
-99
lines changed

2 files changed

+129
-99
lines changed

cmake/Core.cmake

Lines changed: 99 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ set(ae2f_BinRoot ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "Current Binary Root")
1111
set(ae2f_submod submod CACHE STRING submod)
1212

1313
if(ae2f_IS_SHARED)
14-
set(ae2f_LIBPREFIX SHARED CACHE STRING "SHARED")
14+
set(ae2f_LIBPREFIX SHARED CACHE STRING "SHARED")
1515
else()
16-
set(ae2f_LIBPREFIX STATIC CACHE STRING "STATIC")
16+
set(ae2f_LIBPREFIX STATIC CACHE STRING "STATIC")
1717
endif()
1818

1919
# @namespace ___DOC_CMAKE
@@ -36,24 +36,24 @@ endif()
3636
#
3737
# @see ___DOC_CMAKE::ae2f_TEST
3838
function(ae2f_CoreTestTent prm_LibName prm_TestSourcesDir)
39-
if(ae2f_TEST)
40-
if(ae2f_CXX)
41-
file(GLOB_RECURSE files "${prm_TestSourcesDir}/*")
42-
else()
43-
file(GLOB_RECURSE files "${prm_TestSourcesDir}/*.c")
44-
endif()
45-
list(LENGTH files list_length)
46-
47-
math(EXPR adjusted_length "${list_length} - 1")
39+
if(ae2f_TEST)
40+
if(ae2f_CXX)
41+
file(GLOB_RECURSE files "${prm_TestSourcesDir}/*")
42+
else()
43+
file(GLOB_RECURSE files "${prm_TestSourcesDir}/*.c")
44+
endif()
45+
list(LENGTH files list_length)
4846

49-
foreach(i RANGE 0 ${adjusted_length})
50-
list(GET files ${i} item)
51-
get_filename_component(__NAME ${item} NAME)
52-
add_executable("${prm_LibName}-Test-${__NAME}" ${item})
53-
target_link_libraries("${prm_LibName}-Test-${__NAME}" ${ARGN} ${prm_LibName})
54-
add_test(NAME "${prm_LibName}-Test-${__NAME}" COMMAND "${prm_LibName}-Test-${__NAME}")
55-
endforeach()
56-
endif()
47+
math(EXPR adjusted_length "${list_length} - 1")
48+
49+
foreach(i RANGE 0 ${adjusted_length})
50+
list(GET files ${i} item)
51+
get_filename_component(__NAME ${item} NAME)
52+
add_executable("${prm_LibName}-Test-${__NAME}" ${item})
53+
target_link_libraries("${prm_LibName}-Test-${__NAME}" ${ARGN} ${prm_LibName})
54+
add_test(NAME "${prm_LibName}-Test-${__NAME}" COMMAND "${prm_LibName}-Test-${__NAME}")
55+
endforeach()
56+
endif()
5757
endfunction()
5858

5959
# @brief
@@ -78,54 +78,54 @@ endfunction()
7878
# @param ...
7979
# The sources for the project.
8080
function(ae2f_CoreLibTentConfigCustom prm_TarName prm_TarPreFix prm_includeDir prm_namespace prm_configpath)
81-
# Namespace Package
82-
include(GNUInstallDirs)
81+
# Namespace Package
82+
include(GNUInstallDirs)
83+
84+
include_directories(${prm_includeDir})
85+
add_library(${prm_namespace}-${prm_TarName} ${prm_TarPreFix} ${ARGN})
86+
add_library(${prm_namespace}::${prm_TarName} ALIAS ${prm_namespace}-${prm_TarName})
87+
88+
if(${ae2f_nakedalais})
89+
add_library(${prm_TarName} ALIAS ${prm_namespace}-${prm_TarName})
90+
endif()
8391

84-
include_directories(${prm_includeDir})
85-
add_library(${prm_namespace}-${prm_TarName} ${prm_TarPreFix} ${ARGN})
86-
add_library(${prm_namespace}::${prm_TarName} ALIAS ${prm_namespace}-${prm_TarName})
92+
target_include_directories(
93+
${prm_namespace}-${prm_TarName} INTERFACE
94+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${prm_includeDir}/>
95+
$<INSTALL_INTERFACE:${prm_includeDir}/${prm_namespace}/>
96+
)
8797

88-
if(${ae2f_nakedalais})
89-
add_library(${prm_TarName} ALIAS ${prm_namespace}-${prm_TarName})
90-
endif()
98+
# Install Settings
99+
install(TARGETS ${prm_namespace}-${prm_TarName}
100+
EXPORT ${prm_namespace}-${prm_TarName}Targets
101+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
102+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
91103

92-
target_include_directories(
93-
${prm_namespace}-${prm_TarName} INTERFACE
94-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${prm_includeDir}/>
95-
$<INSTALL_INTERFACE:${prm_includeDir}/${prm_namespace}/>
96-
)
104+
install(DIRECTORY ${prm_includeDir}/${prm_namespace}
105+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${prm_namespace}
106+
)
97107

98-
# Install Settings
99-
install(TARGETS ${prm_namespace}-${prm_TarName}
100-
EXPORT ${prm_namespace}-${prm_TarName}Targets
101-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
102-
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
103-
104-
install(DIRECTORY ${prm_includeDir}/${prm_namespace}
105-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${prm_namespace}
106-
)
108+
# Package
109+
install(EXPORT ${prm_namespace}-${prm_TarName}Targets
110+
FILE ${prm_namespace}-${prm_TarName}Targets.cmake
111+
NAMESPACE ae2f::
112+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/
113+
)
114+
115+
# Pack Conf
116+
include(CMakePackageConfigHelpers)
117+
configure_package_config_file(
118+
${prm_configpath}
119+
${CMAKE_CURRENT_BINARY_DIR}/${prm_namespace}-${prm_TarName}Config.cmake
120+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/
121+
)
107122

108-
# Package
109-
install(EXPORT ${prm_namespace}-${prm_TarName}Targets
110-
FILE ${prm_namespace}-${prm_TarName}Targets.cmake
111-
NAMESPACE ae2f::
112-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/
113-
)
114-
115-
# Pack Conf
116-
include(CMakePackageConfigHelpers)
117-
configure_package_config_file(
118-
${prm_configpath}
119-
${CMAKE_CURRENT_BINARY_DIR}/${prm_namespace}-${prm_TarName}Config.cmake
120-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/
121-
)
122-
123-
install(FILES
124-
${CMAKE_CURRENT_BINARY_DIR}/${prm_namespace}-${prm_TarName}Config.cmake
125-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake
126-
)
123+
install(FILES
124+
${CMAKE_CURRENT_BINARY_DIR}/${prm_namespace}-${prm_TarName}Config.cmake
125+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake
126+
)
127127

128-
set(${prm_namespace}__${prm_TarName}__TENT ${prm_namespace}-${prm_TarName} CACHE STRING ${prm_namespace}-${prm_TarName})
128+
set(${prm_namespace}__${prm_TarName}__TENT ${prm_namespace}-${prm_TarName} CACHE STRING ${prm_namespace}-${prm_TarName})
129129
endfunction()
130130

131131
# @brief
@@ -146,14 +146,14 @@ endfunction()
146146
# @param ...
147147
# The sources for the project.
148148
function(ae2f_CoreLibTent prm_TarName prm_TarPreFix prm_includeDir prm_namespace)
149-
ae2f_CoreLibTentConfigCustom(
150-
${prm_TarName}
151-
${prm_TarPreFix}
152-
${prm_includeDir}
153-
${prm_namespace}
154-
${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
155-
${ARGN}
156-
)
149+
ae2f_CoreLibTentConfigCustom(
150+
${prm_TarName}
151+
${prm_TarPreFix}
152+
${prm_includeDir}
153+
${prm_namespace}
154+
${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
155+
${ARGN}
156+
)
157157
endfunction()
158158

159159
# @brief
@@ -175,43 +175,43 @@ endfunction()
175175
# @see ___DOC_CMAKE::ae2f_CoreLibTent
176176
# @see ___DOC_CMAKE::ae2f_DOC
177177
function(ae2f_CoreUtilityDocTent prm_TarName prm_includeDir prm_namespace)
178-
if(ae2f_DOC)
179-
file(GLOB_RECURSE src ${prm_includeDir} "*.cmake.hpp")
180-
ae2f_CoreLibTent(${prm_TarName}-CMakeDoc INTERFACE ${prm_includeDir} ${prm_namespace}doc ${src})
181-
foreach(lib ${ARGN})
182-
target_link_libraries(${prm_TarName}-CMakeDoc INTERFACE ${lib}-CMakeDoc)
183-
endforeach()
184-
endif()
178+
if(ae2f_DOC)
179+
file(GLOB_RECURSE src ${prm_includeDir} "*.cmake.hpp")
180+
ae2f_CoreLibTent(${prm_TarName}-CMakeDoc INTERFACE ${prm_includeDir} ${prm_namespace}doc ${src})
181+
foreach(lib ${ARGN})
182+
target_link_libraries(${prm_TarName}-CMakeDoc INTERFACE ${lib}-CMakeDoc)
183+
endforeach()
184+
endif()
185185
endfunction()
186186

187187
# Domain name customization.
188188
function(ae2f_CoreLibFetch_DNS prm_AuthorName prm_namespace prm_TarName prm_TagName prm_Domain)
189-
if(NOT TARGET ${prm_TarName})
190-
if(NOT EXISTS ${ae2f_ProjRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}/CMakeLists.txt)
191-
execute_process(
192-
COMMAND
193-
git clone
194-
https://${prm_Domain}/${prm_AuthorName}/${prm_TarName}
195-
${ae2f_ProjRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}
196-
--branch ${prm_TagName} ${ARGN}
197-
RESULT_VARIABLE result
198-
)
189+
if(NOT TARGET ${prm_TarName})
190+
if(NOT EXISTS ${ae2f_ProjRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}/CMakeLists.txt)
191+
execute_process(
192+
COMMAND
193+
git clone
194+
https://${prm_Domain}/${prm_AuthorName}/${prm_TarName}
195+
${ae2f_ProjRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}
196+
--branch ${prm_TagName} ${ARGN}
197+
RESULT_VARIABLE result
198+
)
199199

200-
if(result)
201-
message(FATAL_ERROR "Fetching ${prm_AuthorName}/${prm_TarName} from Github Failed.")
202-
endif()
203-
endif()
200+
if(result)
201+
message(FATAL_ERROR "Fetching ${prm_AuthorName}/${prm_TarName} from Github Failed.")
202+
endif()
203+
endif()
204204

205-
add_subdirectory(
206-
${ae2f_ProjRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}
207-
${ae2f_BinRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}
208-
)
209-
endif()
205+
add_subdirectory(
206+
${ae2f_ProjRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}
207+
${ae2f_BinRoot}/${ae2f_submod}/${prm_AuthorName}/${prm_TarName}
208+
)
209+
endif()
210210

211-
set(
212-
${prm_AuthorName}__${prm_namespace}__${prm_TarName}__FETCHED
213-
${prm_namespace}::${prm_TarName} CACHE STRING ${prm_namespace}::${prm_TarName}
214-
)
211+
set(
212+
${prm_AuthorName}__${prm_namespace}__${prm_TarName}__FETCHED
213+
${prm_namespace}::${prm_TarName} CACHE STRING ${prm_namespace}::${prm_TarName}
214+
)
215215

216216
endfunction()
217217

cmake/Macro.cmake

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
set(ae2f_MAC_KEYWORD "ae2f_MAC")
2+
option(ae2f_MAC_BUILD "Convention variable. If on, macro function will be built." OFF)
3+
4+
include(${PROJECT_SOURCE_DIR}/cmake/Core.cmake)
25

36
function(ae2f_Macro_init prm_CMT_REQUIRED prm_SZPARAM prm_SZTPARAM)
47
file(REMOVE_RECURSE ${ae2f_Macro_ROOT}/build/bin)
@@ -88,6 +91,33 @@ function(ae2f_Macro_cvrt prm_in prm_dir prm_ext)
8891
ae2f_Macro_one(${prm_in} ${prm_dir}/${path_no_ext}${prm_ext})
8992
endfunction()
9093

94+
function(ae2f_Macro_cvrtdir prm_in_dir prm_in_glob prm_out_dir prm_out_ext)
95+
file(GLOB_RECURSE files "${prm_in_dir}/${prm_in_glob}")
96+
foreach(file ${files})
97+
ae2f_Macro_cvrt(${file} ${prm_out_dir} ${prm_out_ext})
98+
endforeach()
99+
endfunction()
100+
101+
function(ae2f_Macro_Lib prm_namespace prm_name prm_prefix prm_in_dir prm_in_glob prm_out_dir prm_out_ext prm_config_file prm_include_dir)
102+
file(GLOB_RECURSE files "${prm_in_dir}/${prm_in_glob}")
103+
foreach(file ${files})
104+
ae2f_Macro_cvrt(${file} ${prm_out_dir} ${prm_out_ext})
105+
endforeach()
106+
107+
if(ae2f_MAC_BUILD)
108+
ae2f_CoreLibTentConfigCustom(
109+
${prm_name} ${prm_prefix} ${prm_include_dir}
110+
${prm_namespace} ${prm_config_file} ${files}
111+
)
112+
else()
113+
file(GLOB_RECURSE ofiles "${prm_out_dir}/*${prm_out_ext}")
114+
ae2f_CoreLibTentConfigCustom(
115+
${prm_name} INTERFACE ${prm_include_dir}
116+
${prm_namespace} ${prm_config_file} ${ofiles}
117+
)
118+
endif()
119+
endfunction()
120+
91121
function(ae2f_Macro_autoname prm_in)
92122
get_filename_component(path_no_ext "${prm_in}" NAME_WE)
93123
get_filename_component(ext "${prm_in}" LAST_EXT)

0 commit comments

Comments
 (0)