Utilities/Release: Add docker specs to build and test Windows binaries
These will allow anyone to produce portable binaries like those
published on `cmake.org`.
Follow the pattern from commit facc240a45
(Utilities/Release: Add docker
specs to build and test Linux binaries, 2019-08-23, v3.16.0-rc1~184^2~2).
Parameterize the architecture to support both `x86_64` and `i386`.
This commit is contained in:
parent
5f4f7e637a
commit
ff929badb3
1
Utilities/Release/.gitattributes
vendored
Normal file
1
Utilities/Release/.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.patch -whitespace
|
@ -13,6 +13,7 @@ The ``<os>/<arch>/`` directories contain Docker specifications that anyone
|
||||
may use to produce binaries for CMake on the following platforms:
|
||||
|
||||
* ``linux/x86_64/``: Linux on ``x86_64`` architectures.
|
||||
* ``win/x86/``: Windows on ``x86_64`` and ``i386`` architectures.
|
||||
|
||||
Each ``<os>/<arch>/`` directory contains the following:
|
||||
|
||||
@ -29,8 +30,8 @@ Each ``<os>/<arch>/`` directory contains the following:
|
||||
* ``<os>/<arch>/Dockerfile``:
|
||||
Produce an image containing a portable CMake binary package.
|
||||
Build this image using the CMake source directory as the build context.
|
||||
The resulting image will have an ``/out`` directory containing the package.
|
||||
For example, on Linux ``x86_64``:
|
||||
The resulting image will have an ``/out`` (or ``c:/out``) directory
|
||||
containing the package. For example, on Linux ``x86_64``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@ -40,6 +41,9 @@ Each ``<os>/<arch>/`` directory contains the following:
|
||||
$ docker cp cmake-build:/out .
|
||||
$ ls out/cmake-*-Linux-x86_64.*
|
||||
|
||||
On Windows, the ``win/x86`` specifications support both the ``x86_64``
|
||||
and ``i386`` architectures selected via ``--build-arg ARCH=...``.
|
||||
|
||||
* ``<os>/<arch>/test/Dockerfile``:
|
||||
Produces a base image with a test environment for packaged CMake binaries.
|
||||
For example, on Linux ``x86_64``, one may build the test base image:
|
||||
@ -65,6 +69,10 @@ Each ``<os>/<arch>/`` directory contains the following:
|
||||
$ docker run --network none cmake:test bash test-make.bash
|
||||
$ docker run --network none cmake:test bash test-ninja.bash
|
||||
|
||||
On Windows, the test scripts are called ``test-nmake.bat`` and
|
||||
``test-ninja.bat``. In the ``x86`` architecture they accept one
|
||||
argument specifying either ``x86_64`` or ``i386``.
|
||||
|
||||
.. _`kitware/cmake Docker Hub Repository`: https://hub.docker.com/r/kitware/cmake
|
||||
|
||||
Scripts for Kitware
|
||||
|
23
Utilities/Release/win/x86/Dockerfile
Normal file
23
Utilities/Release/win/x86/Dockerfile
Normal file
@ -0,0 +1,23 @@
|
||||
# escape=`
|
||||
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce an image containing a portable CMake binary package for Windows.
|
||||
# Build using the CMake source directory as the build context.
|
||||
# The resulting image will have a 'c:\out' directory containing the package.
|
||||
|
||||
ARG FROM_IMAGE_NAME=kitware/cmake:build-win-x86-deps-2020-04-27
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:04e229c0c0ba2247855d0e8c0fb87c1686f983adbafa4ce413e61b3905edb76b
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
|
||||
FROM $FROM_IMAGE as build
|
||||
COPY . C:\cmake\src\cmake
|
||||
ARG ARCH="x86_64"
|
||||
ARG TEST="true"
|
||||
RUN \cmake\src\cmake\Utilities\Release\win\x86\build.bat %ARCH% %TEST%
|
||||
|
||||
# Package in a separate stage so the builder can optionally skip it.
|
||||
FROM build as pack
|
||||
ARG PACK="ZIP WIX"
|
||||
RUN \cmake\src\cmake\Utilities\Release\win\x86\pack.bat %PACK%
|
30
Utilities/Release/win/x86/base/Dockerfile
Normal file
30
Utilities/Release/win/x86/base/Dockerfile
Normal file
@ -0,0 +1,30 @@
|
||||
# escape=`
|
||||
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce a base image with a build environment for portable CMake binaries.
|
||||
# Build using the directory containing this file as its own build context.
|
||||
|
||||
ARG FROM_IMAGE_NAME=mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:a94289bfd61ba89cd162f7cf84afe0e307d4d2576b44b9bd277e7b3036ccfa6b
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
FROM $FROM_IMAGE
|
||||
|
||||
# Use a traditional Windows shell.
|
||||
SHELL ["cmd", "/S", "/C"]
|
||||
|
||||
# Install Visual Studio Build Tools for desktop development with C++.
|
||||
ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe
|
||||
RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
|
||||
--installPath C:\BuildTools `
|
||||
--add Microsoft.VisualStudio.Workload.VCTools `
|
||||
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 `
|
||||
--add Microsoft.VisualStudio.Component.VC.CLI.Support `
|
||||
--add Microsoft.VisualStudio.Component.VC.ATL `
|
||||
--add Microsoft.VisualStudio.Component.Windows10SDK.18362 `
|
||||
|| IF "%ERRORLEVEL%"=="3010" EXIT 0
|
||||
RUN del C:\TEMP\vs_buildtools.exe
|
||||
|
||||
# Add a toolchain environment loader for each architecture.
|
||||
COPY msvc-x86_64.bat msvc-i386.bat C:\
|
1
Utilities/Release/win/x86/base/msvc-i386.bat
Executable file
1
Utilities/Release/win/x86/base/msvc-i386.bat
Executable file
@ -0,0 +1 @@
|
||||
@C:\BuildTools\VC\Auxiliary\Build\vcvarsall.bat x86
|
1
Utilities/Release/win/x86/base/msvc-x86_64.bat
Executable file
1
Utilities/Release/win/x86/base/msvc-x86_64.bat
Executable file
@ -0,0 +1 @@
|
||||
@C:\BuildTools\VC\Auxiliary\Build\vcvarsall.bat x64
|
19
Utilities/Release/win/x86/build.bat
Executable file
19
Utilities/Release/win/x86/build.bat
Executable file
@ -0,0 +1,19 @@
|
||||
@rem Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
@rem file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
set ARCH=%1
|
||||
set TEST=%2
|
||||
|
||||
copy \msvc-%ARCH%.bat \msvc.bat
|
||||
call \msvc.bat && @echo on || exit /b
|
||||
set PATH=C:\ninja;%PATH%
|
||||
|
||||
mkdir \cmake\src\cmake-build && ^
|
||||
cd \cmake\src\cmake-build && ^
|
||||
copy ..\cmake\Utilities\Release\win\x86\cache-%ARCH%.txt CMakeCache.txt && ^
|
||||
\cmake\cmake\bin\cmake ..\cmake -GNinja && ^
|
||||
ninja && (
|
||||
if "%TEST%"=="true" (
|
||||
bin\ctest --output-on-failure -j %NUMBER_OF_PROCESSORS% -R "^(CMake\.|CMakeLib\.|CMakeServerLib\.|RunCMake\.ctest_memcheck)"
|
||||
)
|
||||
)
|
45
Utilities/Release/win/x86/cache-i386.txt
Normal file
45
Utilities/Release/win/x86/cache-i386.txt
Normal file
@ -0,0 +1,45 @@
|
||||
CMAKE_BUILD_TYPE:STRING=Release
|
||||
|
||||
# Use APIs from at most Windows 7
|
||||
CMAKE_C_FLAGS:STRING=-D_WIN32_WINNT=0x601 -DNTDDI_VERSION=0x06010000
|
||||
CMAKE_CXX_FLAGS:STRING=-GR -EHsc -D_WIN32_WINNT=0x601 -DNTDDI_VERSION=0x06010000
|
||||
CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,6.01
|
||||
|
||||
# Link C/C++ runtime library statically.
|
||||
CMAKE_MSVC_RUNTIME_LIBRARY:STRING=MultiThreaded$<$<CONFIG:Debug>:Debug>
|
||||
|
||||
# No ssl support in curl: use native Windows APIs.
|
||||
CMAKE_USE_OPENSSL:BOOL=OFF
|
||||
|
||||
# Enable cmake-gui with static qt plugins
|
||||
BUILD_QtDialog:BOOL=TRUE
|
||||
CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3
|
||||
CMAKE_PREFIX_PATH:STRING=C:/qt-i386
|
||||
CMake_QT_STATIC_QWindowsIntegrationPlugin_LIBRARIES:STRING=c:/qt-i386/plugins/platforms/qwindows.lib;c:/qt-i386/plugins/styles/qwindowsvistastyle.lib;c:/qt-i386/lib/Qt5EventDispatcherSupport.lib;c:/qt-i386/lib/Qt5FontDatabaseSupport.lib;c:/qt-i386/lib/Qt5ThemeSupport.lib;c:/qt-i386/lib/qtfreetype.lib;c:/qt-i386/lib/qtlibpng.lib;imm32.lib;wtsapi32.lib
|
||||
|
||||
# Build documentation.
|
||||
CMAKE_DOC_DIR:STRING=doc/cmake
|
||||
PYTHON_EXECUTABLE:FILEPATH=C:/python3/python.exe
|
||||
SPHINX_EXECUTABLE:FILEPATH=C:/python3/Scripts/sphinx-build.exe
|
||||
SPHINX_HTML:BOOL=ON
|
||||
SPHINX_MAN:BOOL=ON
|
||||
SPHINX_QTHELP:BOOL=ON
|
||||
QCOLLECTIONGENERATOR_EXECUTABLE:PATH=C:/qt-i386/bin/qhelpgenerator.exe
|
||||
|
||||
# No bootstrap with MSVC tools.
|
||||
CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE
|
||||
|
||||
# No MFC in base image.
|
||||
CTEST_RUN_MFC:BOOL=OFF
|
||||
|
||||
# No Fortran compiler.
|
||||
CMAKE_Fortran_COMPILER:FILEPATH=FALSE
|
||||
|
||||
# No Swift compiler.
|
||||
CMAKE_Swift_COMPILER:FILEPATH=FALSE
|
||||
|
||||
# Skip Qt5 tests because our Qt is static.
|
||||
CMake_TEST_Qt5:BOOL=FALSE
|
||||
|
||||
# CPack package file name component for this platform.
|
||||
CPACK_SYSTEM_NAME:STRING=win32-x86
|
45
Utilities/Release/win/x86/cache-x86_64.txt
Normal file
45
Utilities/Release/win/x86/cache-x86_64.txt
Normal file
@ -0,0 +1,45 @@
|
||||
CMAKE_BUILD_TYPE:STRING=Release
|
||||
|
||||
# Use APIs from at most Windows 7
|
||||
CMAKE_C_FLAGS:STRING=-D_WIN32_WINNT=0x601 -DNTDDI_VERSION=0x06010000
|
||||
CMAKE_CXX_FLAGS:STRING=-GR -EHsc -D_WIN32_WINNT=0x601 -DNTDDI_VERSION=0x06010000
|
||||
CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,6.01
|
||||
|
||||
# Link C/C++ runtime library statically.
|
||||
CMAKE_MSVC_RUNTIME_LIBRARY:STRING=MultiThreaded$<$<CONFIG:Debug>:Debug>
|
||||
|
||||
# No ssl support in curl: use native Windows APIs.
|
||||
CMAKE_USE_OPENSSL:BOOL=OFF
|
||||
|
||||
# Enable cmake-gui with static qt plugins
|
||||
BUILD_QtDialog:BOOL=TRUE
|
||||
CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3
|
||||
CMAKE_PREFIX_PATH:STRING=C:/qt-x86_64
|
||||
CMake_QT_STATIC_QWindowsIntegrationPlugin_LIBRARIES:STRING=c:/qt-x86_64/plugins/platforms/qwindows.lib;c:/qt-x86_64/plugins/styles/qwindowsvistastyle.lib;c:/qt-x86_64/lib/Qt5EventDispatcherSupport.lib;c:/qt-x86_64/lib/Qt5FontDatabaseSupport.lib;c:/qt-x86_64/lib/Qt5ThemeSupport.lib;c:/qt-x86_64/lib/qtfreetype.lib;c:/qt-x86_64/lib/qtlibpng.lib;imm32.lib;wtsapi32.lib
|
||||
|
||||
# Build documentation.
|
||||
CMAKE_DOC_DIR:STRING=doc/cmake
|
||||
PYTHON_EXECUTABLE:FILEPATH=C:/python3/python.exe
|
||||
SPHINX_EXECUTABLE:FILEPATH=C:/python3/Scripts/sphinx-build.exe
|
||||
SPHINX_HTML:BOOL=ON
|
||||
SPHINX_MAN:BOOL=ON
|
||||
SPHINX_QTHELP:BOOL=ON
|
||||
QCOLLECTIONGENERATOR_EXECUTABLE:PATH=C:/qt-x86_64/bin/qhelpgenerator.exe
|
||||
|
||||
# No bootstrap with MSVC tools.
|
||||
CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE
|
||||
|
||||
# No MFC in base image.
|
||||
CTEST_RUN_MFC:BOOL=OFF
|
||||
|
||||
# No Fortran compiler.
|
||||
CMAKE_Fortran_COMPILER:FILEPATH=FALSE
|
||||
|
||||
# No Swift compiler.
|
||||
CMAKE_Swift_COMPILER:FILEPATH=FALSE
|
||||
|
||||
# Skip Qt5 tests because our Qt is static.
|
||||
CMake_TEST_Qt5:BOOL=FALSE
|
||||
|
||||
# CPack package file name component for this platform.
|
||||
CPACK_SYSTEM_NAME:STRING=win64-x64
|
127
Utilities/Release/win/x86/deps/Dockerfile
Normal file
127
Utilities/Release/win/x86/deps/Dockerfile
Normal file
@ -0,0 +1,127 @@
|
||||
# escape=`
|
||||
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce an image with custom-built dependencies for portable CMake binaries.
|
||||
# Build using the directory containing this file as its own build context.
|
||||
|
||||
ARG FROM_IMAGE_NAME=kitware/cmake:build-win-x86-base-2020-04-27
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:c5a8948d636319cdac0180266996558bb6fb037125792b5b837f069d02e53d7c
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
|
||||
# Qt Source
|
||||
FROM $FROM_IMAGE AS qt-src
|
||||
|
||||
# JOM
|
||||
ADD http://download.qt-project.org/official_releases/jom/unstable-jom.zip C:\jom\jom.zip
|
||||
RUN cd \jom `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash jom.zip).Hash -eq '128fdd846fe24f8594eed37d1d8929a0ea78df563537c0c1b1861a635013fff8') {`
|
||||
Expand-Archive -Path jom.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del jom.zip
|
||||
|
||||
# XZ
|
||||
ADD https://tukaani.org/xz/xz-5.2.5-windows.zip C:\xz\xz.zip
|
||||
RUN cd \xz `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash xz.zip).Hash -eq 'd83b82ca75dfab39a13dda364367b34970c781a9df4d41264db922ac3a8f622d') {`
|
||||
Expand-Archive -Path xz.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del xz.zip
|
||||
|
||||
# Git
|
||||
ADD https://github.com/git-for-windows/git/releases/download/v2.26.2.windows.1/MinGit-2.26.2-busybox-64-bit.zip C:\git\git.zip
|
||||
RUN cd \git `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash git.zip).Hash -eq 'e834ea73fe093fb180dc45f67a1f2a7a566dab53d1d45bc3cd150106f5c40520') {`
|
||||
Expand-Archive -Path git.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del git.zip
|
||||
|
||||
# Qt Source
|
||||
ADD https://download.qt.io/official_releases/qt/5.12/5.12.1/single/qt-everywhere-src-5.12.1.tar.xz C:\qt-src\qt.tar.xz
|
||||
RUN cd \qt-src `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash qt.tar.xz).Hash -eq 'caffbd625c7bc10ff8c5c7a27dbc7d84fa4de146975c0e1ffe904b514ccd6da4') {`
|
||||
\xz\bin_x86-64\xz -d qt.tar.xz `
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& tar xvf qt.tar `
|
||||
&& del qt.tar `
|
||||
&& move qt-everywhere-src-5.12.1 qt
|
||||
COPY qt-build.bat qt-install.patch C:\qt-src\
|
||||
|
||||
# Qt Build i386
|
||||
FROM qt-src as qt-i386
|
||||
RUN \qt-src\qt-build.bat i386
|
||||
|
||||
# Qt Build x86_64
|
||||
FROM qt-src as qt-x86_64
|
||||
RUN \qt-src\qt-build.bat x86_64
|
||||
|
||||
# Output Stage
|
||||
FROM $FROM_IMAGE
|
||||
|
||||
# Qt
|
||||
COPY --from=qt-i386 C:\qt-i386 C:\qt-i386
|
||||
COPY --from=qt-x86_64 C:\qt-x86_64 C:\qt-x86_64
|
||||
|
||||
# WIX
|
||||
ADD https://github.com/wixtoolset/wix3/releases/download/wix3112rtm/wix311-binaries.zip C:\wix\wix.zip
|
||||
RUN cd \wix `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash wix.zip).Hash -eq '2c1888d5d1dba377fc7fa14444cf556963747ff9a0a289a3599cf09da03b9e2e') {`
|
||||
Expand-Archive -Path wix.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del wix.zip
|
||||
|
||||
# Python and Sphinx
|
||||
ADD https://www.python.org/ftp/python/3.8.2/python-3.8.2-embed-amd64.zip C:\python3\python3.zip
|
||||
RUN cd \python3 `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash python3.zip).Hash -eq '2927a3a6d0fe1f6e047a86059220aeda374eed23113b9ef5355acb8452d56453') {`
|
||||
Expand-Archive -Path python3.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del python3.zip `
|
||||
&& curl -O https://bootstrap.pypa.io/get-pip.py `
|
||||
&& python get-pip.py `
|
||||
&& del python38._pth `
|
||||
&& set "PY_LIBS=C:\python3\Lib;C:\Python3\Lib\site-packages" `
|
||||
&& set "PY_PIP=C:\python3\Scripts" `
|
||||
&& Scripts\pip install --no-warn-script-location sphinx==2.1.2
|
||||
|
||||
# Ninja
|
||||
ADD https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip C:\ninja\ninja.zip
|
||||
RUN cd \ninja `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash ninja.zip).Hash -eq '919fd158c16bf135e8a850bb4046ec1ce28a7439ee08b977cd0b7f6b3463d178') {`
|
||||
Expand-Archive -Path ninja.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del ninja.zip
|
||||
|
||||
# CMake
|
||||
ADD https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1-win64-x64.zip C:\cmake\cmake.zip
|
||||
RUN cd \cmake `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash cmake.zip).Hash -eq 'a5af7a2fe73f34070456397e940042e4469f072126c82974f44333ac43d478b1') {`
|
||||
Expand-Archive -Path cmake.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& move cmake-*-win64-x64 cmake `
|
||||
&& del cmake.zip
|
47
Utilities/Release/win/x86/deps/qt-build.bat
Executable file
47
Utilities/Release/win/x86/deps/qt-build.bat
Executable file
@ -0,0 +1,47 @@
|
||||
set ARCH=%1
|
||||
call \msvc-%ARCH%.bat && @echo on || exit /b
|
||||
mkdir \qt-src\qt-build && ^
|
||||
cd \qt-src\qt-build && ^
|
||||
..\qt\configure.bat ^
|
||||
-prefix C:/qt-%ARCH% ^
|
||||
-static ^
|
||||
-static-runtime ^
|
||||
-release ^
|
||||
-opensource -confirm-license ^
|
||||
-platform win32-msvc ^
|
||||
-mp ^
|
||||
-gui ^
|
||||
-widgets ^
|
||||
-qt-pcre ^
|
||||
-qt-zlib ^
|
||||
-qt-libpng ^
|
||||
-qt-libjpeg ^
|
||||
-no-gif ^
|
||||
-no-icu ^
|
||||
-no-pch ^
|
||||
-no-angle ^
|
||||
-no-opengl ^
|
||||
-no-dbus ^
|
||||
-no-harfbuzz ^
|
||||
-no-accessibility ^
|
||||
-skip declarative ^
|
||||
-skip multimedia ^
|
||||
-skip qtcanvas3d ^
|
||||
-skip qtconnectivity ^
|
||||
-skip qtdeclarative ^
|
||||
-skip qtlocation ^
|
||||
-skip qtmultimedia ^
|
||||
-skip qtsensors ^
|
||||
-skip qtserialport ^
|
||||
-skip qtsvg ^
|
||||
-skip qtwayland ^
|
||||
-skip qtwebchannel ^
|
||||
-skip qtwebengine ^
|
||||
-skip qtwebsockets ^
|
||||
-skip qtxmlpatterns ^
|
||||
-nomake examples -nomake tests ^
|
||||
&& ^
|
||||
\jom\jom.exe -J %NUMBER_OF_PROCESSORS% && ^
|
||||
\jom\jom.exe install && ^
|
||||
cd \qt-%ARCH% && ^
|
||||
\git\cmd\git apply \qt-src\qt-install.patch
|
26
Utilities/Release/win/x86/deps/qt-install.patch
Normal file
26
Utilities/Release/win/x86/deps/qt-install.patch
Normal file
@ -0,0 +1,26 @@
|
||||
diff --git a/lib/cmake/Qt5Core/Qt5CoreConfig.cmake b/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
|
||||
index 04ec302..75d5596 100644
|
||||
--- a/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
|
||||
+++ b/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
|
||||
@@ -118,7 +118,7 @@ if (NOT TARGET Qt5::Core)
|
||||
list(REMOVE_DUPLICATES Qt5Core_COMPILE_DEFINITIONS)
|
||||
list(REMOVE_DUPLICATES Qt5Core_EXECUTABLE_COMPILE_FLAGS)
|
||||
|
||||
- set(_Qt5Core_LIB_DEPENDENCIES "")
|
||||
+ set(_Qt5Core_LIB_DEPENDENCIES "${_qt5Core_install_prefix}/lib/qtpcre2.lib;netapi32.lib;version.lib")
|
||||
|
||||
|
||||
add_library(Qt5::Core STATIC IMPORTED)
|
||||
diff --git a/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake b/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
|
||||
index a07b953..2e07371 100644
|
||||
--- a/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
|
||||
+++ b/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
|
||||
@@ -118,7 +118,7 @@ if (NOT TARGET Qt5::Widgets)
|
||||
list(REMOVE_DUPLICATES Qt5Widgets_COMPILE_DEFINITIONS)
|
||||
list(REMOVE_DUPLICATES Qt5Widgets_EXECUTABLE_COMPILE_FLAGS)
|
||||
|
||||
- set(_Qt5Widgets_LIB_DEPENDENCIES "Qt5::Gui;Qt5::Core")
|
||||
+ set(_Qt5Widgets_LIB_DEPENDENCIES "Qt5::Gui;Qt5::Core;dwmapi.lib;uxtheme.lib")
|
||||
|
||||
|
||||
add_library(Qt5::Widgets STATIC IMPORTED)
|
12
Utilities/Release/win/x86/pack.bat
Executable file
12
Utilities/Release/win/x86/pack.bat
Executable file
@ -0,0 +1,12 @@
|
||||
@rem Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
@rem file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
call \msvc.bat && @echo on || exit /b
|
||||
set PATH=C:\wix;C:\ninja;%PATH%
|
||||
cd \cmake\src\cmake-build && (
|
||||
for %%p in (%*) do (
|
||||
bin\cpack -G %%p
|
||||
)
|
||||
) && ^
|
||||
mkdir \out && ^
|
||||
move cmake-*-win* \out
|
37
Utilities/Release/win/x86/test/Dockerfile
Normal file
37
Utilities/Release/win/x86/test/Dockerfile
Normal file
@ -0,0 +1,37 @@
|
||||
# escape=`
|
||||
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce a base image with a test environment for packaged CMake binaries.
|
||||
# Build using the directory containing this file as its own build context.
|
||||
|
||||
ARG FROM_IMAGE_NAME=kitware/cmake:build-win-x86-base-2020-04-27
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:c5a8948d636319cdac0180266996558bb6fb037125792b5b837f069d02e53d7c
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
FROM $FROM_IMAGE
|
||||
|
||||
# Python
|
||||
ADD https://www.python.org/ftp/python/3.8.2/python-3.8.2-embed-amd64.zip C:\python3\python3.zip
|
||||
RUN cd \python3 `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash python3.zip).Hash -eq '2927a3a6d0fe1f6e047a86059220aeda374eed23113b9ef5355acb8452d56453') {`
|
||||
Expand-Archive -Path python3.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del python3.zip `
|
||||
&& del python38._pth
|
||||
|
||||
# Ninja
|
||||
ADD https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip C:\ninja\ninja.zip
|
||||
RUN cd \ninja `
|
||||
&& powershell -Command " `
|
||||
if ($(Get-FileHash ninja.zip).Hash -eq '919fd158c16bf135e8a850bb4046ec1ce28a7439ee08b977cd0b7f6b3463d178') {`
|
||||
Expand-Archive -Path ninja.zip -DestinationPath .`
|
||||
} else {`
|
||||
exit 1 `
|
||||
}" `
|
||||
&& del ninja.zip
|
||||
|
||||
COPY test-nmake.bat test-ninja.bat C:\
|
19
Utilities/Release/win/x86/test/test-ninja.bat
Executable file
19
Utilities/Release/win/x86/test/test-ninja.bat
Executable file
@ -0,0 +1,19 @@
|
||||
@rem Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
@rem file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
set ARCH=%1
|
||||
call \msvc-%ARCH%.bat && @echo on || exit /b
|
||||
set "PATH=C:\cmake\cmake\bin;C:\ninja;C:\python3;%PATH%"
|
||||
mkdir \cmake\src\cmake-ninja && ^
|
||||
cd \cmake\src\cmake-ninja && ^
|
||||
> CMakeCache.txt (
|
||||
@echo CMAKE_Fortran_COMPILER:STRING=
|
||||
@echo CMAKE_Swift_COMPILER:STRING=
|
||||
@echo CMake_TEST_IPO_WORKS_C:BOOL=ON
|
||||
@echo CMake_TEST_IPO_WORKS_CXX:BOOL=ON
|
||||
@echo CMake_TEST_NO_NETWORK:BOOL=ON
|
||||
@echo CTEST_RUN_MFC:BOOL=OFF
|
||||
) && ^
|
||||
cmake ..\cmake -DCMake_TEST_HOST_CMAKE=1 -G "Ninja" && ^
|
||||
ninja && ^
|
||||
ctest --output-on-failure -j %NUMBER_OF_PROCESSORS%
|
19
Utilities/Release/win/x86/test/test-nmake.bat
Executable file
19
Utilities/Release/win/x86/test/test-nmake.bat
Executable file
@ -0,0 +1,19 @@
|
||||
@rem Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
@rem file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
set ARCH=%1
|
||||
call \msvc-%ARCH%.bat && @echo on || exit /b
|
||||
set "PATH=C:\cmake\cmake\bin;C:\python3;%PATH%"
|
||||
mkdir \cmake\src\cmake-nmake && ^
|
||||
cd \cmake\src\cmake-nmake && ^
|
||||
> CMakeCache.txt (
|
||||
@echo CMAKE_Fortran_COMPILER:STRING=
|
||||
@echo CMAKE_Swift_COMPILER:STRING=
|
||||
@echo CMake_TEST_IPO_WORKS_C:BOOL=ON
|
||||
@echo CMake_TEST_IPO_WORKS_CXX:BOOL=ON
|
||||
@echo CMake_TEST_NO_NETWORK:BOOL=ON
|
||||
@echo CTEST_RUN_MFC:BOOL=OFF
|
||||
) && ^
|
||||
cmake ..\cmake -DCMake_TEST_HOST_CMAKE=1 -G "NMake Makefiles" && ^
|
||||
nmake && ^
|
||||
ctest --output-on-failure -j %NUMBER_OF_PROCESSORS%
|
Loading…
Reference in New Issue
Block a user