diff --git a/.github/workflows/Windows-CI.yml b/.github/workflows/Windows-CI.yml index f8e8e264a9..fc50d3cb5d 100644 --- a/.github/workflows/Windows-CI.yml +++ b/.github/workflows/Windows-CI.yml @@ -1,10 +1,7 @@ -# This is a basic workflow to help you get started with Actions - name: Windows-CI # Controls when the action will run. on: - # Triggers the workflow on push or pull request events but only for the master branch push: pull_request: @@ -32,69 +29,66 @@ jobs: build-type: Debug env: - buildDir: '${{ github.workspace }}/build/' # Indicates the location of vcpkg VCPKG_ROOT: '${{ github.workspace }}/v' # Tells vcpkg where binary packages are stored. VCPKG_DEFAULT_BINARY_CACHE: '${{ github.workspace }}/vbincache' - ## Let's use GitHub Action cache as storage for the vcpkg Binary Caching feature. - #VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite' + # Let's use GitHub Action cache as storage for the vcpkg Binary Caching feature. + VCPKG_BINARY_SOURCES: 'x-gha,readwrite' VCPKG_DEFAULT_TRIPLET: x64-windows VCPKG_DEFAULT_HOST_TRIPLET: x64-windows - #PYTHONHOME: '${{ github.workspace }}/v/packages/python3_x64-windows/tools/python3' # Steps represent a sequence of tasks that will be executed as part of the job steps: # Set env vars needed for vcpkg to leverage the GitHub Action cache as a storage # for Binary Caching. - - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 #v6.4.1 + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1 with: script: | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - - name: Set up Python - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 #v4.7.1 - with: - python-version: '3.11.5' - check-latest: true - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 + uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f #v4.1.3 + + - name: Setup Python + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d #v5.1.0 + with: + python-version: 3.11 - name: "Create directory '${{ env.VCPKG_DEFAULT_BINARY_CACHE }}'" run: mkdir -p $VCPKG_DEFAULT_BINARY_CACHE shell: bash - name: install-cmake - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a #v3.27.9 + uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa #v3.29.2 with: - cmakeVersion: 3.27.9 + cmakeVersion: 3.29.2 ninjaVersion: 1.11.1 - # # Restore vcpkg from the GitHub Action cache service. Note that packages are restored by vcpkg's binary caching - # # when it is being run afterward by CMake. - # - name: restore-vcpkg - # uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 #v3.3.1 - # with: - # # The first path is the location of vcpkg: it contains the vcpkg executable and data files, as long as the - # # built package archives (aka binary cache) which are located by VCPKG_DEFAULT_BINARY_CACHE env var. - # # The other paths starting with '!' are exclusions: they contain temporary files generated during the build of the installed packages. - # path: | - # ${{ env.VCPKG_ROOT }} - # !${{ env.VCPKG_ROOT }}/buildtrees - # !${{ env.VCPKG_ROOT }}/packages - # !${{ env.VCPKG_ROOT }}/downloads - # !${{ env.VCPKG_ROOT }}/installed - # # The key is composed in a way that it gets properly invalidated whenever a different version of vcpkg is being used. - # key: | - # ${{ hashFiles( '.git/modules/vcpkg/HEAD' )}} + # Restore vcpkg from the GitHub Action cache service. Note that packages are restored by vcpkg's binary caching + # when it is being run afterward by CMake. + - name: restore-vcpkg + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2 + with: + # The first path is the location of vcpkg: it contains the vcpkg executable and data files, as long as the + # built package archives (aka binary cache) which are located by VCPKG_DEFAULT_BINARY_CACHE env var. + # The other paths starting with '!' are exclusions: they contain temporary files generated during the build of the installed packages. + path: | + ${{ env.VCPKG_ROOT }} + !${{ env.VCPKG_ROOT }}/buildtrees + !${{ env.VCPKG_ROOT }}/packages + !${{ env.VCPKG_ROOT }}/downloads + !${{ env.VCPKG_ROOT }}/installed + # The key is composed in a way that it gets properly invalidated whenever a different version of vcpkg is being used. + key: | + ${{ matrix.os }}-${{ hashFiles( './engine/vcpkg.json' )}} - name: install-vcpkg - #if: steps.cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: | - git clone https://github.com/vegastrike/vcpkg-local.git ${{ env.VCPKG_ROOT }} + git clone https://github.com/Microsoft/vcpkg.git ${{ env.VCPKG_ROOT }} ${{ env.VCPKG_ROOT }}\bootstrap-vcpkg.bat -disableMetrics - name: run-build-script diff --git a/.github/workflows/gh-actions-pr.yml b/.github/workflows/gh-actions-pr.yml index e773ed5a70..acdc453278 100644 --- a/.github/workflows/gh-actions-pr.yml +++ b/.github/workflows/gh-actions-pr.yml @@ -81,11 +81,11 @@ jobs: USE_PYTHON_3: 'ON' OpenGL_GL_PREFERENCE: 'GLVND' allow_failure: false - - FROM: 'debian:buster' - COMPILER: 'clang' - USE_PYTHON_3: 'ON' - OpenGL_GL_PREFERENCE: 'GLVND' - allow_failure: false + #- FROM: 'debian:buster' + # COMPILER: 'clang' + # USE_PYTHON_3: 'ON' + # OpenGL_GL_PREFERENCE: 'GLVND' + # allow_failure: false - FROM: 'opensuse/leap:15.5' COMPILER: 'clang' USE_PYTHON_3: 'ON' @@ -121,11 +121,11 @@ jobs: USE_PYTHON_3: 'ON' OpenGL_GL_PREFERENCE: 'GLVND' allow_failure: false - - FROM: 'rockylinux/8.7' - COMPILER: 'clang' - USE_PYTHON_3: 'ON' - OpenGL_GL_PREFERENCE: 'GLVND' - allow_failure: false + #- FROM: 'rockylinux/8.7' + # COMPILER: 'clang' + # USE_PYTHON_3: 'ON' + # OpenGL_GL_PREFERENCE: 'GLVND' + # allow_failure: false - FROM: 'manjarolinux/base' COMPILER: 'clang' USE_PYTHON_3: 'ON' diff --git a/.github/workflows/gh-actions-release.yml b/.github/workflows/gh-actions-release.yml index 7c15d057ac..b7f93ebff1 100644 --- a/.github/workflows/gh-actions-release.yml +++ b/.github/workflows/gh-actions-release.yml @@ -86,16 +86,16 @@ jobs: USE_PYTHON_3: 'ON' OpenGL_GL_PREFERENCE: 'GLVND' ARTIFACT_EXT: 'deb' - - FROM: 'debian:buster' - COMPILER: 'clang' - USE_PYTHON_3: 'ON' - OpenGL_GL_PREFERENCE: 'LEGACY' - ARTIFACT_EXT: 'deb' - - FROM: 'debian:buster' - COMPILER: 'clang' - USE_PYTHON_3: 'ON' - OpenGL_GL_PREFERENCE: 'GLVND' - ARTIFACT_EXT: 'deb' + #- FROM: 'debian:buster' + # COMPILER: 'clang' + # USE_PYTHON_3: 'ON' + # OpenGL_GL_PREFERENCE: 'LEGACY' + # ARTIFACT_EXT: 'deb' + #- FROM: 'debian:buster' + # COMPILER: 'clang' + # USE_PYTHON_3: 'ON' + # OpenGL_GL_PREFERENCE: 'GLVND' + # ARTIFACT_EXT: 'deb' - FROM: 'opensuse/leap:15.5' COMPILER: 'clang' USE_PYTHON_3: 'ON' @@ -156,16 +156,16 @@ jobs: USE_PYTHON_3: 'ON' OpenGL_GL_PREFERENCE: 'GLVND' ARTIFACT_EXT: 'rpm' - - FROM: 'rockylinux:8.7' - COMPILER: 'clang' - USE_PYTHON_3: 'ON' - OpenGL_GL_PREFERENCE: 'LEGACY' - ARTIFACT_EXT: 'rpm' - - FROM: 'rockylinux/8.7' - COMPILER: 'clang' - USE_PYTHON_3: 'ON' - OpenGL_GL_PREFERENCE: 'GLVND' - ARTIFACT_EXT: 'rpm' + #- FROM: 'rockylinux:8.7' + # COMPILER: 'clang' + # USE_PYTHON_3: 'ON' + # OpenGL_GL_PREFERENCE: 'LEGACY' + # ARTIFACT_EXT: 'rpm' + #- FROM: 'rockylinux/8.7' + # COMPILER: 'clang' + # USE_PYTHON_3: 'ON' + # OpenGL_GL_PREFERENCE: 'GLVND' + # ARTIFACT_EXT: 'rpm' steps: #- name: Set up Python diff --git a/.github/workflows/macos-ci.yml b/.github/workflows/macos-ci.yml index 92cd77ad4c..58a39eba8f 100644 --- a/.github/workflows/macos-ci.yml +++ b/.github/workflows/macos-ci.yml @@ -43,17 +43,3 @@ jobs: MY_OS_NAME: macos FLAGS: '-DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_FIND_APPBUNDLE=LAST' run: script/cibuild $FLAGS - -# - name: Test -# working-directory: ${{github.workspace}}/build -# env: -# GTEST_OUTPUT: xml -# GTEST_COLOR: 1 -# run: ctest -V -# -# - name: Upload test results -# uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce #v3.1.2 -# if: failure() -# with: -# name: test_results_xml -# path: ${{github.workspace}}/build/test-results/**/*.xml diff --git a/engine/CMakePresets.json b/engine/CMakePresets.json index a9c3c6c4ef..3efa31b535 100644 --- a/engine/CMakePresets.json +++ b/engine/CMakePresets.json @@ -282,12 +282,17 @@ "displayName": "Windows Default", "description": "Default build for Windows", "environment": { - "VCPKG_DEFAULT_TRIPLET": "x64-windows", - "VCPKG_DEFAULT_HOST_TRIPLET": "x64-windows", - "VCPKG_TARGET_TRIPLET": "x64-windows", - "VCPKG_HOST_TRIPLET": "x64-windows" + "VCPKG_TARGET_TRIPLET": "x64-windows-win10", + "VCPKG_HOST_TRIPLET": "x64-windows-win10" + }, + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": { + "value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "type": "FILEPATH" + }, + "VCPKG_TARGET_TRIPLET": "x64-windows-win10", + "VCPKG_HOST_TRIPLET": "x64-windows-win10" }, - "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", "debug": { "output": true, "find": true @@ -329,7 +334,7 @@ "hidden": true, "inherits": "windows-default", "displayName": "Ninja on Windows", - "generator": "Ninja", + "generator": "Ninja Multi-Config", "condition": { "type": "equals", "lhs": "${hostSystemName}", diff --git a/engine/custom-triplets/x64-windows-win10.cmake b/engine/custom-triplets/x64-windows-win10.cmake new file mode 100644 index 0000000000..86fcd42071 --- /dev/null +++ b/engine/custom-triplets/x64-windows-win10.cmake @@ -0,0 +1,6 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +set(VCPKG_C_FLAGS "${VCPKG_C_FLAGS} /DBOOST_ALL_DYN_LINK /DBOOST_USE_WINAPI_VERSION=0x0A00 /D_WIN32_WINNT=0x0A00 /DWINVER=0x0A00") +set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} /DBOOST_ALL_DYN_LINK /DBOOST_USE_WINAPI_VERSION=0x0A00 /D_WIN32_WINNT=0x0A00 /DWINVER=0x0A00") diff --git a/engine/vcpkg-configuration.json b/engine/vcpkg-configuration.json index 81539fafef..fce0cec112 100644 --- a/engine/vcpkg-configuration.json +++ b/engine/vcpkg-configuration.json @@ -1,8 +1,4 @@ { "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json", - "default-registry": { - "kind": "git", - "baseline": "45c660987c371515ddcc5c355e7989c0d652b85f", - "repository": "https://github.com/vegastrike/vcpkg-local" - } + "overlay-triplets": [ "./custom-triplets" ] } diff --git a/engine/vcpkg.json b/engine/vcpkg.json index 5bb4441d25..42a32cc6c6 100644 --- a/engine/vcpkg.json +++ b/engine/vcpkg.json @@ -1,28 +1,31 @@ { - "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json", - "name": "vega-strike", - "version-string": "0.8.2", - "dependencies": [ - "boost-python", - "boost-log", - "boost-date-time", - "boost-iostreams", - "boost-system", - "boost-filesystem", - "boost-thread", - "boost-chrono", - "boost-atomic", - "boost-assign", - "boost-program-options", - "expat", - "freeglut", - "libpng", - "libjpeg-turbo", - "libvorbis", - "openal-soft", - "opengl", - "opengl-registry", - "sdl1", - "zlib" - ] + "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", + "name": "vega-strike", + "version-string": "0.8.2", + "builtin-baseline": "da4b78d35084ec4e9808aa02017028da03b8d2ab", + "dependencies": [ + "boost-python", + "boost-log", + "boost-date-time", + "boost-iostreams", + "boost-system", + "boost-filesystem", + "boost-thread", + "boost-chrono", + "boost-atomic", + "boost-assign", + "boost-format", + "boost-program-options", + "egl-registry", + "expat", + "freeglut", + "libpng", + "libjpeg-turbo", + "libvorbis", + "openal-soft", + "opengl", + "openssl", + "sdl1", + "zlib" + ] } diff --git a/script/bootstrap.ps1 b/script/bootstrap.ps1 index 24624ba90e..c9323367e0 100644 --- a/script/bootstrap.ps1 +++ b/script/bootstrap.ps1 @@ -1,4 +1,6 @@ -# Copyright (C) 2021 Stephen G. Tuggy +# bootstrap.ps1 + +# Copyright (C) 2021-2024 Stephen G. Tuggy and other Vega Strike contributors # https://github.com/vegastrike/Vega-Strike-Engine-Source @@ -11,31 +13,41 @@ # Vega Strike is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with Vega Strike. If not, see . +# along with Vega Strike. If not, see . # You can customize this directory location if desired, but it should be # something very short. Otherwise, you will run into problems. -Set-Variable -Name VCKPG_PARENT_DIR -Value "C:\Projects" -Set-Variable -Name CMAKE_VERSION -Value "3.20.2" +param( + [String]$VCPKG_PARENT_DIR = "C:\Projects" +) + +Set-Variable -Name CMAKE_VERSION -Value "3.29.2" -New-Item "$VCKPG_PARENT_DIR" -ItemType Directory -Force -Push-Location "$VCKPG_PARENT_DIR" -git clone https://github.com/Microsoft/vcpkg.git -.\vcpkg\bootstrap-vcpkg.bat -disableMetrics +New-Item "$VCPKG_PARENT_DIR" -ItemType Directory -Force +Push-Location "$VCPKG_PARENT_DIR" +git clone https://github.com/vegastrike/vcpkg-local.git ./v +.\v\bootstrap-vcpkg.bat -disableMetrics -[Environment]::SetEnvironmentVariable('VCPKG_ROOT', "$VCKPG_PARENT_DIR\vcpkg", 'User') +[Environment]::SetEnvironmentVariable('VCPKG_ROOT', "$VCPKG_PARENT_DIR\v", 'User') +$env:VCPKG_ROOT = "$VCPKG_PARENT_DIR\v" $path = [Environment]::GetEnvironmentVariable('PATH', 'User') -$newPath = $path + ";$VCKPG_PARENT_DIR\vcpkg\downloads\tools\cmake-$CMAKE_VERSION-windows\cmake-$CMAKE_VERSION-windows-i386\bin" +$newPath = $path + ";$VCPKG_PARENT_DIR\v\downloads\tools\cmake-$CMAKE_VERSION-windows\cmake-$CMAKE_VERSION-windows-i386\bin" [Environment]::SetEnvironmentVariable('PATH', $newPath, 'User') +$env:PATH = $newPath -[Environment]::SetEnvironmentVariable('VCPKG_DEFAULT_TRIPLET', 'x64-windows', 'User') -[Environment]::SetEnvironmentVariable('PYTHONHOME', "$VCKPG_PARENT_DIR\vcpkg\packages\python3_x64-windows\tools\python3", 'User') +$triplet = 'x64-windows' +[Environment]::SetEnvironmentVariable('VCPKG_DEFAULT_TRIPLET', $triplet, 'User') +$env:VCPKG_DEFAULT_TRIPLET = $triplet +[Environment]::SetEnvironmentVariable('VCPKG_DEFAULT_HOST_TRIPLET', $triplet, 'User') +$env:VCPKG_DEFAULT_HOST_TRIPLET = $triplet -Pop-Location +$pythonHome = "$VCPKG_PARENT_DIR\v\packages\python3_x64-windows\tools\python3" +[Environment]::SetEnvironmentVariable('PYTHONHOME', $pythonHome, 'User') +$env:PYTHONHOME = $pythonHome -. refreshenv +Pop-Location