CMake/Utilities/Release
2022-06-13 15:27:34 -04:00
..
linux Utilities/Release: Drop unnecessary system API definitions for Linux 2022-06-06 11:44:53 -04:00
macos Utilities/Release: Drop SLA from CMake macOS DMG package 2022-04-20 13:27:39 -04:00
win Utilities/Release: Add script to build Qt 6.3.0 Windows binaries 2022-06-13 15:02:47 -04:00
WiX Revise include order using clang-format-6.0 2019-10-01 12:26:36 -04:00
.gitattributes Utilities/Release: Add docker specs to build and test Windows binaries 2020-05-05 14:56:26 -04:00
CMakeInstall.bmp BUG: Put back CMakeInstall.bmp in order to build a package with NSIS on Windows. It was inadvertently removed. 2007-09-06 17:47:47 -04:00
CMakeLogo.ico cmake-gui: Update icons 2018-08-16 11:56:08 -04:00
consolidate-relnotes.bash Utilities/Release: Add script to consolidate release notes 2017-06-02 14:18:34 -04:00
files-sign.bash Utilities/Release: Add script to generate a table of files 2021-04-05 13:43:51 -04:00
files-v1.json.in Utilities/Release: Add windows-arm64 package to file table 2022-06-13 15:27:34 -04:00
files-v1.rst Utilities/Release: Add windows-arm64 package to file table 2022-06-13 15:27:34 -04:00
files.bash Utilities/Release: Add script to generate a table of files 2021-04-05 13:43:51 -04:00
push.bash Utilities/Release: Teach "push" script to create destination subdirectory 2019-10-10 14:24:32 -04:00
README.rst Utilities/Release: Drop docker specs for Windows binaries 2022-06-01 12:43:22 -04:00

CMake Release Utilities
***********************

This directory contains scripts used to package CMake itself for distribution
on ``cmake.org``.  See also the `CMake Source Code Guide`_.

.. _`CMake Source Code Guide`: ../../Help/dev/source.rst

File Table
----------

The set of package files distributed on ``cmake.org`` varies by CMake version.
Clients providing automatic download functionality may query the set of
package files available using a special file that lists them:

* `File Table v1`_ Documentation

.. _`File Table v1`: files-v1.rst

Docker
------

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.
* ``linux/aarch64/``: Linux on ``aarch64`` 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-<os>-<arch>-base-<date>``.

* ``<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-<os>-<arch>-deps-<date>``.

* ``<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``:

  .. code-block:: console

    $ docker build --tag=cmake:build --network none \
        -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-x86_64.*

* ``<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:

  .. code-block:: console

    $ docker build --tag=cmake:test-base \
        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-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:

  .. code-block:: console

    $ docker build --tag cmake:test --network none -f test/Dockerfile .
    $ docker run --network none cmake:test bash test-make.bash
    $ docker run --network none cmake:test bash test-ninja.bash

.. _`kitware/cmake Docker Hub Repository`: https://hub.docker.com/r/kitware/cmake

macOS
-----

The ``macos/`` directory contains scripts used to produce dependencies
for building CMake binaries on macOS.

Windows
-------

The ``win/`` directory contains scripts used to produce dependencies
for building CMake binaries on Windows.