Skip to content

Commit d8cba32

Browse files
committed
build: Generate share/toolchain.cmake in depends
1 parent 0712120 commit d8cba32

File tree

2 files changed

+166
-1
lines changed

2 files changed

+166
-1
lines changed

depends/Makefile

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ $(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain)
190190
include funcs.mk
191191

192192
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
193+
final_build_id_long+=$(shell $(build_SHA256SUM) toolchain.cmake.in)
193194
final_build_id+=$(shell echo -n "$(final_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
194195
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
195196
rm -rf $(@D)
@@ -257,6 +258,34 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
257258
$< > $@
258259
touch $@
259260

261+
$(host_prefix)/share/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id)
262+
@mkdir -p $(@D)
263+
sed -e 's|@host_system@|$($(host_os)_cmake_system)|' \
264+
-e 's|@host_arch@|$(host_arch)|' \
265+
-e 's|@CC@|$(host_CC)|' \
266+
-e 's|@CXX@|$(host_CXX)|' \
267+
-e 's|@AR@|$(host_AR)|' \
268+
-e 's|@RANLIB@|$(host_RANLIB)|' \
269+
-e 's|@STRIP@|$(host_STRIP)|' \
270+
-e 's|@OBJCOPY@|$(host_OBJCOPY)|' \
271+
-e 's|@INSTALL_NAME_TOOL@|$(host_INSTALL_NAME_TOOL)|' \
272+
-e 's|@OTOOL@|$(host_OTOOL)|' \
273+
-e 's|@depends_prefix@|$(host_prefix)|' \
274+
-e 's|@CFLAGS@|$(strip $(host_CFLAGS) $(host_$(release_type)_CFLAGS))|' \
275+
-e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
276+
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
277+
-e 's|@allow_host_packages@|$(ALLOW_HOST_PACKAGES)|' \
278+
-e 's|@no_qt@|$(NO_QT)|' \
279+
-e 's|@no_qr@|$(NO_QR)|' \
280+
-e 's|@no_zmq@|$(NO_ZMQ)|' \
281+
-e 's|@no_wallet@|$(NO_WALLET)|' \
282+
-e 's|@no_bdb@|$(NO_BDB)|' \
283+
-e 's|@no_sqlite@|$(NO_SQLITE)|' \
284+
-e 's|@no_upnp@|$(NO_UPNP)|' \
285+
-e 's|@no_natpmp@|$(NO_NATPMP)|' \
286+
-e 's|@no_usdt@|$(NO_USDT)|' \
287+
$< > $@
288+
touch $@
260289

261290
define check_or_remove_cached
262291
mkdir -p $(BASE_CACHE)/$(host)/$(package) && cd $(BASE_CACHE)/$(host)/$(package); \
@@ -278,6 +307,7 @@ check-sources:
278307
@$(foreach package,$(all_packages),$(call check_or_remove_sources,$(package));)
279308

280309
$(host_prefix)/share/config.site: check-packages
310+
$(host_prefix)/share/toolchain.cmake: check-packages
281311

282312
check-packages: check-sources
283313

@@ -287,7 +317,7 @@ clean-all: clean
287317
clean:
288318
@rm -rf $(WORK_PATH) $(BASE_CACHE) $(BUILD) *.log
289319

290-
install: check-packages $(host_prefix)/share/config.site
320+
install: check-packages $(host_prefix)/share/config.site $(host_prefix)/share/toolchain.cmake
291321

292322

293323
download-one: check-sources $(all_sources)

depends/toolchain.cmake.in

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
set(CMAKE_SYSTEM_NAME @host_system@)
2+
set(CMAKE_SYSTEM_PROCESSOR @host_arch@)
3+
4+
function(split_compiler_launcher env_compiler launcher compiler)
5+
set(${launcher})
6+
list(GET ${env_compiler} 0 start_token)
7+
if(start_token STREQUAL "env")
8+
set(${compiler})
9+
set(env_arg_parsing TRUE)
10+
foreach(token IN LISTS ${env_compiler})
11+
if(env_arg_parsing)
12+
list(APPEND ${launcher} ${token})
13+
set(env_arg_parsing FALSE)
14+
continue()
15+
elseif(token STREQUAL "-u")
16+
list(APPEND ${launcher} ${token})
17+
set(env_arg_parsing TRUE)
18+
continue()
19+
endif()
20+
list(APPEND ${compiler} ${token})
21+
endforeach()
22+
else()
23+
set(${compiler} ${${env_compiler}})
24+
endif()
25+
set(${launcher} ${${launcher}} PARENT_SCOPE)
26+
set(${compiler} ${${compiler}} PARENT_SCOPE)
27+
endfunction()
28+
29+
if(NOT CMAKE_C_COMPILER)
30+
set(DEPENDS_C_COMPILER_WITH_LAUNCHER @CC@)
31+
split_compiler_launcher(DEPENDS_C_COMPILER_WITH_LAUNCHER CMAKE_C_COMPILER_LAUNCHER CMAKE_C_COMPILER)
32+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
33+
set(CMAKE_C_LINKER_LAUNCHER ${CMAKE_C_COMPILER_LAUNCHER})
34+
endif()
35+
if(CMAKE_VERSION VERSION_LESS 3.19)
36+
set(DEPENDS_C_COMPILER_FLAGS ${CMAKE_C_COMPILER})
37+
list(REMOVE_AT DEPENDS_C_COMPILER_FLAGS 0)
38+
string(REPLACE ";" " " DEPENDS_C_COMPILER_FLAGS "${DEPENDS_C_COMPILER_FLAGS}")
39+
list(GET CMAKE_C_COMPILER 0 CMAKE_C_COMPILER)
40+
endif()
41+
endif()
42+
set(CMAKE_C_FLAGS_INIT "${DEPENDS_C_COMPILER_FLAGS} @CPPFLAGS@ @CFLAGS@")
43+
44+
if(NOT CMAKE_CXX_COMPILER)
45+
set(DEPENDS_CXX_COMPILER_WITH_LAUNCHER @CXX@)
46+
split_compiler_launcher(DEPENDS_CXX_COMPILER_WITH_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER CMAKE_CXX_COMPILER)
47+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
48+
set(CMAKE_CXX_LINKER_LAUNCHER ${CMAKE_CXX_COMPILER_LAUNCHER})
49+
endif()
50+
if(CMAKE_VERSION VERSION_LESS 3.19)
51+
set(DEPENDS_CXX_COMPILER_FLAGS ${CMAKE_CXX_COMPILER})
52+
list(REMOVE_AT DEPENDS_CXX_COMPILER_FLAGS 0)
53+
string(REPLACE ";" " " DEPENDS_CXX_COMPILER_FLAGS "${DEPENDS_CXX_COMPILER_FLAGS}")
54+
list(GET CMAKE_CXX_COMPILER 0 CMAKE_CXX_COMPILER)
55+
endif()
56+
endif()
57+
set(CMAKE_CXX_FLAGS_INIT "${DEPENDS_CXX_COMPILER_FLAGS} @CPPFLAGS@ @CXXFLAGS@")
58+
59+
if(NOT CMAKE_OBJCXX_COMPILER)
60+
set(DEPENDS_OBJCXX_COMPILER_WITH_LAUNCHER @CXX@)
61+
split_compiler_launcher(DEPENDS_OBJCXX_COMPILER_WITH_LAUNCHER CMAKE_OBJCXX_COMPILER_LAUNCHER CMAKE_OBJCXX_COMPILER)
62+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
63+
set(CMAKE_OBJCXX_LINKER_LAUNCHER ${CMAKE_OBJCXX_COMPILER_LAUNCHER})
64+
endif()
65+
if(CMAKE_VERSION VERSION_LESS 3.19)
66+
set(DEPENDS_OBJCXX_COMPILER_FLAGS ${CMAKE_OBJCXX_COMPILER})
67+
list(REMOVE_AT DEPENDS_OBJCXX_COMPILER_FLAGS 0)
68+
string(REPLACE ";" " " DEPENDS_OBJCXX_COMPILER_FLAGS "${DEPENDS_OBJCXX_COMPILER_FLAGS}")
69+
list(GET CMAKE_OBJCXX_COMPILER 0 CMAKE_OBJCXX_COMPILER)
70+
endif()
71+
endif()
72+
set(CMAKE_OBJCXX_FLAGS_INIT "${DEPENDS_OBJCXX_COMPILER_FLAGS} @CPPFLAGS@ @CXXFLAGS@")
73+
74+
set(CMAKE_AR "@AR@")
75+
set(CMAKE_RANLIB "@RANLIB@")
76+
set(CMAKE_STRIP "@STRIP@")
77+
set(CMAKE_OBJCOPY "@OBJCOPY@")
78+
set(CMAKE_INSTALL_NAME_TOOL "@INSTALL_NAME_TOOL@")
79+
set(OTOOL "@OTOOL@")
80+
81+
set(CMAKE_FIND_ROOT_PATH "@depends_prefix@")
82+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
83+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
84+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
85+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
86+
set(PKG_CONFIG_PATH "@depends_prefix@/lib/pkgconfig")
87+
if("@allow_host_packages@" STREQUAL "1")
88+
set(DEPENDS_ALLOW_HOST_PACKAGES TRUE)
89+
else()
90+
set(DEPENDS_ALLOW_HOST_PACKAGES FALSE)
91+
set(PKG_CONFIG_LIBDIR "${PKG_CONFIG_PATH}")
92+
endif()
93+
set(QT_TRANSLATIONS_DIR "@depends_prefix@/translations")
94+
95+
if(NOT WITH_GUI AND "@no_qt@" STREQUAL "1")
96+
set(WITH_GUI "no" CACHE STRING "")
97+
endif()
98+
99+
if(NOT WITH_QRENCODE AND "@no_qr@" STREQUAL "1")
100+
set(WITH_QRENCODE OFF CACHE STRING "")
101+
endif()
102+
103+
if(NOT WITH_ZMQ AND "@no_zmq@" STREQUAL "1")
104+
set(WITH_ZMQ OFF CACHE STRING "")
105+
endif()
106+
107+
if(NOT ENABLE_WALLET AND "@no_wallet@" STREQUAL "1")
108+
set(ENABLE_WALLET OFF CACHE BOOL "")
109+
endif()
110+
111+
if(NOT WITH_BDB AND "@no_bdb@" STREQUAL "1")
112+
set(WITH_BDB OFF CACHE STRING "")
113+
endif()
114+
115+
if(NOT WITH_SQLITE AND "@no_sqlite@" STREQUAL "1")
116+
set(WITH_SQLITE OFF CACHE STRING "")
117+
endif()
118+
119+
if(NOT WITH_MINIUPNPC AND "@no_upnp@" STREQUAL "1")
120+
set(WITH_MINIUPNPC OFF CACHE STRING "")
121+
endif()
122+
123+
if(NOT WITH_NATPMP AND "@no_natpmp@" STREQUAL "1")
124+
set(WITH_NATPMP OFF CACHE STRING "")
125+
endif()
126+
127+
if(NOT WITH_USDT AND "@no_usdt@" STREQUAL "1")
128+
set(WITH_USDT OFF CACHE STRING "")
129+
endif()
130+
131+
if(DEFINED ENV{PYTHONPATH})
132+
set(PYTHONPATH "@depends_prefix@/native/lib/python3/dist-packages:$ENV{PYTHONPATH}")
133+
else()
134+
set(PYTHONPATH "@depends_prefix@/native/lib/python3/dist-packages")
135+
endif()

0 commit comments

Comments
 (0)