22# SPDX-License-Identifier: BSD-3-Clause
33
44include (FetchContent)
5- include (ExternalProject)
65
7- set (DECLARED_DEPENDENCIES "" )
8- set (DEPENDECIES_JSON "" )
9-
10- #################################################
11-
12- set (ARGUM_REPO gershnik/argum)
13- set (ARGUM_VER v2.6)
14- FetchContent_Declare(argum
15- URL https://github.com/${ARGUM_REPO} /tarball/${ARGUM_VER}
16- )
17- list (APPEND DECLARED_DEPENDENCIES argum)
18- list (APPEND DEPENDECIES_JSON "\" argum\" : \" pkg:github/${ARGUM_REPO} @${ARGUM_VER} \" " )
6+ file (READ dependencies.json DEPENDECIES_JSON)
7+ set_property (DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS dependencies.json)
198
20- #################################################
21-
22- set (SYS_STRING_REPO gershnik/sys_string)
23- set (SYS_STRING_VER v2.20)
24- FetchContent_Declare(sys_string
25- URL https://github.com/${SYS_STRING_REPO} /tarball/${SYS_STRING_VER}
26- )
27- list (APPEND DECLARED_DEPENDENCIES sys_string)
28- list (APPEND DEPENDECIES_JSON "\" sys_string\" : \" pkg:github/${SYS_STRING_REPO} @${SYS_STRING_VER} \" " )
299
30- #################################################
10+ set (DECLARED_DEPENDENCIES "" )
3111
32- set (ISPTR_REPO gershnik/intrusive_shared_ptr)
33- set (ISPTR_VER v1.9)
34- FetchContent_Declare(isptr
35- URL https://github.com/${ISPTR_REPO} /tarball/${ISPTR_VER}
12+ function (fetch_dependency name #extras for FetchContent_Declare
3613)
37- list (APPEND DECLARED_DEPENDENCIES isptr)
38- list (APPEND DEPENDECIES_JSON "\" isptr\" : \" pkg:github/${ISPTR_REPO} @${ISPTR_VER} \" " )
14+ string (JSON version GET "${DEPENDECIES_JSON} " ${name} version )
15+ string (JSON url GET "${DEPENDECIES_JSON} " ${name} url)
16+ string (JSON md5 GET "${DEPENDECIES_JSON} " ${name} md5)
17+ string (REPLACE "\$\{ version\} " ${version} url "${url} " )
18+ set (extras "" )
19+ foreach (i RANGE 1 ${ARGC} )
20+ list (APPEND extras ${ARGV${i} })
21+ endforeach ()
22+ FetchContent_Declare(${name}
23+ URL ${url}
24+ URL_HASH MD5=${md5}
25+ ${extras}
26+ )
27+ set (deplist ${DECLARED_DEPENDENCIES} )
28+ list (APPEND deplist ${name} )
29+ set (DECLARED_DEPENDENCIES ${deplist} PARENT_SCOPE)
30+ endfunction ()
3931
4032#################################################
4133
42- set (PTL_REPO gershnik/ptl)
43- set (PTL_VER v1.6)
44- FetchContent_Declare(ptl
45- URL https://github.com/${PTL_REPO} /tarball/${PTL_VER}
46- )
47- list (APPEND DECLARED_DEPENDENCIES ptl)
48- list (APPEND DEPENDECIES_JSON "\" ptl\" : \" pkg:github/${PTL_REPO} @${PTL_VER} \" " )
49-
50- #################################################
34+ fetch_dependency(argum)
35+ fetch_dependency(sys_string)
36+ fetch_dependency(isptr)
37+ fetch_dependency(ptl)
38+ fetch_dependency(modern-uuid)
5139
5240if (WSDDN_PREFER_SYSTEM)
5341 find_package (LibXml2)
@@ -69,83 +57,24 @@ if (NOT LibXml2_FOUND)
6957 set (LIBXML2_WITH_MODULES OFF )
7058 set (LIBXML2_WITH_PROGRAMS OFF )
7159
72- set (LIBXML_VER v2.14.5)
73- FetchContent_Declare(libxml2
74- URL https://gitlab.gnome.org/GNOME/libxml2/-/archive/${LIBXML_VER} /libxml2-${LIBXML_VER} .tar.gz
75- )
76- list (APPEND DECLARED_DEPENDENCIES libxml2)
77- list (APPEND DEPENDECIES_JSON "\" libxml2\" : \" pkg:generic/libxml2@${LIBXML_VER} \" " )
78-
60+ fetch_dependency(libxml2)
61+
7962endif ()
8063
81- #################################################
82-
83- set (MUUID_REPO gershnik/modern-uuid)
84- set (MUUID_VER v1.8)
85- FetchContent_Declare(modern-uuid
86- URL https://github.com/${MUUID_REPO} /tarball/${MUUID_VER}
87- )
88- list (APPEND DECLARED_DEPENDENCIES modern-uuid)
89- list (APPEND DEPENDECIES_JSON "\" modern-uuid\" : \" pkg:github/${MUUID_REPO} @${MUUID_VER} \" " )
90-
91- #################################################
9264
9365set (FMT_INSTALL OFF )
94-
95- set (FMT_REPO fmtlib/fmt)
96- set (FMT_VER 11.2.0)
97- FetchContent_Declare(fmt
98- URL https://github.com/${FMT_REPO} /tarball/${FMT_VER}
99- )
100- list (APPEND DECLARED_DEPENDENCIES fmt)
101- list (APPEND DEPENDECIES_JSON "\" fmt\" : \" pkg:github/${FMT_REPO} @${FMT_VER} \" " )
102-
103- #################################################
66+ fetch_dependency(fmt)
10467
10568set (SPDLOG_NO_ATOMIC_LEVELS ON CACHE BOOL "prevent spdlog from using of std::atomic log levels (use only if your code never modifies log levels concurrently)" )
10669set (SPDLOG_NO_TLS ON CACHE BOOL "prevent spdlog from using thread local storage" )
10770set (SPDLOG_FMT_EXTERNAL ON CACHE BOOL "Use external fmt library instead of bundled" )
71+ fetch_dependency(spdlog)
10872
109- set (SPDLOG_REPO gabime/spdlog)
110- set (SPDLOG_VER v1.15.3)
111- FetchContent_Declare(spdlog
112- URL https://github.com/${SPDLOG_REPO} /tarball/${SPDLOG_VER}
113- )
114- list (APPEND DECLARED_DEPENDENCIES spdlog)
115- list (APPEND DEPENDECIES_JSON "\" spdlog\" : \" pkg:github/${SPDLOG_REPO} @${SPDLOG_VER} \" " )
116-
117- #################################################
118-
119- set (TOMPLUSPLUS_REPO marzer/tomlplusplus)
120- set (TOMPLUSPLUS_VER v3.4.0)
121- FetchContent_Declare(tomlplusplus
122- URL https://github.com/${TOMPLUSPLUS_REPO} /tarball/${TOMPLUSPLUS_VER}
123- )
124- list (APPEND DECLARED_DEPENDENCIES tomlplusplus)
125- list (APPEND DEPENDECIES_JSON "\" tomlplusplus\" : \" pkg:github/${TOMPLUSPLUS_REPO} @${TOMPLUSPLUS_VER} \" " )
126-
127- #################################################
128-
129- set (OUTCOME_REPO ned14/outcome)
130- set (OUTCOME_VER v2.2.12)
131- FetchContent_Declare(outcome
132- URL https://github.com/${OUTCOME_REPO} /tarball/${OUTCOME_VER}
73+ fetch_dependency(tomlplusplus)
74+ fetch_dependency(outcome
13375 SOURCE_SUBDIR include #we don't really want to build it
13476)
135- list (APPEND DECLARED_DEPENDENCIES outcome)
136- list (APPEND DEPENDECIES_JSON "\" outcome\" : \" pkg:github/${OUTCOME_REPO} @${OUTCOME_VER} \" " )
137-
138- #################################################
139-
140- set (ASIO_VER 1.30.2)
141- set (ASIO_URL https://sourceforge.net/projects/asio/files /asio/${ASIO_VER} %20%28Stable%29/asio-${ASIO_VER} .tar.gz/download)
142- set (ASIO_CHECKSUM c1643d3eddd45b210b760acc7ec25d59)
143- FetchContent_Declare(asio
144- URL ${ASIO_URL}
145- URL_HASH MD5=${ASIO_CHECKSUM}
146- )
147- list (APPEND DECLARED_DEPENDENCIES asio)
148- list (APPEND DEPENDECIES_JSON "\" asio\" : \" pkg:generic/asio@${ASIO_VER} ?download_url=${ASIO_URL} &checksum=md5:${ASIO_CHECKSUM} \" " )
77+ fetch_dependency(asio)
14978
15079#################################################
15180
@@ -166,13 +95,4 @@ foreach(dir ${KNOWN_SUBDIRECTORIES})
16695 endif ()
16796endforeach ()
16897
169- list (JOIN DEPENDECIES_JSON ",\n " DEPENDECIES_JSON)
170- cmake_path(RELATIVE_PATH CMAKE_CURRENT_LIST_FILE OUTPUT_VARIABLE JSON_SRC_PATH)
171- set (DEPENDECIES_JSON "{
172- \" version\" : \" 1.0\" ,
173- \" src\" : \" ${JSON_SRC_PATH} \" ,
174- \" dependencies\" : {
175- ${DEPENDECIES_JSON}
176- }}" )
177- file (WRITE ${CMAKE_CURRENT_BINARY_DIR} /dependencies.json ${DEPENDECIES_JSON} )
17898
0 commit comments