From d183ff783bdd951eddd0f91f2aac45ed4ea06d9d Mon Sep 17 00:00:00 2001 From: Belonit <54427022+Belonit@users.noreply.github.com> Date: Wed, 2 Sep 2026 23:44:11 +0300 Subject: [PATCH 1/2] Package third-party licenses with releases --- .github/workflows/engine-build.yml | 16 +++++++++++++++ .github/workflows/engine-release.yml | 5 ++++- README.md | 2 ++ THIRD_PARTY_NOTICES.md | 19 ++++++++++++++++++ docs/BUILDING.md | 12 ++++++----- thirdparty/licenses/khronos-opengl.txt | 20 +++++++++++++++++++ thirdparty/licenses/khronos-vulkan-notice.txt | 3 +++ 7 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 THIRD_PARTY_NOTICES.md create mode 100644 thirdparty/licenses/khronos-opengl.txt create mode 100644 thirdparty/licenses/khronos-vulkan-notice.txt diff --git a/.github/workflows/engine-build.yml b/.github/workflows/engine-build.yml index 27f061ac..37713eed 100644 --- a/.github/workflows/engine-build.yml +++ b/.github/workflows/engine-build.yml @@ -71,6 +71,22 @@ jobs: - name: Test run: ctest --test-dir build -C ${{ matrix.configuration }} --output-on-failure + - name: Stage license notices + shell: bash + run: | + cp LICENSE.md THIRD_PARTY_NOTICES.md artifact/ + mkdir -p artifact/OpenTS_THIRD_PARTY_LICENSES + cp thirdparty/bgfx.cmake/bgfx/LICENSE artifact/OpenTS_THIRD_PARTY_LICENSES/bgfx.txt + cp thirdparty/bgfx.cmake/bx/LICENSE artifact/OpenTS_THIRD_PARTY_LICENSES/bx.txt + cp thirdparty/bgfx.cmake/bimg/LICENSE artifact/OpenTS_THIRD_PARTY_LICENSES/bimg.txt + cp thirdparty/bgfx.cmake/bgfx/3rdparty/directx-headers/LICENSE artifact/OpenTS_THIRD_PARTY_LICENSES/directx-headers.txt + cp thirdparty/bgfx.cmake/bx/include/tinystl/LICENSE artifact/OpenTS_THIRD_PARTY_LICENSES/tinystl.txt + cp thirdparty/bgfx.cmake/bimg/3rdparty/astc-encoder/LICENSE.txt artifact/OpenTS_THIRD_PARTY_LICENSES/astc-encoder.txt + cp thirdparty/licenses/khronos-opengl.txt artifact/OpenTS_THIRD_PARTY_LICENSES/khronos-opengl.txt + cat thirdparty/licenses/khronos-vulkan-notice.txt \ + thirdparty/bgfx.cmake/bimg/3rdparty/astc-encoder/LICENSE.txt \ + > artifact/OpenTS_THIRD_PARTY_LICENSES/khronos-vulkan.txt + - name: Upload runtime files uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: diff --git a/.github/workflows/engine-release.yml b/.github/workflows/engine-release.yml index ebedc9a0..db7f5173 100644 --- a/.github/workflows/engine-release.yml +++ b/.github/workflows/engine-release.yml @@ -37,7 +37,10 @@ jobs: - name: Package the release zip working-directory: artifact - run: zip "../OpenTS-${TAG}.zip" Game.exe Game.pdb Language.dll + run: > + zip -r "../OpenTS-${TAG}.zip" + Game.exe Game.pdb Language.dll + LICENSE.md THIRD_PARTY_NOTICES.md OpenTS_THIRD_PARTY_LICENSES - name: Attach the zip to the release env: diff --git a/README.md b/README.md index ec73afdb..8c37b484 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,8 @@ completed through reverse engineering against the original executable. OpenTS is licensed under the GNU General Public License, version 3 or later. Material derived from Electronic Arts source remains subject to the additional GPL Section 7 terms in [LICENSE.md](LICENSE.md). +[Third-party notices](THIRD_PARTY_NOTICES.md) identify bundled dependencies +and their licenses. [ACKNOWLEDGEMENTS.md](ACKNOWLEDGEMENTS.md) thanks the people, projects, and communities whose work made OpenTS possible. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md new file mode 100644 index 00000000..6cb4b838 --- /dev/null +++ b/THIRD_PARTY_NOTICES.md @@ -0,0 +1,19 @@ +# Third-party notices + +OpenTS binaries include software from the following projects. Each project +remains under its own license and copyright notices. + +| Project | Use | License | +| ------------------------------------------------------------------ | ----------------------------------------- | ------------ | +| [bgfx](https://github.com/bkaradzic/bgfx) | Rendering | BSD 2-Clause | +| [bx](https://github.com/bkaradzic/bx) | Foundation library used by bgfx | BSD 2-Clause | +| [bimg](https://github.com/bkaradzic/bimg) | Image and texture processing used by bgfx | BSD 2-Clause | +| [DirectX-Headers](https://github.com/microsoft/DirectX-Headers) | Direct3D API headers used by bgfx | MIT | +| [tinystl](https://github.com/mendsley/tinystl) | Containers used internally by bgfx | BSD 2-Clause | +| [astc-encoder](https://github.com/ARM-software/astc-encoder) | ASTC texture processing used by bimg | Apache-2.0 | +| [OpenGL Registry](https://github.com/KhronosGroup/OpenGL-Registry) | OpenGL API headers used by bgfx | MIT | +| [Vulkan Headers](https://github.com/KhronosGroup/Vulkan-Headers) | Vulkan API headers used by bgfx | Apache-2.0 | + +The source checkout keeps the license texts under `thirdparty/`. Binary +packages reproduce the license texts for the components used by OpenTS under +`OpenTS_THIRD_PARTY_LICENSES/`. diff --git a/docs/BUILDING.md b/docs/BUILDING.md index 01980ddc..312797ca 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -161,15 +161,17 @@ the latest successful scheduled run attached to downloadable artifacts. Both use the reusable `Engine build` workflow. On a Windows runner with Visual Studio 2022, it configures and builds Win32 Debug and Release with the commands above, runs CTest, and uploads each configuration's executable, language -library, and symbol file. Artifact names contain the configuration and short -commit. Linker maps are omitted because the symbol files are sufficient. +library, symbol file, and license notices. Artifact names contain the +configuration and short commit. Linker maps are omitted because the symbol +files are sufficient. After a successful pull-request build, `Engine build comment` maintains one pull-request comment with direct nightly.link downloads. Publishing a GitHub release runs `Engine release`. It builds the release commit -with `-DOPENTS_OFFICIAL_BUILD=ON`, packages `Game.exe`, `Language.dll`, and -`Game.pdb` in a zip named after the release tag, and attaches it to the -release. It also appends notes generated from the manual's change records by +with `-DOPENTS_OFFICIAL_BUILD=ON`, packages `Game.exe`, `Language.dll`, +`Game.pdb`, and the project and third-party license notices in a zip named +after the release tag, and attaches it to the release. It also appends notes +generated from the manual's change records by `python manual/tools/manage.py release-notes`. See [Maintaining](../manual/MAINTAINING.md) for the full release procedure. diff --git a/thirdparty/licenses/khronos-opengl.txt b/thirdparty/licenses/khronos-opengl.txt new file mode 100644 index 00000000..aab3b080 --- /dev/null +++ b/thirdparty/licenses/khronos-opengl.txt @@ -0,0 +1,20 @@ +Copyright 2013-2025 The Khronos Group Inc. +Copyright 2013-2020 The Khronos Group Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and/or associated documentation files (the "Materials"), +to deal in the Materials without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Materials, and to permit persons to whom the +Materials are furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Materials. + +THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN +THE MATERIALS. diff --git a/thirdparty/licenses/khronos-vulkan-notice.txt b/thirdparty/licenses/khronos-vulkan-notice.txt new file mode 100644 index 00000000..d879746c --- /dev/null +++ b/thirdparty/licenses/khronos-vulkan-notice.txt @@ -0,0 +1,3 @@ +Copyright 2015-2026 The Khronos Group Inc. + +Licensed under the Apache License, Version 2.0. The license terms follow. From 3b7f6ea2cea371ff42af2d919380374cf9150910 Mon Sep 17 00:00:00 2001 From: Belonit <54427022+Belonit@users.noreply.github.com> Date: Thu, 3 Sep 2026 14:14:09 +0300 Subject: [PATCH 2/2] Remove duplicate bgfx acknowledgement --- ACKNOWLEDGEMENTS.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md index 81362e6b..4257bbc9 100644 --- a/ACKNOWLEDGEMENTS.md +++ b/ACKNOWLEDGEMENTS.md @@ -55,9 +55,3 @@ change record credits the author where possible. - [C&C Mod Haven](https://discord.gg/k4SVuMm) - [CnCNet](https://cncnet.org) - -## Third-party libraries - -- [bgfx](https://github.com/bkaradzic/bgfx), with bx and bimg, vendored - through [bgfx.cmake](https://github.com/bkaradzic/bgfx.cmake) - (BSD-2-Clause).