diff --git a/.github/workflows/mapbase_build-base-dispatch.yml b/.github/workflows/mapbase_build-base-dispatch.yml index d89d151e..cf7a3baa 100644 --- a/.github/workflows/mapbase_build-base-dispatch.yml +++ b/.github/workflows/mapbase_build-base-dispatch.yml @@ -18,14 +18,6 @@ on: options: - Release - Debug - branch: - description: 'Which Source 2013 engine branch to compile for' - default: 'sp' - required: true - type: choice - options: - - sp - - mp game: description: 'Name of the game to build (if relevant)' default: 'episodic' @@ -34,6 +26,8 @@ on: options: - episodic - hl2 + - hl2mp + - tf project-group: description: 'Which group of projects to compile' required: true @@ -63,7 +57,6 @@ jobs: uses: ./.github/workflows/mapbase_build-base.yml with: configuration: '${{ github.event.inputs.configuration }}' - branch: '${{ github.event.inputs.branch }}' game: '${{ github.event.inputs.game }}' project-group: '${{ github.event.inputs.project-group }}' solution-name: '${{ github.event.inputs.solution-name }}' diff --git a/.github/workflows/mapbase_build-base.yml b/.github/workflows/mapbase_build-base.yml index 45602a72..8e9f9d34 100644 --- a/.github/workflows/mapbase_build-base.yml +++ b/.github/workflows/mapbase_build-base.yml @@ -21,11 +21,6 @@ on: default: 'Release' required: true type: string - branch: - description: 'Which Source 2013 engine branch to compile for' - default: 'sp' - required: true - type: string game: description: 'The name of the game to build (if relevant)' default: 'episodic' @@ -52,38 +47,34 @@ jobs: steps: - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.13' - name: Add MSBuild to PATH uses: compnerd/gha-setup-vsdevenv@v6 - - name: Enable VS2022 - working-directory: '${{inputs.branch}}/src/vpc_scripts' - shell: bash - run: sed -i 's/^\($Conditional[ ]\+VS2022[ ]\+\).*/\1"1"/' newer_vs_toolsets.vpc - - name: Pick game if: inputs.project-group == 'game' || inputs.project-group == 'shaders' - working-directory: '${{inputs.branch}}/src' + working-directory: 'src' shell: bash - run: sed -i 's/\/hl2 \/episodic/\/${{inputs.game}}/' create${{inputs.project-group}}projects.bat + run: sed -i 's/\/hl2mp \/tf/\/${{inputs.game}}/' create${{inputs.project-group}}projects.bat - name: Create project files - working-directory: '${{inputs.branch}}/src' + working-directory: 'src' shell: cmd - # https://github.com/ValveSoftware/source-sdk-2013/issues/72 run: | - reg add "HKLM\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\Projects\{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}" /v DefaultProjectExtension /t REG_SZ /d vcproj /f create${{inputs.project-group}}projects.bat # -------------------------------------------------------------------- - name: Build #if: steps.filter.outputs.game == 'true' - working-directory: '${{inputs.branch}}/src' + working-directory: 'src' shell: cmd run: | devenv ${{inputs.solution-name}}.sln /upgrade - msbuild -m -t:Rebuild -p:Configuration=${{inputs.configuration}};Platform=x86 ${{inputs.solution-name}}.sln + msbuild -m -t:Rebuild -p:Configuration=${{inputs.configuration}};Platform=win64 ${{inputs.solution-name}}.sln # -------------------------------------------------------------------- @@ -93,7 +84,7 @@ jobs: with: name: '${{inputs.project-group}}_${{inputs.game}}_win32_${{ inputs.configuration }}' path: | - ${{inputs.branch}}/game/mod_${{inputs.game}}/bin/*.dll + game/mod_${{inputs.game}}/bin/*.dll if-no-files-found: error - name: Publish map tools @@ -102,8 +93,8 @@ jobs: with: name: '${{inputs.project-group}}_win32_${{ inputs.configuration }}' path: | - ${{inputs.branch}}/game/bin/*.exe - ${{inputs.branch}}/game/bin/*.dll + game/bin/*.exe + game/bin/*.dll if-no-files-found: error - name: Publish everything @@ -112,8 +103,8 @@ jobs: with: name: 'everything_win32_${{ inputs.configuration }}' path: | - ${{inputs.branch}}/game/bin - ${{inputs.branch}}/game/mod_*/bin + game/bin + game/mod_*/bin if-no-files-found: error build_ubuntu: @@ -124,36 +115,32 @@ jobs: config: ${{ inputs.configuration }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: Install GCC/G++ multilib + - name: Install dependencies run: | sudo apt-get update - sudo apt-get install gcc-multilib g++-multilib + sudo apt-get -y install podman python3 - name: Pick game if: inputs.project-group == 'game' || inputs.project-group == 'shaders' - working-directory: '${{inputs.branch}}/src' + working-directory: 'src' shell: bash - run: sed -i 's/\/hl2 \/episodic/\/${{inputs.game}}/' create${{inputs.project-group}}projects + run: sed -i 's/\/hl2mp \/tf/\/${{inputs.game}}/' build${{inputs.project-group}}projects - name: Set configuration - working-directory: '${{inputs.branch}}/src' + working-directory: 'src' shell: bash run: | config=${{inputs.configuration}} export CFG=${config,,} echo "config=${CFG}" >> $GITHUB_ENV - - name: Create project files - working-directory: '${{inputs.branch}}/src' - run: ./create${{inputs.project-group}}projects - # -------------------------------------------------------------------- - name: Build - working-directory: '${{inputs.branch}}/src' - run: make CFG=${{env.config}} -f ${{inputs.solution-name}}.mak + working-directory: 'src' + run: ./build${{inputs.project-group}}projects ${config,,} # -------------------------------------------------------------------- @@ -163,8 +150,8 @@ jobs: with: name: '${{inputs.project-group}}_${{inputs.game}}_linux32_${{ inputs.configuration }}' path: | - ${{inputs.branch}}/game/mod_${{inputs.game}}/bin/*.so - !${{inputs.branch}}/game/mod_${{inputs.game}}/bin/*_srv.so + game/mod_${{inputs.game}}/bin/*.so + !game/mod_${{inputs.game}}/bin/*_srv.so if-no-files-found: error #- name: Publish map tools @@ -173,11 +160,11 @@ jobs: # with: # name: '${{inputs.project-group}}_linux32_${{ inputs.configuration }}' # path: | - # ${{inputs.branch}}/game/bin/vbsp - # ${{inputs.branch}}/game/bin/vvis - # ${{inputs.branch}}/game/bin/vvis_dll.so - # ${{inputs.branch}}/game/bin/vrad - # ${{inputs.branch}}/game/bin/vrad_dll.so + # game/bin/vbsp + # game/bin/vvis + # game/bin/vvis_dll.so + # game/bin/vrad + # game/bin/vrad_dll.so # if-no-files-found: error # For now, don't publish the .dbg files even though we publish .pdb files on Windows @@ -188,8 +175,8 @@ jobs: with: name: 'everything_linux32_${{ inputs.configuration }}' path: | - ${{inputs.branch}}/game/bin/*.so - !${{inputs.branch}}/game/bin/*_srv.so - ${{inputs.branch}}/game/mod_*/bin/*.so - !${{inputs.branch}}/game/mod_*/bin/*_srv.so + game/bin/*.so + !game/bin/*_srv.so + game/mod_*/bin/*.so + !game/mod_*/bin/*_srv.so if-no-files-found: error diff --git a/.github/workflows/mapbase_build-sp-games.yml b/.github/workflows/mapbase_build-games.yml similarity index 74% rename from .github/workflows/mapbase_build-sp-games.yml rename to .github/workflows/mapbase_build-games.yml index dc5511ae..3ca30bfd 100644 --- a/.github/workflows/mapbase_build-sp-games.yml +++ b/.github/workflows/mapbase_build-games.yml @@ -14,14 +14,14 @@ on: - develop paths: - '.github/workflows/mapbase_build-base.yml' - - '.github/workflows/mapbase_build-sp-rel-games.yml' - - 'sp/src/vpc_scripts/**' - - 'sp/src/game/**' - - 'sp/src/mathlib/**' - - 'sp/src/responserules/runtime/**' - - 'sp/src/tier1/**' - - 'sp/src/vgui2/vgui_controls/**' - - 'sp/src/vscript/**' + - '.github/workflows/mapbase_build-games.yml' + - 'src/vpc_scripts/**' + - 'src/game/**' + - 'src/mathlib/**' + - 'src/responserules/runtime/**' + - 'src/tier1/**' + - 'src/vgui2/vgui_controls/**' + - 'src/vscript/**' jobs: games: @@ -31,7 +31,6 @@ jobs: uses: ./.github/workflows/mapbase_build-base.yml with: configuration: ${{ matrix.configuration }} - branch: 'sp' game: 'episodic' # Change this if your mod is not using HL2/Episodic game projects project-group: 'game' solution-name: 'games' diff --git a/.github/workflows/mapbase_build-sp-maptools.yml b/.github/workflows/mapbase_build-maptools.yml similarity index 61% rename from .github/workflows/mapbase_build-sp-maptools.yml rename to .github/workflows/mapbase_build-maptools.yml index 0ae631b3..2c620c21 100644 --- a/.github/workflows/mapbase_build-sp-maptools.yml +++ b/.github/workflows/mapbase_build-maptools.yml @@ -13,17 +13,17 @@ on: branches: - develop paths: - - '.github/workflows/mapbase_build-sp-rel-maptools.yml' - - 'sp/src/vpc_scripts/**' - - 'sp/src/utils/vbsp/**' - - 'sp/src/utils/vvis/**' - - 'sp/src/utils/vvis_launcher/**' - - 'sp/src/utils/vrad/**' - - 'sp/src/utils/vrad_launcher/**' - - 'sp/src/mathlib/**' - - 'sp/src/tier1/**' - - 'sp/src/vgui2/vgui_controls/**' - - 'sp/src/vscript/**' + - '.github/workflows/mapbase_build-maptools.yml' + - 'src/vpc_scripts/**' + - 'src/utils/vbsp/**' + - 'src/utils/vvis/**' + - 'src/utils/vvis_launcher/**' + - 'src/utils/vrad/**' + - 'src/utils/vrad_launcher/**' + - 'src/mathlib/**' + - 'src/tier1/**' + - 'src/vgui2/vgui_controls/**' + - 'src/vscript/**' jobs: maptools: @@ -33,6 +33,5 @@ jobs: uses: ./.github/workflows/mapbase_build-base.yml with: configuration: ${{ matrix.configuration }} - branch: 'sp' project-group: 'maptools' solution-name: 'maptools' diff --git a/.github/workflows/mapbase_build-master.yml b/.github/workflows/mapbase_build-master.yml index 9f70451b..fb1b2bce 100644 --- a/.github/workflows/mapbase_build-master.yml +++ b/.github/workflows/mapbase_build-master.yml @@ -25,7 +25,6 @@ jobs: uses: ./.github/workflows/mapbase_build-base.yml with: configuration: ${{ matrix.configuration }} - branch: 'sp' project-group: 'all' solution-name: 'everything' build-on-linux: true # Disable this if you don't want to compile for Linux diff --git a/.github/workflows/mapbase_build-sp-shaders.yml b/.github/workflows/mapbase_build-shaders.yml similarity index 84% rename from .github/workflows/mapbase_build-sp-shaders.yml rename to .github/workflows/mapbase_build-shaders.yml index 73036e10..30078a71 100644 --- a/.github/workflows/mapbase_build-sp-shaders.yml +++ b/.github/workflows/mapbase_build-shaders.yml @@ -13,10 +13,10 @@ on: branches: - develop paths: - - '.github/workflows/mapbase_build-sp-rel-shaders.yml' - - 'sp/src/vpc_scripts/**' - - 'sp/src/materialsystem/**' - - 'sp/src/mathlib/**' + - '.github/workflows/mapbase_build-shaders.yml' + - 'src/vpc_scripts/**' + - 'src/materialsystem/**' + - 'src/mathlib/**' jobs: shaders: diff --git a/src/buildallprojects b/src/buildallprojects index 12c1b83b..20680ec9 100755 --- a/src/buildallprojects +++ b/src/buildallprojects @@ -24,7 +24,7 @@ fi solution_out="_vpc_/ninja/sdk_everything_$VPC_NINJA_BUILD_MODE" if [[ ! -e "$solution_out.ninja" ]]; then - devtools/bin/vpc /hl2mp /tf /linux64 /ninja /define:SOURCESDK +everything /mksln "$solution_out" + devtools/bin/vpc /hl2mp /tf /hl2 /episodic /linux64 /ninja /define:SOURCESDK +everything /mksln "$solution_out" # Generate compile commands. ninja -f "$solution_out.ninja" -t compdb > compile_commands.json diff --git a/src/buildgameprojects b/src/buildgameprojects new file mode 100755 index 00000000..c335c41f --- /dev/null +++ b/src/buildgameprojects @@ -0,0 +1,38 @@ +#!/bin/bash + +set -euo pipefail + +script=$(readlink -f -- "$0") +pushd "$(dirname -- "$script")" > /dev/null + +source sdk_container +run_in_sniper "$@" + +if [ $# -eq 0 ]; then + export VPC_NINJA_BUILD_MODE="release" +else + if [[ "$1" == "debug" ]]; then + export VPC_NINJA_BUILD_MODE="debug" + elif [[ "$1" == "release" ]]; then + export VPC_NINJA_BUILD_MODE="release" + else + echo "Usage: $0 [debug|release]" + exit 1 + fi +fi + +solution_out="_vpc_/ninja/sdk_everything_$VPC_NINJA_BUILD_MODE" + +if [[ ! -e "$solution_out.ninja" ]]; then + devtools/bin/vpc /hl2mp /tf /linux64 /ninja /define:SOURCESDK +game /mksln "$solution_out" + + # Generate compile commands. + ninja -f "$solution_out.ninja" -t compdb > compile_commands.json + # Remove some unsupported clang commands. + sed -i 's/-fpredictive-commoning//g; s/-fvar-tracking-assignments//g' compile_commands.json + sed -i 's|/my_mod/src|.|g' compile_commands.json +fi + +ninja -f "$solution_out.ninja" -j$(nproc) + +popd diff --git a/src/buildgameprojects_hl2 b/src/buildgameprojects_hl2 new file mode 100755 index 00000000..651ee05f --- /dev/null +++ b/src/buildgameprojects_hl2 @@ -0,0 +1,38 @@ +#!/bin/bash + +set -euo pipefail + +script=$(readlink -f -- "$0") +pushd "$(dirname -- "$script")" > /dev/null + +source sdk_container +run_in_sniper "$@" + +if [ $# -eq 0 ]; then + export VPC_NINJA_BUILD_MODE="release" +else + if [[ "$1" == "debug" ]]; then + export VPC_NINJA_BUILD_MODE="debug" + elif [[ "$1" == "release" ]]; then + export VPC_NINJA_BUILD_MODE="release" + else + echo "Usage: $0 [debug|release]" + exit 1 + fi +fi + +solution_out="_vpc_/ninja/sdk_everything_$VPC_NINJA_BUILD_MODE" + +if [[ ! -e "$solution_out.ninja" ]]; then + devtools/bin/vpc /hl2 /episodic /linux64 /ninja /define:SOURCESDK +game /mksln "$solution_out" + + # Generate compile commands. + ninja -f "$solution_out.ninja" -t compdb > compile_commands.json + # Remove some unsupported clang commands. + sed -i 's/-fpredictive-commoning//g; s/-fvar-tracking-assignments//g' compile_commands.json + sed -i 's|/my_mod/src|.|g' compile_commands.json +fi + +ninja -f "$solution_out.ninja" -j$(nproc) + +popd diff --git a/src/buildshadersprojects b/src/buildshadersprojects new file mode 100755 index 00000000..f7a730c3 --- /dev/null +++ b/src/buildshadersprojects @@ -0,0 +1,38 @@ +#!/bin/bash + +set -euo pipefail + +script=$(readlink -f -- "$0") +pushd "$(dirname -- "$script")" > /dev/null + +source sdk_container +run_in_sniper "$@" + +if [ $# -eq 0 ]; then + export VPC_NINJA_BUILD_MODE="release" +else + if [[ "$1" == "debug" ]]; then + export VPC_NINJA_BUILD_MODE="debug" + elif [[ "$1" == "release" ]]; then + export VPC_NINJA_BUILD_MODE="release" + else + echo "Usage: $0 [debug|release]" + exit 1 + fi +fi + +solution_out="_vpc_/ninja/sdk_everything_$VPC_NINJA_BUILD_MODE" + +if [[ ! -e "$solution_out.ninja" ]]; then + devtools/bin/vpc /hl2mp /tf /linux64 /ninja /define:SOURCESDK +shaders /mksln "$solution_out" + + # Generate compile commands. + ninja -f "$solution_out.ninja" -t compdb > compile_commands.json + # Remove some unsupported clang commands. + sed -i 's/-fpredictive-commoning//g; s/-fvar-tracking-assignments//g' compile_commands.json + sed -i 's|/my_mod/src|.|g' compile_commands.json +fi + +ninja -f "$solution_out.ninja" -j$(nproc) + +popd diff --git a/src/buildshadersprojects_hl2 b/src/buildshadersprojects_hl2 new file mode 100755 index 00000000..e344a975 --- /dev/null +++ b/src/buildshadersprojects_hl2 @@ -0,0 +1,38 @@ +#!/bin/bash + +set -euo pipefail + +script=$(readlink -f -- "$0") +pushd "$(dirname -- "$script")" > /dev/null + +source sdk_container +run_in_sniper "$@" + +if [ $# -eq 0 ]; then + export VPC_NINJA_BUILD_MODE="release" +else + if [[ "$1" == "debug" ]]; then + export VPC_NINJA_BUILD_MODE="debug" + elif [[ "$1" == "release" ]]; then + export VPC_NINJA_BUILD_MODE="release" + else + echo "Usage: $0 [debug|release]" + exit 1 + fi +fi + +solution_out="_vpc_/ninja/sdk_everything_$VPC_NINJA_BUILD_MODE" + +if [[ ! -e "$solution_out.ninja" ]]; then + devtools/bin/vpc /hl2 /episodic /linux64 /ninja /define:SOURCESDK +shaders /mksln "$solution_out" + + # Generate compile commands. + ninja -f "$solution_out.ninja" -t compdb > compile_commands.json + # Remove some unsupported clang commands. + sed -i 's/-fpredictive-commoning//g; s/-fvar-tracking-assignments//g' compile_commands.json + sed -i 's|/my_mod/src|.|g' compile_commands.json +fi + +ninja -f "$solution_out.ninja" -j$(nproc) + +popd diff --git a/src/createallprojects.bat b/src/createallprojects.bat index ba18f25e..cf6062b8 100755 --- a/src/createallprojects.bat +++ b/src/createallprojects.bat @@ -1 +1 @@ -devtools\bin\vpc.exe /hl2mp /tf /define:SOURCESDK +everything /mksln everything.sln +devtools\bin\vpc.exe /hl2mp /tf /hl2 /episodic /define:SOURCESDK +everything /mksln everything.sln diff --git a/src/creategameprojects.bat b/src/creategameprojects.bat new file mode 100644 index 00000000..feee3044 --- /dev/null +++ b/src/creategameprojects.bat @@ -0,0 +1,2 @@ +devtools\bin\vpc.exe /hl2mp /tf /define:SOURCESDK +game /mksln games.sln +pause diff --git a/src/creategameprojects_hl2.bat b/src/creategameprojects_hl2.bat new file mode 100644 index 00000000..bf2c91be --- /dev/null +++ b/src/creategameprojects_hl2.bat @@ -0,0 +1,2 @@ +devtools\bin\vpc.exe /hl2 /define:SOURCESDK +game +shaders /mksln games.sln +pause diff --git a/src/createmaptoolsprojects b/src/createmaptoolsprojects deleted file mode 100755 index 9cc950cb..00000000 --- a/src/createmaptoolsprojects +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -pushd `dirname $0` -devtools/bin/vpc /hl2 /episodic +maptools /mksln maptools -popd diff --git a/src/createshadersprojects b/src/createshadersprojects deleted file mode 100755 index ff4823e0..00000000 --- a/src/createshadersprojects +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -pushd `dirname $0` -devtools/bin/vpc /hl2 /episodic +shaders /mksln shaders -popd diff --git a/src/createshadersprojects.bat b/src/createshadersprojects.bat index 43569ae5..3b55e13f 100644 --- a/src/createshadersprojects.bat +++ b/src/createshadersprojects.bat @@ -1 +1 @@ -devtools\bin\vpc.exe /hl2 /episodic +shaders /mksln shaders.sln +devtools\bin\vpc.exe /hl2mp /tf +shaders /mksln shaders.sln diff --git a/src/createshadersprojects_hl2.bat b/src/createshadersprojects_hl2.bat new file mode 100644 index 00000000..43569ae5 --- /dev/null +++ b/src/createshadersprojects_hl2.bat @@ -0,0 +1 @@ +devtools\bin\vpc.exe /hl2 /episodic +shaders /mksln shaders.sln