1
0
Fork 0

Cross-compilation example toolchain

This commit is contained in:
Duncan Ogilvie 2025-03-17 02:48:22 +01:00
parent 9b301b3c8d
commit 4d2d0bd410
2 changed files with 52 additions and 0 deletions

21
cmake/llvm-mingw.cmake Normal file
View File

@ -0,0 +1,21 @@
set(LLVM_MINGW /Users/admin/llvm-mingw-ucrt)
set(CMAKE_PREFIX_PATH /Users/admin/Qt5.6.3-msvc2015/msvc2015_64)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER_TARGET ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32)
set(CMAKE_C_COMPILER ${LLVM_MINGW}/bin/x86_64-w64-mingw32-clang)
set(CMAKE_CXX_COMPILER ${LLVM_MINGW}/bin/x86_64-w64-mingw32-clang++)
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_VERSION 1)
# This is working (thanks to Simon for finding this trick)
set(CMAKE_AR ${LLVM_MINGW}/bin/llvm-ar)
set(CMAKE_RANLIB ${LLVM_MINGW}/bin/x86_64-w64-mingw32-ranlib)
set(CMAKE_RC_COMPILER ${LLVM_MINGW}/bin/llvm-rc)
set(CMAKE_RC_COMPILER /Users/admin/Projects/zig-cross/cmake/zig-rc)
set(CMAKE_PROJECT_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/qt-cross.cmake)
set(CMAKE_CXX_FLAGS_INIT "-stdlib=libc++ -mlzcnt")
set(CMAKE_EXE_LINKER_FLAGS_INIT "--start-no-unused-arguments -rtlib=compiler-rt -unwindlib=libunwind --end-no-unused-arguments")
set(CMAKE_MODULE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT}")
set(CMAKE_SHARED_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT}")

31
cmake/qt-cross.cmake Normal file
View File

@ -0,0 +1,31 @@
include_guard()
message(STATUS "Configuring Qt for cross-compilation...")
# Qt
#set(AUTOMOC_EXECUTABLE /Users/admin/Projects/qtbase-wasm32-wasi/bin/moc)
#set(AUTORCC_EXECUTABLE /Users/admin/Projects/qtbase-wasm32-wasi/bin/rcc)
#set(AUTOUIC_EXECUTABLE /Users/admin/Projects/qtbase-wasm32-wasi/bin/uic)
set(QT_HOST_BIN_DIR /Users/admin/Projects/qtbase-wasm32-wasi/bin/)
function(qt5_host_tool name)
if (NOT TARGET Qt5::${name})
add_executable(Qt5::${name} IMPORTED)
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
set(imported_location ${QT_HOST_BIN_DIR}/${name}.exe)
else()
set(imported_location ${QT_HOST_BIN_DIR}/${name})
endif()
if(NOT EXISTS ${imported_location})
message(FATAL_ERROR "Qt5 tool not found: ${imported_location}")
endif()
set_target_properties(Qt5::${name} PROPERTIES
IMPORTED_LOCATION ${imported_location}
)
endif()
endfunction()
qt5_host_tool(qmake)
qt5_host_tool(moc)
qt5_host_tool(rcc)
qt5_host_tool(uic)