Skip to content

Commit 84ac35c

Browse files
committed
cmake: Add cross-compiling support
To configure CMake for cross-compiling, use `--toolchain depends/${HOST}/toolchain.cmake` command-line option.
1 parent 0d01c22 commit 84ac35c

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,19 @@ else()
479479
)
480480
endif()
481481

482+
target_compile_definitions(core_interface INTERFACE ${DEPENDS_COMPILE_DEFINITIONS})
483+
target_compile_definitions(core_interface_relwithdebinfo INTERFACE ${DEPENDS_COMPILE_DEFINITIONS_RELWITHDEBINFO})
484+
target_compile_definitions(core_interface_debug INTERFACE ${DEPENDS_COMPILE_DEFINITIONS_DEBUG})
485+
486+
# If the {CXX,LD}FLAGS environment variables are defined during building depends
487+
# and configuring this build system, their content might be duplicated.
488+
if(DEFINED ENV{CXXFLAGS})
489+
deduplicate_flags(CMAKE_CXX_FLAGS)
490+
endif()
491+
if(DEFINED ENV{LDFLAGS})
492+
deduplicate_flags(CMAKE_EXE_LINKER_FLAGS)
493+
endif()
494+
482495
if(BUILD_TESTS)
483496
enable_testing()
484497
endif()
@@ -538,6 +551,12 @@ message(" test_bitcoin-qt ..................... ${BUILD_GUI_TESTS}")
538551
message(" bench_bitcoin ....................... ${BUILD_BENCH}")
539552
message(" fuzz binary ......................... ${BUILD_FUZZ_BINARY}")
540553
message("")
554+
if(CMAKE_CROSSCOMPILING)
555+
set(cross_status "TRUE, for ${CMAKE_SYSTEM_NAME}, ${CMAKE_SYSTEM_PROCESSOR}")
556+
else()
557+
set(cross_status "FALSE")
558+
endif()
559+
message("Cross compiling ....................... ${cross_status}")
541560
message("C++ compiler .......................... ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}, ${CMAKE_CXX_COMPILER}")
542561
include(FlagsSummary)
543562
flags_summary()

depends/packages/qt.mk

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,13 +265,14 @@ define $(package)_build_cmds
265265
$(MAKE)
266266
endef
267267

268+
# TODO: Investigate whether specific targets can be used here to minimize the amount of files/components installed.
268269
define $(package)_stage_cmds
269-
$(MAKE) -C qtbase/src INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_qt_libs))) && \
270-
$(MAKE) -C qttools/src/linguist INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_linguist_tools))) && \
270+
$(MAKE) -C qtbase INSTALL_ROOT=$($(package)_staging_dir) install && \
271+
$(MAKE) -C qttools INSTALL_ROOT=$($(package)_staging_dir) install && \
271272
$(MAKE) -C qttranslations INSTALL_ROOT=$($(package)_staging_dir) install_subtargets
272273
endef
273274

274275
define $(package)_postprocess_cmds
275-
rm -rf native/mkspecs/ native/lib/ lib/cmake/ && \
276-
rm -f lib/lib*.la lib/*.prl plugins/*/*.prl
276+
rm -rf doc/ native/lib/ && \
277+
rm -f lib/lib*.la
277278
endef

src/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ foreach(config IN LISTS CMAKE_BUILD_TYPE CMAKE_CONFIGURATION_TYPES)
6262
string(TOUPPER "${config}" config)
6363
set(CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
6464
endforeach()
65+
# If the CFLAGS environment variable is defined during building depends
66+
# and configuring this build system, its content might be duplicated.
67+
if(DEFINED ENV{CFLAGS})
68+
deduplicate_flags(CMAKE_C_FLAGS)
69+
endif()
6570
set(CMAKE_EXPORT_COMPILE_COMMANDS OFF)
6671
add_subdirectory(secp256k1)
6772
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

0 commit comments

Comments
 (0)