toolchain.cmake.in raw

   1  # Copyright (c) 2023-present The Limenka developers
   2  # Distributed under the MIT software license, see the accompanying
   3  # file COPYING or https://opensource.org/license/mit/.
   4  
   5  # This file is expected to be highly volatile and may still change substantially.
   6  
   7  # If CMAKE_SYSTEM_NAME is set within a toolchain file, CMake will also
   8  # set CMAKE_CROSSCOMPILING to TRUE, even if CMAKE_SYSTEM_NAME matches
   9  # CMAKE_HOST_SYSTEM_NAME. To avoid potential misconfiguration of CMake,
  10  # it is best not to touch CMAKE_SYSTEM_NAME unless cross-compiling is
  11  # intended.
  12  if(@depends_crosscompiling@)
  13    set(CMAKE_SYSTEM_NAME @host_system_name@)
  14    set(CMAKE_SYSTEM_VERSION @host_system_version@)
  15    set(CMAKE_SYSTEM_PROCESSOR @host_arch@)
  16  
  17    set(CMAKE_C_COMPILER_TARGET @host@)
  18    set(CMAKE_CXX_COMPILER_TARGET @host@)
  19    set(CMAKE_OBJCXX_COMPILER_TARGET @host@)
  20  endif()
  21  
  22  if(NOT DEFINED CMAKE_C_FLAGS_INIT)
  23    set(CMAKE_C_FLAGS_INIT "@CFLAGS@")
  24  endif()
  25  if(NOT DEFINED CMAKE_C_FLAGS_RELWITHDEBINFO_INIT)
  26    set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "@CFLAGS_RELEASE@")
  27  endif()
  28  if(NOT DEFINED CMAKE_C_FLAGS_DEBUG_INIT)
  29    set(CMAKE_C_FLAGS_DEBUG_INIT "@CFLAGS_DEBUG@")
  30  endif()
  31  
  32  if(NOT DEFINED CMAKE_C_COMPILER)
  33    set(CMAKE_C_COMPILER @CC@)
  34  endif()
  35  
  36  if(NOT DEFINED CMAKE_CXX_FLAGS_INIT)
  37    set(CMAKE_CXX_FLAGS_INIT "@CXXFLAGS@")
  38    set(CMAKE_OBJCXX_FLAGS_INIT "@CXXFLAGS@")
  39  endif()
  40  if(NOT DEFINED CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT)
  41    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@")
  42    set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@")
  43  endif()
  44  if(NOT DEFINED CMAKE_CXX_FLAGS_DEBUG_INIT)
  45    set(CMAKE_CXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@")
  46    set(CMAKE_OBJCXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@")
  47  endif()
  48  
  49  if(NOT DEFINED CMAKE_CXX_COMPILER)
  50    set(CMAKE_CXX_COMPILER @CXX@)
  51    set(CMAKE_OBJCXX_COMPILER ${CMAKE_CXX_COMPILER})
  52  endif()
  53  
  54  # The DEPENDS_COMPILE_DEFINITIONS* variables are to be treated as lists.
  55  set(DEPENDS_COMPILE_DEFINITIONS @CPPFLAGS@)
  56  set(DEPENDS_COMPILE_DEFINITIONS_RELWITHDEBINFO @CPPFLAGS_RELEASE@)
  57  set(DEPENDS_COMPILE_DEFINITIONS_DEBUG @CPPFLAGS_DEBUG@)
  58  
  59  if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_INIT)
  60    set(CMAKE_EXE_LINKER_FLAGS_INIT "@LDFLAGS@")
  61  endif()
  62  if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_INIT)
  63    set(CMAKE_SHARED_LINKER_FLAGS_INIT "@LDFLAGS@")
  64  endif()
  65  if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT)
  66    set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@")
  67  endif()
  68  if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT)
  69    set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@")
  70  endif()
  71  if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT)
  72    set(CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@")
  73  endif()
  74  if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT)
  75    set(CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@")
  76  endif()
  77  
  78  set(CMAKE_AR "@AR@")
  79  set(CMAKE_RANLIB "@RANLIB@")
  80  set(CMAKE_STRIP "@STRIP@")
  81  set(CMAKE_OBJCOPY "@OBJCOPY@")
  82  set(CMAKE_OBJDUMP "@OBJDUMP@")
  83  
  84  # Using our own built dependencies should not be
  85  # affected by a potentially random environment.
  86  set(CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH OFF)
  87  
  88  set(CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_LIST_DIR}")
  89  set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
  90  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
  91  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  92  set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
  93  set(QT_TRANSLATIONS_DIR "${CMAKE_CURRENT_LIST_DIR}/translations")
  94  
  95  # The following is only necessary when using cmake from Nix or NixOS, because
  96  # Nix patches cmake to remove the root directory `/` from
  97  # CMAKE_SYSTEM_PREFIX_PATH. Adding it back is harmless on other platforms and
  98  # necessary on Nix because without it cmake find_path, find_package, etc
  99  # functions do not know where to look in CMAKE_FIND_ROOT_PATH for dependencies
 100  # (https://github.com/limenka/limenka/issues/32428).
 101  #
 102  # TODO: longer term, it may be possible to use a dependency provider, which
 103  # would bring the find_package calls completely under our control, making this
 104  # patch unnecessary.
 105  #
 106  # Make sure we only append once, as this file may be called repeatedly.
 107  if(NOT "/" IN_LIST CMAKE_PREFIX_PATH)
 108    list(APPEND CMAKE_PREFIX_PATH "/")
 109  endif()
 110  
 111  if(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 locations
 115    # on the file system; therefore, a hint is required.
 116    set(CMAKE_FRAMEWORK_PATH "@OSX_SDK@/System/Library/Frameworks")
 117  endif()
 118  
 119  # Set configuration options for the main build system.
 120  set(qt_packages @qt_packages@)
 121  if("${qt_packages}" STREQUAL "")
 122    set(BUILD_GUI OFF CACHE BOOL "")
 123  else()
 124    set(BUILD_GUI ON CACHE BOOL "")
 125  endif()
 126  
 127  set(qrencode_packages @qrencode_packages@)
 128  if("${qrencode_packages}" STREQUAL "")
 129    set(WITH_QRENCODE OFF CACHE BOOL "")
 130  else()
 131    set(WITH_QRENCODE ON CACHE BOOL "")
 132  endif()
 133  
 134  set(zmq_packages @zmq_packages@)
 135  if("${zmq_packages}" STREQUAL "")
 136    set(WITH_ZMQ OFF CACHE BOOL "")
 137  else()
 138    set(WITH_ZMQ ON CACHE BOOL "")
 139  endif()
 140  
 141  set(wallet_packages @wallet_packages@)
 142  if("${wallet_packages}" STREQUAL "")
 143    set(ENABLE_WALLET OFF CACHE BOOL "")
 144  else()
 145    set(ENABLE_WALLET ON CACHE BOOL "")
 146  endif()
 147  
 148  set(bdb_packages @bdb_packages@)
 149  if("${wallet_packages}" STREQUAL "" OR "${bdb_packages}" STREQUAL "")
 150    set(WITH_BDB OFF CACHE BOOL "")
 151  else()
 152    set(WITH_BDB ON CACHE BOOL "")
 153  endif()
 154  
 155  set(sqlite_packages @sqlite_packages@)
 156  if("${wallet_packages}" STREQUAL "" OR "${sqlite_packages}" STREQUAL "")
 157    set(WITH_SQLITE OFF CACHE BOOL "")
 158  else()
 159    set(WITH_SQLITE ON CACHE BOOL "")
 160  endif()
 161  
 162  set(upnp_packages @upnp_packages@)
 163  if("${upnp_packages}" STREQUAL "")
 164    set(WITH_MINIUPNPC OFF CACHE BOOL "")
 165  else()
 166    set(WITH_MINIUPNPC ON CACHE BOOL "")
 167  endif()
 168  
 169  set(usdt_packages @usdt_packages@)
 170  if("${usdt_packages}" STREQUAL "")
 171    set(WITH_USDT OFF CACHE BOOL "")
 172  else()
 173    set(WITH_USDT ON CACHE BOOL "")
 174  endif()
 175  
 176  if("@no_harden@")
 177    set(ENABLE_HARDENING OFF CACHE BOOL "")
 178  else()
 179    set(ENABLE_HARDENING ON CACHE BOOL "")
 180  endif()
 181  
 182  if("@multiprocess@" STREQUAL "1")
 183    set(WITH_MULTIPROCESS ON CACHE BOOL "")
 184    set(Libmultiprocess_ROOT "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "")
 185    set(LibmultiprocessNative_ROOT "${CMAKE_CURRENT_LIST_DIR}/native" CACHE PATH "")
 186  else()
 187    set(WITH_MULTIPROCESS OFF CACHE BOOL "")
 188  endif()
 189