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