diff options
Diffstat (limited to 'Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake')
-rw-r--r-- | Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake b/Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake new file mode 100644 index 0000000..ae3651d --- /dev/null +++ b/Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake @@ -0,0 +1,121 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +# Run this script in a Visual Studio Command Prompt to generate Qt binaries. + +cmake_minimum_required(VERSION 3.23) + +if ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "x64") + set(arch "x86_64") +elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "x86") + set(arch "i386") +elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64") + set(arch "arm64") +else() + message("VSCMD_ARG_TGT_ARCH env var not recognized. Run this from a Visual Studio Command Prompt.") + return() +endif() + +if ("$ENV{VCToolsVersion}" MATCHES [[^([0-9][0-9])\.([0-9])]]) + set(toolset "msvc_v${CMAKE_MATCH_1}${CMAKE_MATCH_2}") +else() + message( "VCToolsVersion='$ENV{VCToolsVersion}' env var not recognized. Run this from a Visual Studio Command Prompt.") + return() +endif() + +set(srcname "qtbase-everywhere-src-6.3.0") +set(pkgname "qt-6.3.0-win-${arch}-${toolset}-1") +set(pkgname_host "qt-6.3.0-win-x86_64-${toolset}-1") +set(topdir "${CMAKE_CURRENT_BINARY_DIR}") +set(srcdir "${topdir}/${srcname}") +set(blddir "${topdir}/${pkgname}-build") +set(prefix "${topdir}/${pkgname}") +set(prefix_host "${topdir}/${pkgname_host}") + +# Qt Source +if (NOT EXISTS "${srcdir}") + file(DOWNLOAD "https://download.qt.io/official_releases/qt/6.3/6.3.0/submodules/qtbase-everywhere-src-6.3.0.tar.xz" qt.tar.xz + EXPECTED_HASH SHA256=b865aae43357f792b3b0a162899d9bf6a1393a55c4e5e4ede5316b157b1a0f99) + file(ARCHIVE_EXTRACT INPUT qt.tar.xz) + file(REMOVE qt.tar.xz) +endif() + +# Download and use LLVM's clang-cl to compiler for arm64 +if (arch STREQUAL "arm64" AND CMAKE_ARGV3 STREQUAL "clang-cl") + set(ENV{PATH} "c:/Program Files/LLVM/bin;$ENV{PATH}") + set(ENV{CC} "clang-cl --target=arm64-pc-windows-msvc") + set(ENV{CXX} "clang-cl --target=arm64-pc-windows-msvc") +endif() + +# Build Qt +if (NOT EXISTS "${blddir}") + file(MAKE_DIRECTORY "${blddir}") + if ("${arch}" STREQUAL "arm64") + set(qt_platform "win32-arm64-msvc") + set(qt_host_path -qt-host-path "${prefix_host}") + else() + set(qt_platform "win32-msvc") + unset(qt_host_path) + endif() + + execute_process( + RESULT_VARIABLE result + WORKING_DIRECTORY "${blddir}" + COMMAND + ${srcdir}/configure.bat + -prefix ${prefix} + -static + -static-runtime + -release + -opensource -confirm-license + -platform ${qt_platform} + ${qt_host_path} + -gui + -widgets + -qt-doubleconversion + -qt-freetype + -qt-harfbuzz + -qt-pcre + -qt-zlib + -qt-libpng + -qt-libjpeg + -no-gif + -no-icu + -no-pch + -no-opengl + -no-dbus + -no-accessibility + -no-feature-androiddeployqt + -no-feature-printsupport + -no-feature-sql + -nomake examples + -nomake tests + ) + if(NOT result EQUAL 0) + message(FATAL_ERROR "configure.bat failed: ${result}") + endif() + + execute_process( + RESULT_VARIABLE result + WORKING_DIRECTORY "${blddir}" + COMMAND ninja + ) + if(NOT result EQUAL 0) + message(FATAL_ERROR "ninja failed: ${result}") + endif() +endif() + +# Install Qt +if (NOT EXISTS "${prefix}") + execute_process( + RESULT_VARIABLE result + WORKING_DIRECTORY "${blddir}" + COMMAND ninja install + ) + if(NOT result EQUAL 0) + message(FATAL_ERROR "ninja install failed: ${result}") + endif() +endif() + +# Package Qt +file(ARCHIVE_CREATE OUTPUT "${pkgname}.zip" PATHS "${pkgname}" FORMAT "zip") |