Skip to content

Commit

Permalink
build: Generate share/toolchain.cmake in depends
Browse files Browse the repository at this point in the history
  • Loading branch information
hebasto committed Mar 24, 2023
1 parent d37c9a2 commit e5e6bd3
Show file tree
Hide file tree
Showing 2 changed files with 168 additions and 1 deletion.
32 changes: 31 additions & 1 deletion depends/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ $(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain)
include funcs.mk

final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
final_build_id_long+=$(shell $(build_SHA256SUM) toolchain.cmake.in)
final_build_id+=$(shell echo -n "$(final_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
rm -rf $(@D)
Expand Down Expand Up @@ -257,6 +258,34 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
$< > $@
touch $@

$(host_prefix)/share/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id)
@mkdir -p $(@D)
sed -e 's|@host_system@|$($(host_os)_cmake_system)|' \
-e 's|@host_arch@|$(host_arch)|' \
-e 's|@CC@|$(host_CC)|' \
-e 's|@CXX@|$(host_CXX)|' \
-e 's|@AR@|$(host_AR)|' \
-e 's|@RANLIB@|$(host_RANLIB)|' \
-e 's|@STRIP@|$(host_STRIP)|' \
-e 's|@OBJCOPY@|$(host_OBJCOPY)|' \
-e 's|@INSTALL_NAME_TOOL@|$(host_INSTALL_NAME_TOOL)|' \
-e 's|@OTOOL@|$(host_OTOOL)|' \
-e 's|@depends_prefix@|$(host_prefix)|' \
-e 's|@CFLAGS@|$(strip $(host_CFLAGS) $(host_$(release_type)_CFLAGS))|' \
-e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
-e 's|@allow_host_packages@|$(ALLOW_HOST_PACKAGES)|' \
-e 's|@no_qt@|$(NO_QT)|' \
-e 's|@no_qr@|$(NO_QR)|' \
-e 's|@no_zmq@|$(NO_ZMQ)|' \
-e 's|@no_wallet@|$(NO_WALLET)|' \
-e 's|@no_bdb@|$(NO_BDB)|' \
-e 's|@no_sqlite@|$(NO_SQLITE)|' \
-e 's|@no_upnp@|$(NO_UPNP)|' \
-e 's|@no_natpmp@|$(NO_NATPMP)|' \
-e 's|@no_usdt@|$(NO_USDT)|' \
$< > $@
touch $@

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

$(host_prefix)/share/config.site: check-packages
$(host_prefix)/share/toolchain.cmake: check-packages

check-packages: check-sources

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

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


download-one: check-sources $(all_sources)
Expand Down
137 changes: 137 additions & 0 deletions depends/toolchain.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# This file is expected to be highly volatile and may still change substantially.

set(CMAKE_SYSTEM_NAME @host_system@)
set(CMAKE_SYSTEM_PROCESSOR @host_arch@)

function(split_compiler_launcher env_compiler launcher compiler)
set(${launcher})
list(GET ${env_compiler} 0 start_token)
if(start_token STREQUAL "env")
set(${compiler})
set(env_arg_parsing TRUE)
foreach(token IN LISTS ${env_compiler})
if(env_arg_parsing)
list(APPEND ${launcher} ${token})
set(env_arg_parsing FALSE)
continue()
elseif(token STREQUAL "-u")
list(APPEND ${launcher} ${token})
set(env_arg_parsing TRUE)
continue()
endif()
list(APPEND ${compiler} ${token})
endforeach()
else()
set(${compiler} ${${env_compiler}})
endif()
set(${launcher} ${${launcher}} PARENT_SCOPE)
set(${compiler} ${${compiler}} PARENT_SCOPE)
endfunction()

if(NOT CMAKE_C_COMPILER)
set(DEPENDS_C_COMPILER_WITH_LAUNCHER @CC@)
split_compiler_launcher(DEPENDS_C_COMPILER_WITH_LAUNCHER CMAKE_C_COMPILER_LAUNCHER CMAKE_C_COMPILER)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
set(CMAKE_C_LINKER_LAUNCHER ${CMAKE_C_COMPILER_LAUNCHER})
endif()
if(CMAKE_VERSION VERSION_LESS 3.19)
set(DEPENDS_C_COMPILER_FLAGS ${CMAKE_C_COMPILER})
list(REMOVE_AT DEPENDS_C_COMPILER_FLAGS 0)
string(REPLACE ";" " " DEPENDS_C_COMPILER_FLAGS "${DEPENDS_C_COMPILER_FLAGS}")
list(GET CMAKE_C_COMPILER 0 CMAKE_C_COMPILER)
endif()
endif()
set(CMAKE_C_FLAGS_INIT "${DEPENDS_C_COMPILER_FLAGS} @CPPFLAGS@ @CFLAGS@")

if(NOT CMAKE_CXX_COMPILER)
set(DEPENDS_CXX_COMPILER_WITH_LAUNCHER @CXX@)
split_compiler_launcher(DEPENDS_CXX_COMPILER_WITH_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER CMAKE_CXX_COMPILER)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
set(CMAKE_CXX_LINKER_LAUNCHER ${CMAKE_CXX_COMPILER_LAUNCHER})
endif()
if(CMAKE_VERSION VERSION_LESS 3.19)
set(DEPENDS_CXX_COMPILER_FLAGS ${CMAKE_CXX_COMPILER})
list(REMOVE_AT DEPENDS_CXX_COMPILER_FLAGS 0)
string(REPLACE ";" " " DEPENDS_CXX_COMPILER_FLAGS "${DEPENDS_CXX_COMPILER_FLAGS}")
list(GET CMAKE_CXX_COMPILER 0 CMAKE_CXX_COMPILER)
endif()
endif()
set(CMAKE_CXX_FLAGS_INIT "${DEPENDS_CXX_COMPILER_FLAGS} @CPPFLAGS@ @CXXFLAGS@")

if(NOT CMAKE_OBJCXX_COMPILER)
set(DEPENDS_OBJCXX_COMPILER_WITH_LAUNCHER @CXX@)
split_compiler_launcher(DEPENDS_OBJCXX_COMPILER_WITH_LAUNCHER CMAKE_OBJCXX_COMPILER_LAUNCHER CMAKE_OBJCXX_COMPILER)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
set(CMAKE_OBJCXX_LINKER_LAUNCHER ${CMAKE_OBJCXX_COMPILER_LAUNCHER})
endif()
if(CMAKE_VERSION VERSION_LESS 3.19)
set(DEPENDS_OBJCXX_COMPILER_FLAGS ${CMAKE_OBJCXX_COMPILER})
list(REMOVE_AT DEPENDS_OBJCXX_COMPILER_FLAGS 0)
string(REPLACE ";" " " DEPENDS_OBJCXX_COMPILER_FLAGS "${DEPENDS_OBJCXX_COMPILER_FLAGS}")
list(GET CMAKE_OBJCXX_COMPILER 0 CMAKE_OBJCXX_COMPILER)
endif()
endif()
set(CMAKE_OBJCXX_FLAGS_INIT "${DEPENDS_OBJCXX_COMPILER_FLAGS} @CPPFLAGS@ @CXXFLAGS@")

set(CMAKE_AR "@AR@")
set(CMAKE_RANLIB "@RANLIB@")
set(CMAKE_STRIP "@STRIP@")
set(CMAKE_OBJCOPY "@OBJCOPY@")
set(CMAKE_INSTALL_NAME_TOOL "@INSTALL_NAME_TOOL@")
set(OTOOL "@OTOOL@")

set(CMAKE_FIND_ROOT_PATH "@depends_prefix@")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(PKG_CONFIG_PATH "@depends_prefix@/lib/pkgconfig")
if("@allow_host_packages@" STREQUAL "1")
set(DEPENDS_ALLOW_HOST_PACKAGES TRUE)
else()
set(DEPENDS_ALLOW_HOST_PACKAGES FALSE)
set(PKG_CONFIG_LIBDIR "${PKG_CONFIG_PATH}")
endif()
set(QT_TRANSLATIONS_DIR "@depends_prefix@/translations")

if(NOT WITH_GUI AND "@no_qt@" STREQUAL "1")
set(WITH_GUI "no" CACHE STRING "")
endif()

if(NOT WITH_QRENCODE AND "@no_qr@" STREQUAL "1")
set(WITH_QRENCODE OFF CACHE STRING "")
endif()

if(NOT WITH_ZMQ AND "@no_zmq@" STREQUAL "1")
set(WITH_ZMQ OFF CACHE STRING "")
endif()

if(NOT ENABLE_WALLET AND "@no_wallet@" STREQUAL "1")
set(ENABLE_WALLET OFF CACHE BOOL "")
endif()

if(NOT WITH_BDB AND "@no_bdb@" STREQUAL "1")
set(WITH_BDB OFF CACHE STRING "")
endif()

if(NOT WITH_SQLITE AND "@no_sqlite@" STREQUAL "1")
set(WITH_SQLITE OFF CACHE STRING "")
endif()

if(NOT WITH_MINIUPNPC AND "@no_upnp@" STREQUAL "1")
set(WITH_MINIUPNPC OFF CACHE STRING "")
endif()

if(NOT WITH_NATPMP AND "@no_natpmp@" STREQUAL "1")
set(WITH_NATPMP OFF CACHE STRING "")
endif()

if(NOT WITH_USDT AND "@no_usdt@" STREQUAL "1")
set(WITH_USDT OFF CACHE STRING "")
endif()

if(DEFINED ENV{PYTHONPATH})
set(PYTHONPATH "@depends_prefix@/native/lib/python3/dist-packages:$ENV{PYTHONPATH}")
else()
set(PYTHONPATH "@depends_prefix@/native/lib/python3/dist-packages")
endif()

0 comments on commit e5e6bd3

Please sign in to comment.