Skip to content

Commit ff3d002

Browse files
committed
build: Generate share/toolchain.cmake in depends
1 parent 38604b7 commit ff3d002

File tree

2 files changed

+165
-1
lines changed

2 files changed

+165
-1
lines changed

depends/Makefile

Lines changed: 30 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,33 @@ $(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|@CMAKE_SYSTEM_NAME@|$($(host_os)_cmake_system)|' \
264+
-e 's|@CMAKE_SYSTEM_PROCESSOR@|$(host_arch)|' \
265+
-e 's|@CMAKE_C_COMPILER@|$(host_CC)|' \
266+
-e 's|@CMAKE_CXX_COMPILER@|$(host_CXX)|' \
267+
-e 's|@CMAKE_AR@|$(host_AR)|' \
268+
-e 's|@CMAKE_RANLIB@|$(host_RANLIB)|' \
269+
-e 's|@CMAKE_STRIP@|$(host_STRIP)|' \
270+
-e 's|@CMAKE_OBJCOPY@|$(host_OBJCOPY)|' \
271+
-e 's|@CMAKE_INSTALL_NAME_TOOL@|$(host_INSTALL_NAME_TOOL)|' \
272+
-e 's|@OTOOL@|$(host_OTOOL)|' \
273+
-e 's|@CMAKE_FIND_ROOT_PATH@|$(host_prefix)|' \
274+
-e 's|@CMAKE_C_FLAGS_INIT@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS) $(host_CFLAGS) $(host_$(release_type)_CFLAGS))|' \
275+
-e 's|@CMAKE_CXX_FLAGS_INIT@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS) $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
276+
-e 's|@allow_host_packages@|$(ALLOW_HOST_PACKAGES)|' \
277+
-e 's|@no_qt@|$(NO_QT)|' \
278+
-e 's|@no_qr@|$(NO_QR)|' \
279+
-e 's|@no_zmq@|$(NO_ZMQ)|' \
280+
-e 's|@no_wallet@|$(NO_WALLET)|' \
281+
-e 's|@no_bdb@|$(NO_BDB)|' \
282+
-e 's|@no_sqlite@|$(NO_SQLITE)|' \
283+
-e 's|@no_upnp@|$(NO_UPNP)|' \
284+
-e 's|@no_natpmp@|$(NO_NATPMP)|' \
285+
-e 's|@no_usdt@|$(NO_USDT)|' \
286+
$< > $@
287+
touch $@
260288

261289
define check_or_remove_cached
262290
mkdir -p $(BASE_CACHE)/$(host)/$(package) && cd $(BASE_CACHE)/$(host)/$(package); \
@@ -278,6 +306,7 @@ check-sources:
278306
@$(foreach package,$(all_packages),$(call check_or_remove_sources,$(package));)
279307

280308
$(host_prefix)/share/config.site: check-packages
309+
$(host_prefix)/share/toolchain.cmake: check-packages
281310

282311
check-packages: check-sources
283312

@@ -287,7 +316,7 @@ clean-all: clean
287316
clean:
288317
@rm -rf $(WORK_PATH) $(BASE_CACHE) $(BUILD) *.log
289318

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

292321

293322
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 @CMAKE_SYSTEM_NAME@)
2+
set(CMAKE_SYSTEM_PROCESSOR @CMAKE_SYSTEM_PROCESSOR@)
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 @CMAKE_C_COMPILER@)
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} @CMAKE_C_FLAGS_INIT@")
43+
44+
if(NOT CMAKE_CXX_COMPILER)
45+
set(DEPENDS_CXX_COMPILER_WITH_LAUNCHER @CMAKE_CXX_COMPILER@)
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} @CMAKE_CXX_FLAGS_INIT@")
58+
59+
if(NOT CMAKE_OBJCXX_COMPILER)
60+
set(DEPENDS_OBJCXX_COMPILER_WITH_LAUNCHER @CMAKE_CXX_COMPILER@)
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} @CMAKE_CXX_FLAGS_INIT@")
73+
74+
set(CMAKE_AR "@CMAKE_AR@")
75+
set(CMAKE_RANLIB "@CMAKE_RANLIB@")
76+
set(CMAKE_STRIP "@CMAKE_STRIP@")
77+
set(CMAKE_OBJCOPY "@CMAKE_OBJCOPY@")
78+
set(CMAKE_INSTALL_NAME_TOOL "@CMAKE_INSTALL_NAME_TOOL@")
79+
set(OTOOL "@OTOOL@")
80+
81+
set(CMAKE_FIND_ROOT_PATH "@CMAKE_FIND_ROOT_PATH@")
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 "${CMAKE_FIND_ROOT_PATH}/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 "${CMAKE_FIND_ROOT_PATH}/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 "${CMAKE_FIND_ROOT_PATH}/native/lib/python3/dist-packages:$ENV{PYTHONPATH}")
133+
else()
134+
set(PYTHONPATH "${CMAKE_FIND_ROOT_PATH}/native/lib/python3/dist-packages")
135+
endif()

0 commit comments

Comments
 (0)