mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
According to the CMake docs, this is the correct way to setup a toolchain file for cross-compilation using Clang. See https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-using-clang Internally it looks like CMake will only take this variable into account if it detects the compiler to be Clang, so this shouldn't effect other builds, but in the case of our Apple cross builds, we'd end up with a duplicated `--target=arm64-apple-darwin` on the compiler line, given we are already setting `--target` for Darwin builds. Would fix #31748.
152 lines
5 KiB
CMake
152 lines
5 KiB
CMake
# Copyright (c) 2023-present The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or https://opensource.org/license/mit/.
|
|
|
|
# This file is expected to be highly volatile and may still change substantially.
|
|
|
|
# If CMAKE_SYSTEM_NAME is set within a toolchain file, CMake will also
|
|
# set CMAKE_CROSSCOMPILING to TRUE, even if CMAKE_SYSTEM_NAME matches
|
|
# CMAKE_HOST_SYSTEM_NAME. To avoid potential misconfiguration of CMake,
|
|
# it is best not to touch CMAKE_SYSTEM_NAME unless cross-compiling is
|
|
# intended.
|
|
if(@depends_crosscompiling@)
|
|
set(CMAKE_SYSTEM_NAME @host_system_name@)
|
|
set(CMAKE_SYSTEM_VERSION @host_system_version@)
|
|
set(CMAKE_SYSTEM_PROCESSOR @host_arch@)
|
|
|
|
set(CMAKE_C_COMPILER_TARGET @host@)
|
|
set(CMAKE_CXX_COMPILER_TARGET @host@)
|
|
set(CMAKE_OBJCXX_COMPILER_TARGET @host@)
|
|
endif()
|
|
|
|
if(NOT DEFINED CMAKE_C_FLAGS_INIT)
|
|
set(CMAKE_C_FLAGS_INIT "@CFLAGS@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_C_FLAGS_RELWITHDEBINFO_INIT)
|
|
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "@CFLAGS_RELEASE@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_C_FLAGS_DEBUG_INIT)
|
|
set(CMAKE_C_FLAGS_DEBUG_INIT "@CFLAGS_DEBUG@")
|
|
endif()
|
|
|
|
if(NOT DEFINED CMAKE_C_COMPILER)
|
|
set(CMAKE_C_COMPILER @CC@)
|
|
endif()
|
|
|
|
if(NOT DEFINED CMAKE_CXX_FLAGS_INIT)
|
|
set(CMAKE_CXX_FLAGS_INIT "@CXXFLAGS@")
|
|
set(CMAKE_OBJCXX_FLAGS_INIT "@CXXFLAGS@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT)
|
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@")
|
|
set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_CXX_FLAGS_DEBUG_INIT)
|
|
set(CMAKE_CXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@")
|
|
set(CMAKE_OBJCXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@")
|
|
endif()
|
|
|
|
if(NOT DEFINED CMAKE_CXX_COMPILER)
|
|
set(CMAKE_CXX_COMPILER @CXX@)
|
|
set(CMAKE_OBJCXX_COMPILER ${CMAKE_CXX_COMPILER})
|
|
endif()
|
|
|
|
# The DEPENDS_COMPILE_DEFINITIONS* variables are to be treated as lists.
|
|
set(DEPENDS_COMPILE_DEFINITIONS @CPPFLAGS@)
|
|
set(DEPENDS_COMPILE_DEFINITIONS_RELWITHDEBINFO @CPPFLAGS_RELEASE@)
|
|
set(DEPENDS_COMPILE_DEFINITIONS_DEBUG @CPPFLAGS_DEBUG@)
|
|
|
|
if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_INIT)
|
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "@LDFLAGS@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_INIT)
|
|
set(CMAKE_SHARED_LINKER_FLAGS_INIT "@LDFLAGS@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT)
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT)
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT)
|
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@")
|
|
endif()
|
|
if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT)
|
|
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@")
|
|
endif()
|
|
|
|
set(CMAKE_AR "@AR@")
|
|
set(CMAKE_RANLIB "@RANLIB@")
|
|
set(CMAKE_STRIP "@STRIP@")
|
|
set(CMAKE_OBJCOPY "@OBJCOPY@")
|
|
set(CMAKE_OBJDUMP "@OBJDUMP@")
|
|
|
|
# Using our own built dependencies should not be
|
|
# affected by a potentially random environment.
|
|
set(CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH OFF)
|
|
|
|
set(CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
|
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(QT_TRANSLATIONS_DIR "${CMAKE_CURRENT_LIST_DIR}/translations")
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_HOST_APPLE)
|
|
# The find_package(Qt ...) function internally uses find_library()
|
|
# calls for all dependencies to ensure their availability.
|
|
# In turn, the find_library() inspects the well-known locations
|
|
# on the file system; therefore, a hint is required.
|
|
set(CMAKE_FRAMEWORK_PATH "@OSX_SDK@/System/Library/Frameworks")
|
|
endif()
|
|
|
|
# Set configuration options for the main build system.
|
|
set(qt_packages @qt_packages@)
|
|
if("${qt_packages}" STREQUAL "")
|
|
set(BUILD_GUI OFF CACHE BOOL "")
|
|
else()
|
|
set(BUILD_GUI ON CACHE BOOL "")
|
|
endif()
|
|
|
|
set(qrencode_packages @qrencode_packages@)
|
|
if("${qrencode_packages}" STREQUAL "")
|
|
set(WITH_QRENCODE OFF CACHE BOOL "")
|
|
else()
|
|
set(WITH_QRENCODE ON CACHE BOOL "")
|
|
endif()
|
|
|
|
set(zmq_packages @zmq_packages@)
|
|
if("${zmq_packages}" STREQUAL "")
|
|
set(WITH_ZMQ OFF CACHE BOOL "")
|
|
else()
|
|
set(WITH_ZMQ ON CACHE BOOL "")
|
|
endif()
|
|
|
|
set(wallet_packages @wallet_packages@)
|
|
if("${wallet_packages}" STREQUAL "")
|
|
set(ENABLE_WALLET OFF CACHE BOOL "")
|
|
else()
|
|
set(ENABLE_WALLET ON CACHE BOOL "")
|
|
endif()
|
|
|
|
set(bdb_packages @bdb_packages@)
|
|
if("${wallet_packages}" STREQUAL "" OR "${bdb_packages}" STREQUAL "")
|
|
set(WITH_BDB OFF CACHE BOOL "")
|
|
else()
|
|
set(WITH_BDB ON CACHE BOOL "")
|
|
endif()
|
|
|
|
set(usdt_packages @usdt_packages@)
|
|
if("${usdt_packages}" STREQUAL "")
|
|
set(WITH_USDT OFF CACHE BOOL "")
|
|
else()
|
|
set(WITH_USDT ON CACHE BOOL "")
|
|
endif()
|
|
|
|
if("@multiprocess@" STREQUAL "1")
|
|
set(WITH_MULTIPROCESS ON CACHE BOOL "")
|
|
set(Libmultiprocess_ROOT "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "")
|
|
set(LibmultiprocessNative_ROOT "${CMAKE_CURRENT_LIST_DIR}/native" CACHE PATH "")
|
|
else()
|
|
set(WITH_MULTIPROCESS OFF CACHE BOOL "")
|
|
endif()
|