summaryrefslogtreecommitdiffstats
path: root/Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake
diff options
context:
space:
mode:
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.cmake121
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")