diff options
Diffstat (limited to 'Utilities')
20 files changed, 481 insertions, 131 deletions
diff --git a/Utilities/Release/.gitattributes b/Utilities/Release/.gitattributes new file mode 100644 index 0000000..24e115f --- /dev/null +++ b/Utilities/Release/.gitattributes @@ -0,0 +1 @@ +*.patch -whitespace diff --git a/Utilities/Release/README.rst b/Utilities/Release/README.rst index de294d1..9993afa 100644 --- a/Utilities/Release/README.rst +++ b/Utilities/Release/README.rst @@ -9,49 +9,57 @@ on ``cmake.org``. See also the `CMake Source Code Guide`_. Docker ------ -The ``linux/<arch>/`` directories contain Docker specifications that anyone -may use to produce Linux binaries for CMake: +The ``<os>/<arch>/`` directories contain Docker specifications that anyone +may use to produce binaries for CMake on the following platforms: -* ``linux/<arch>/base/Dockerfile``: +* ``linux/x86_64/``: Linux on ``x86_64`` architectures. +* ``win/x86/``: Windows on ``x86_64`` and ``i386`` architectures. + +Each ``<os>/<arch>/`` directory contains the following: + +* ``<os>/<arch>/base/Dockerfile``: Produces a base image with a build environment for portable CMake binaries. This image is published in the `kitware/cmake Docker Hub Repository`_ - with tag ``build-linux-<arch>-base-<date>``. + with tag ``build-<os>-<arch>-base-<date>``. -* ``linux/<arch>/deps/Dockerfile``: +* ``<os>/<arch>/deps/Dockerfile``: Produces an image with custom-built dependencies for portable CMake binaries. This image is published in the `kitware/cmake Docker Hub Repository`_ - with tag ``build-linux-<arch>-deps-<date>``. + with tag ``build-<os>-<arch>-deps-<date>``. -* ``linux/<arch>/Dockerfile``: - Produce an image containing a portable CMake binary package for Linux. +* ``<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: + The resulting image will have an ``/out`` (or ``c:/out``) directory + containing the package. For example, on Linux ``x86_64``: .. code-block:: console $ docker build --tag=cmake:build --network none \ - -f cmake-src/Utilities/Release/linux/$arch/Dockerfile cmake-src + -f cmake-src/Utilities/Release/linux/x86_64/Dockerfile cmake-src $ docker container create --name cmake-build cmake:build $ docker cp cmake-build:/out . - $ ls out/cmake-*-Linux-$arch.* + $ ls out/cmake-*-Linux-x86_64.* -* ``linux/<arch>/test/Dockerfile``: + 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, build the test base image: + For example, on Linux ``x86_64``, one may build the test base image: .. code-block:: console $ docker build --tag=cmake:test-base \ - cmake-src/Utilities/Release/linux/$arch/test + cmake-src/Utilities/Release/linux/x86_64/test Then create a local ``test/Dockerfile`` to prepare an image with both the CMake source tree and the above-built package:: FROM cmake:test-base COPY cmake-src /opt/cmake/src/cmake - ADD out/cmake-<ver>-Linux-<arch>.tar.gz /opt/ - ENV PATH=/opt/cmake-<ver>-Linux-<arch>/bin:$PATH + ADD out/cmake-<ver>-Linux-x86_64.tar.gz /opt/ + ENV PATH=/opt/cmake-<ver>-Linux-x86_64/bin:$PATH Build the test image and run it to drive testing: @@ -61,6 +69,10 @@ may use to produce Linux binaries for CMake: $ 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 diff --git a/Utilities/Release/create-cmake-release.cmake b/Utilities/Release/create-cmake-release.cmake index 17a2151..88ac826 100644 --- a/Utilities/Release/create-cmake-release.cmake +++ b/Utilities/Release/create-cmake-release.cmake @@ -46,13 +46,9 @@ endfunction() write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh") write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-macos.sh" osx_release ) # macOS x86_64 -write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-win64.sh" win64_release ) # Windows x64 -write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-win32.sh" win32_release ) # Windows x86 message("Build docs first and then build for each platform: ./create-${CMAKE_CREATE_VERSION}-docs.sh && ./create-${CMAKE_CREATE_VERSION}-macos.sh && - ./create-${CMAKE_CREATE_VERSION}-win64.sh && - ./create-${CMAKE_CREATE_VERSION}-win32.sh && echo done ") diff --git a/Utilities/Release/linux/x86_64/test/cache-ninja.txt b/Utilities/Release/linux/x86_64/test/cache-ninja.txt deleted file mode 100644 index b00370e..0000000 --- a/Utilities/Release/linux/x86_64/test/cache-ninja.txt +++ /dev/null @@ -1,4 +0,0 @@ -CMAKE_Fortran_COMPILER:STRING= -CMake_TEST_IPO_WORKS_C:BOOL=ON -CMake_TEST_IPO_WORKS_CXX:BOOL=ON -CMake_TEST_Qt5:BOOL=ON diff --git a/Utilities/Release/win/x86/Dockerfile b/Utilities/Release/win/x86/Dockerfile new file mode 100644 index 0000000..a4f7445 --- /dev/null +++ b/Utilities/Release/win/x86/Dockerfile @@ -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% diff --git a/Utilities/Release/win/x86/base/Dockerfile b/Utilities/Release/win/x86/base/Dockerfile new file mode 100644 index 0000000..c2c00f8 --- /dev/null +++ b/Utilities/Release/win/x86/base/Dockerfile @@ -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:\ diff --git a/Utilities/Release/win/x86/base/msvc-i386.bat b/Utilities/Release/win/x86/base/msvc-i386.bat new file mode 100755 index 0000000..a63bdd2 --- /dev/null +++ b/Utilities/Release/win/x86/base/msvc-i386.bat @@ -0,0 +1 @@ +@C:\BuildTools\VC\Auxiliary\Build\vcvarsall.bat x86 diff --git a/Utilities/Release/win/x86/base/msvc-x86_64.bat b/Utilities/Release/win/x86/base/msvc-x86_64.bat new file mode 100755 index 0000000..cffe0e7 --- /dev/null +++ b/Utilities/Release/win/x86/base/msvc-x86_64.bat @@ -0,0 +1 @@ +@C:\BuildTools\VC\Auxiliary\Build\vcvarsall.bat x64 diff --git a/Utilities/Release/win/x86/build.bat b/Utilities/Release/win/x86/build.bat new file mode 100755 index 0000000..2125572 --- /dev/null +++ b/Utilities/Release/win/x86/build.bat @@ -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)" + ) +) diff --git a/Utilities/Release/win/x86/cache-i386.txt b/Utilities/Release/win/x86/cache-i386.txt new file mode 100644 index 0000000..3c0ecc7 --- /dev/null +++ b/Utilities/Release/win/x86/cache-i386.txt @@ -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 diff --git a/Utilities/Release/win/x86/cache-x86_64.txt b/Utilities/Release/win/x86/cache-x86_64.txt new file mode 100644 index 0000000..2ccf93b --- /dev/null +++ b/Utilities/Release/win/x86/cache-x86_64.txt @@ -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 diff --git a/Utilities/Release/win/x86/deps/Dockerfile b/Utilities/Release/win/x86/deps/Dockerfile new file mode 100644 index 0000000..4b294c1 --- /dev/null +++ b/Utilities/Release/win/x86/deps/Dockerfile @@ -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 diff --git a/Utilities/Release/win/x86/deps/qt-build.bat b/Utilities/Release/win/x86/deps/qt-build.bat new file mode 100755 index 0000000..e8bfa81 --- /dev/null +++ b/Utilities/Release/win/x86/deps/qt-build.bat @@ -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 diff --git a/Utilities/Release/win/x86/deps/qt-install.patch b/Utilities/Release/win/x86/deps/qt-install.patch new file mode 100644 index 0000000..39a649e --- /dev/null +++ b/Utilities/Release/win/x86/deps/qt-install.patch @@ -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) diff --git a/Utilities/Release/win/x86/pack.bat b/Utilities/Release/win/x86/pack.bat new file mode 100755 index 0000000..2d37eef --- /dev/null +++ b/Utilities/Release/win/x86/pack.bat @@ -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 diff --git a/Utilities/Release/win/x86/test/Dockerfile b/Utilities/Release/win/x86/test/Dockerfile new file mode 100644 index 0000000..15bcd37 --- /dev/null +++ b/Utilities/Release/win/x86/test/Dockerfile @@ -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:\ diff --git a/Utilities/Release/win/x86/test/test-ninja.bat b/Utilities/Release/win/x86/test/test-ninja.bat new file mode 100755 index 0000000..b8347ef --- /dev/null +++ b/Utilities/Release/win/x86/test/test-ninja.bat @@ -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% diff --git a/Utilities/Release/win/x86/test/test-nmake.bat b/Utilities/Release/win/x86/test/test-nmake.bat new file mode 100755 index 0000000..5008711 --- /dev/null +++ b/Utilities/Release/win/x86/test/test-nmake.bat @@ -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% diff --git a/Utilities/Release/win32_release.cmake b/Utilities/Release/win32_release.cmake deleted file mode 100644 index 993db6e..0000000 --- a/Utilities/Release/win32_release.cmake +++ /dev/null @@ -1,53 +0,0 @@ -set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory32") -set(CONFIGURE_WITH_CMAKE TRUE) -set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe") -set(PROCESSORS 16) -set(HOST win32) -set(RUN_LAUNCHER ~/rel/run) -set(CPACK_BINARY_GENERATORS "WIX ZIP") -set(CPACK_SOURCE_GENERATORS "") -set(MAKE_PROGRAM "ninja") -set(MAKE "${MAKE_PROGRAM} -j16") -set(qt_prefix "c:/Qt/5.12.1/msvc2017-32-w7-mt") -set(qt_win_libs - ${qt_prefix}/plugins/platforms/qwindows.lib - ${qt_prefix}/plugins/styles/qwindowsvistastyle.lib - ${qt_prefix}/lib/Qt5EventDispatcherSupport.lib - ${qt_prefix}/lib/Qt5FontDatabaseSupport.lib - ${qt_prefix}/lib/Qt5ThemeSupport.lib - ${qt_prefix}/lib/qtfreetype.lib - ${qt_prefix}/lib/qtlibpng.lib - imm32.lib - wtsapi32.lib - ) -set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release -CMAKE_DOC_DIR:STRING=doc/cmake -CMAKE_USE_OPENSSL:BOOL=OFF -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CMAKE_Fortran_COMPILER:FILEPATH=FALSE -CMAKE_GENERATOR:INTERNAL=Ninja -BUILD_QtDialog:BOOL=TRUE -CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 -CMAKE_MSVC_RUNTIME_LIBRARY:STRING=MultiThreaded$<$<CONFIG:Debug>:Debug> -CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,6.01 -CMake_QT_STATIC_QWindowsIntegrationPlugin_LIBRARIES:STRING=${qt_win_libs} -CMAKE_PREFIX_PATH:STRING=${qt_prefix} -CMake_TEST_Qt4:BOOL=OFF -CMake_TEST_Qt5:BOOL=OFF -PYTHON_EXECUTABLE:FILEPATH=C:/Python/3.8-64/python.exe -") -set(ppflags "-D_WIN32_WINNT=0x601 -DNTDDI_VERSION=0x06010000") -set(CFLAGS "${ppflags}") -set(CXXFLAGS "${ppflags}") -set(ENV ". ~/rel/env32") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(GIT_EXTRA "git config core.autocrlf true") -if(CMAKE_CREATE_VERSION STREQUAL "nightly") - # Some tests fail spuriously too often. - set(EXTRA_CTEST_ARGS "-E 'ConsoleBuf|Module.ExternalData'") - set(SIGN "") -else() - string(APPEND INITIAL_CACHE "CMake_INSTALL_SIGNTOOL:STRING=signtool\n") - set(SIGN [[signtool sign -v -a -tr http://timestamp.digicert.com -fd sha256 -td sha256 -d "CMake Windows Installer" cmake-*.msi]]) -endif() -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/win64_release.cmake b/Utilities/Release/win64_release.cmake deleted file mode 100644 index 3042889..0000000 --- a/Utilities/Release/win64_release.cmake +++ /dev/null @@ -1,53 +0,0 @@ -set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory64") -set(CONFIGURE_WITH_CMAKE TRUE) -set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe") -set(PROCESSORS 16) -set(HOST win64) -set(RUN_LAUNCHER ~/rel/run) -set(CPACK_BINARY_GENERATORS "WIX ZIP") -set(CPACK_SOURCE_GENERATORS "") -set(MAKE_PROGRAM "ninja") -set(MAKE "${MAKE_PROGRAM} -j16") -set(qt_prefix "c:/Qt/5.12.1/msvc2017-64-w7-mt") -set(qt_win_libs - ${qt_prefix}/plugins/platforms/qwindows.lib - ${qt_prefix}/plugins/styles/qwindowsvistastyle.lib - ${qt_prefix}/lib/Qt5EventDispatcherSupport.lib - ${qt_prefix}/lib/Qt5FontDatabaseSupport.lib - ${qt_prefix}/lib/Qt5ThemeSupport.lib - ${qt_prefix}/lib/qtfreetype.lib - ${qt_prefix}/lib/qtlibpng.lib - imm32.lib - wtsapi32.lib - ) -set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release -CMAKE_DOC_DIR:STRING=doc/cmake -CMAKE_USE_OPENSSL:BOOL=OFF -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CMAKE_Fortran_COMPILER:FILEPATH=FALSE -CMAKE_GENERATOR:INTERNAL=Ninja -BUILD_QtDialog:BOOL=TRUE -CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 -CMAKE_MSVC_RUNTIME_LIBRARY:STRING=MultiThreaded$<$<CONFIG:Debug>:Debug> -CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,6.01 -CMake_QT_STATIC_QWindowsIntegrationPlugin_LIBRARIES:STRING=${qt_win_libs} -CMAKE_PREFIX_PATH:STRING=${qt_prefix} -CMake_TEST_Qt4:BOOL=OFF -CMake_TEST_Qt5:BOOL=OFF -PYTHON_EXECUTABLE:FILEPATH=C:/Python/3.8-64/python.exe -") -set(ppflags "-D_WIN32_WINNT=0x601 -DNTDDI_VERSION=0x06010000") -set(CFLAGS "${ppflags}") -set(CXXFLAGS "${ppflags}") -set(ENV ". ~/rel/env64") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(GIT_EXTRA "git config core.autocrlf true") -if(CMAKE_CREATE_VERSION STREQUAL "nightly") - # Some tests fail spuriously too often. - set(EXTRA_CTEST_ARGS "-E 'ConsoleBuf|Module.ExternalData'") - set(SIGN "") -else() - string(APPEND INITIAL_CACHE "CMake_INSTALL_SIGNTOOL:STRING=signtool\n") - set(SIGN [[signtool sign -v -a -tr http://timestamp.digicert.com -fd sha256 -td sha256 -d "CMake Windows Installer" cmake-*.msi]]) -endif() -include(${path}/release_cmake.cmake) |