Inside Bitcoin
Opening the selected file…
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1# Copyright (c) 2023-present The Bitcoin Core developers2# Distributed under the MIT software license, see the accompanying3# file COPYING or https://opensource.org/license/mit/.5# This file is expected to be highly volatile and may still change substantially.7# If CMAKE_SYSTEM_NAME is set within a toolchain file, CMake will also8# set CMAKE_CROSSCOMPILING to TRUE, even if CMAKE_SYSTEM_NAME matches9# CMAKE_HOST_SYSTEM_NAME. To avoid potential misconfiguration of CMake,10# it is best not to touch CMAKE_SYSTEM_NAME unless cross-compiling is11# intended.12if(@depends_crosscompiling@)13set(CMAKE_SYSTEM_NAME @host_system_name@)14set(CMAKE_SYSTEM_VERSION @host_system_version@)15set(CMAKE_SYSTEM_PROCESSOR @host_arch@)17set(CMAKE_C_COMPILER_TARGET @host@)18set(CMAKE_CXX_COMPILER_TARGET @host@)19set(CMAKE_OBJCXX_COMPILER_TARGET @host@)20endif()22if(NOT DEFINED CMAKE_C_FLAGS_INIT)23set(CMAKE_C_FLAGS_INIT "@CFLAGS@")24endif()25if(NOT DEFINED CMAKE_C_FLAGS_RELWITHDEBINFO_INIT)26set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "@CFLAGS_RELEASE@")27endif()28if(NOT DEFINED CMAKE_C_FLAGS_DEBUG_INIT)29set(CMAKE_C_FLAGS_DEBUG_INIT "@CFLAGS_DEBUG@")30endif()32if(NOT DEFINED CMAKE_C_COMPILER)33set(CMAKE_C_COMPILER @CC@)34endif()36if(NOT DEFINED CMAKE_CXX_FLAGS_INIT)37set(CMAKE_CXX_FLAGS_INIT "@CXXFLAGS@")38set(CMAKE_OBJCXX_FLAGS_INIT "@CXXFLAGS@")39endif()40if(NOT DEFINED CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT)41set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@")42set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@")43endif()44if(NOT DEFINED CMAKE_CXX_FLAGS_DEBUG_INIT)45set(CMAKE_CXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@")46set(CMAKE_OBJCXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@")47endif()49if(NOT DEFINED CMAKE_CXX_COMPILER)50set(CMAKE_CXX_COMPILER @CXX@)51set(CMAKE_OBJCXX_COMPILER ${CMAKE_CXX_COMPILER})52endif()54# The DEPENDS_COMPILE_DEFINITIONS* variables are to be treated as lists.55set(DEPENDS_COMPILE_DEFINITIONS @CPPFLAGS@)56set(DEPENDS_COMPILE_DEFINITIONS_RELWITHDEBINFO @CPPFLAGS_RELEASE@)57set(DEPENDS_COMPILE_DEFINITIONS_DEBUG @CPPFLAGS_DEBUG@)59if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_INIT)60set(CMAKE_EXE_LINKER_FLAGS_INIT "@LDFLAGS@")61endif()62if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_INIT)63set(CMAKE_SHARED_LINKER_FLAGS_INIT "@LDFLAGS@")64endif()65if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT)66set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@")67endif()68if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT)69set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@")70endif()71if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT)72set(CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@")73endif()74if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT)75set(CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@")76endif()78set(CMAKE_AR "@AR@")79set(CMAKE_RANLIB "@RANLIB@")80set(CMAKE_STRIP "@STRIP@")81set(CMAKE_OBJCOPY "@OBJCOPY@")82set(CMAKE_OBJDUMP "@OBJDUMP@")84# Using our own built dependencies should not be85# affected by a potentially random environment.86set(CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH OFF)88set(CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_LIST_DIR}")89set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)90set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)91set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)92set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)93set(QT_TRANSLATIONS_DIR "${CMAKE_CURRENT_LIST_DIR}/translations")95# The following is only necessary when using cmake from Nix or NixOS, because96# Nix patches cmake to remove the root directory `/` from97# CMAKE_SYSTEM_PREFIX_PATH. Adding it back is harmless on other platforms and98# necessary on Nix because without it cmake find_path, find_package, etc99# functions do not know where to look in CMAKE_FIND_ROOT_PATH for dependencies100# (https://github.com/bitcoin/bitcoin/issues/32428).101#102# TODO: longer term, it may be possible to use a dependency provider, which103# would bring the find_package calls completely under our control, making this104# patch unnecessary.105#106# Make sure we only append once, as this file may be called repeatedly.107if(NOT "/" IN_LIST CMAKE_PREFIX_PATH)108list(APPEND CMAKE_PREFIX_PATH "/")109endif()111if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_HOST_APPLE)112# The find_package(Qt ...) function internally uses find_library()113# calls for all dependencies to ensure their availability.114# In turn, the find_library() inspects the well-known locations115# on the file system; therefore, a hint is required.116set(CMAKE_FRAMEWORK_PATH "@OSX_SDK@/System/Library/Frameworks")117endif()120if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|FreeBSD|OpenBSD)$")121# Customize pkg-config behavior for finding dependencies122# of the xcb QPA platform plugin:123# 1. Restrict search paths to the depends.124# 2. Make output suitable for static linking.125cmake_path(APPEND CMAKE_CURRENT_LIST_DIR "lib" "pkgconfig" OUTPUT_VARIABLE pkg_config_path)126set(ENV{PKG_CONFIG_PATH} ${pkg_config_path})127set(ENV{PKG_CONFIG_LIBDIR} ${pkg_config_path})128unset(pkg_config_path)129set(PKG_CONFIG_ARGN --static)130endif()133# Set configuration options for the main build system.134# The depends/Makefile can generate values with "not-set"135# semantics as empty strings or strings containing only spaces.136# Therefore, MATCHES must be used rather than STREQUAL.137if("@qt_packages@" MATCHES "^[ ]*$")138set(BUILD_GUI OFF CACHE BOOL "")139else()140set(BUILD_GUI ON CACHE BOOL "")141set(Qt6_ROOT "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "")142endif()144if("@qrencode_packages@" MATCHES "^[ ]*$")145set(WITH_QRENCODE OFF CACHE BOOL "")146else()147set(WITH_QRENCODE ON CACHE BOOL "")148endif()150if("@zmq_packages@" MATCHES "^[ ]*$")151set(WITH_ZMQ OFF CACHE BOOL "")152else()153set(WITH_ZMQ ON CACHE BOOL "")154endif()156if("@wallet_packages@" MATCHES "^[ ]*$")157set(ENABLE_WALLET OFF CACHE BOOL "")158else()159set(ENABLE_WALLET ON CACHE BOOL "")160endif()162if("@usdt_packages@" MATCHES "^[ ]*$")163set(WITH_USDT OFF CACHE BOOL "")164else()165set(WITH_USDT ON CACHE BOOL "")166set(USDT_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/systemtap/include" CACHE PATH "")167endif()169set(ipc_packages @ipc_packages@)170if("${ipc_packages}" STREQUAL "")171set(ENABLE_IPC OFF CACHE BOOL "")172else()173set(ENABLE_IPC ON CACHE BOOL "")174set(MPGEN_EXECUTABLE "${CMAKE_CURRENT_LIST_DIR}/native/bin/mpgen" CACHE FILEPATH "")175set(CAPNP_EXECUTABLE "${CMAKE_CURRENT_LIST_DIR}/native/bin/capnp" CACHE FILEPATH "")176set(CAPNPC_CXX_EXECUTABLE "${CMAKE_CURRENT_LIST_DIR}/native/bin/capnpc-c++" CACHE FILEPATH "")177endif()
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.