diff --git a/cmake/llvm-mingw.cmake b/cmake/llvm-mingw.cmake new file mode 100644 index 00000000..1599e40c --- /dev/null +++ b/cmake/llvm-mingw.cmake @@ -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}") \ No newline at end of file diff --git a/cmake/qt-cross.cmake b/cmake/qt-cross.cmake new file mode 100644 index 00000000..6eb46f0f --- /dev/null +++ b/cmake/qt-cross.cmake @@ -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)