Skip to content

SporeModLoader: use c++ feature test macro for ends_with() #384

SporeModLoader: use c++ feature test macro for ends_with()

SporeModLoader: use c++ feature test macro for ends_with() #384

Workflow file for this run

name: SporeModLoader
on: [push, pull_request]
jobs:
build-msvc:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_x86
- name: Prepare Environment
run: |
$env:revision = git describe --tags --always
echo "GIT_REVISION=$env:revision" >> $env:GITHUB_ENV
- name: Build SporeModLoader (msvc)
run: |
msbuild "SporeModLoader" `
/p:Configuration=Release `
/p:Platform=Win32 `
/m
- name: Build SporeModManager (msvc)
run: |
msbuild "SporeModManager" `
/p:Configuration=Release `
/p:Platform=Win32 `
/m
- name: Package SporeModLoader (msvc)
run: |
New-Item -ItemType Directory -Force -Path bin\SporebinEP1
New-Item -ItemType Directory -Force -Path bin\SporeModLoader\CoreLibs
New-Item -ItemType Directory -Force -Path bin\SporeModLoader\ModLibs
New-Item -ItemType Directory -Force -Path bin\SporeModLoader\SporeModManager
New-Item -ItemType File -Force -Path bin\SporeModLoader\ModLibs\keep.txt
Copy "3rdParty\Spore-ModAPI\dll\Release\SporeModAPI.dll" "bin\SporeModLoader\CoreLibs\SporeModAPI.dll"
Copy "3rdParty\Spore-ModAPI-legacy\SporeModAPI-disk.dll" "bin\SporeModLoader\CoreLibs\SporeModAPI-disk.dll"
copy "3rdParty\Spore-ModAPI-legacy\SporeModAPI-steam_patched.dll" "bin\SporeModLoader\CoreLibs\SporeModAPI-steam_patched.dll"
Copy "SporeModLoader\Bin\Release\dinput8.dll" "bin\SporebinEP1\dinput8.dll"
Copy "SporeModManager\Bin\Release\SporeModManager.exe" "bin\SporeModLoader\SporeModManager\SporeModManager.exe"
- name: Upload SporeModLoader (msvc)
uses: actions/upload-artifact@v4
with:
name: msvc-build-artifacts
path: bin/*
build-linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare Environment
run: |
echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV
- name: Build SporeModManager (Linux)
run: |
make SporeModManager -j$(nproc)
- name: Upload SporeModLoader (Linux for msvc)
uses: actions/upload-artifact@v4
with:
name: linux-build-artifacts
path: bin/*
build-mingw:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Packages
run: |
sudo apt-get -y install gcc-mingw-w64-i686 g++-mingw-w64-i686
- name: Prepare Environment
run: |
echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV
- name: Build SporeModLoader (mingw)
run: |
make SporeModLoader -j$(nproc)
- name: Build SporeModManager (mingw)
run: |
make SporeModManager.exe -j$(nproc)
- name: Upload SporeModLoader (mingw)
uses: actions/upload-artifact@v4
with:
name: mingw-build-artifacts
path: bin/*
package-artifacts:
runs-on: ubuntu-20.04
needs: [ build-msvc, build-linux, build-mingw ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare Environment
run: |
echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV
- name: Download msvc-build-artifacts
uses: actions/download-artifact@v4
with:
name: msvc-build-artifacts
path: artifacts
- name: Download linux-build-artifacts
uses: actions/download-artifact@v4
with:
name: linux-build-artifacts
path: artifacts
- name: Download mingw-build-artifacts
uses: actions/download-artifact@v4
with:
name: mingw-build-artifacts
path: mingw-artifacts
- name: Prepare SporeModLoader (mingw)
run: |
cp -r artifacts/SporeModLoader/CoreLibs/ mingw-artifacts/SporeModLoader/CoreLibs
cp -r artifacts/SporeModLoader/ModLibs/ mingw-artifacts/SporeModLoader/ModLibs
cp artifacts/SporeModLoader/SporeModManager/SporeModManager mingw-artifacts/SporeModLoader/SporeModManager/SporeModManager
- name: Upload SporeModLoader (msvc)
uses: actions/upload-artifact@v4
with:
name: SporeModLoader-${{ env.GIT_REVISION }}
path: artifacts/*
compression-level: 9
- name: Upload SporeModLoader (mingw)
uses: actions/upload-artifact@v4
with:
name: SporeModLoader-mingw-${{ env.GIT_REVISION }}
path: mingw-artifacts/*
compression-level: 9
- name: Delete leftover artifacts
uses: geekyeggo/delete-artifact@v4
with:
name: |
msvc-build-artifacts
linux-build-artifacts
mingw-build-artifacts
test-msvc:
runs-on: windows-2022
needs: [ package-artifacts ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare Environment
run: |
$env:revision = git describe --tags --always
echo "GIT_REVISION=$env:revision" >> $env:GITHUB_ENV
- name: Download SporeModManager (msvc)
uses: actions/download-artifact@v4
with:
name: SporeModLoader-${{ env.GIT_REVISION }}
path: artifact
- name: Test SporeModManager (msvc)
run: |
python3 ./SporeModManager/test.py --network ./artifact/SporeModLoader/SporeModManager/SporeModManager.exe
test-linux:
runs-on: ubuntu-20.04
needs: [ package-artifacts ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare Environment
run: |
echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV
- name: Download SporeModManager (Linux)
uses: actions/download-artifact@v4
with:
name: SporeModLoader-${{ env.GIT_REVISION }}
path: artifact
- name: Test SporeModManager (Linux)
run: |
chmod +x ./artifact/SporeModLoader/SporeModManager/SporeModManager
python3 ./SporeModManager/test.py --network ./artifact/SporeModLoader/SporeModManager/SporeModManager
test-mingw:
runs-on: windows-2022
needs: [ package-artifacts ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare Environment
run: |
$env:revision = git describe --tags --always
echo "GIT_REVISION=$env:revision" >> $env:GITHUB_ENV
- name: Download SporeModManager (mingw)
uses: actions/download-artifact@v4
with:
name: SporeModLoader-mingw-${{ env.GIT_REVISION }}
path: artifact
- name: Test SporeModManager (mingw)
run: |
python3 ./SporeModManager/test.py --network ./artifact/SporeModLoader/SporeModManager/SporeModManager.exe
# actions/upload-artifact still doesn't retain
# file permissions, so we'll need to download
# the artifact, mark the linux executable as
# executable, re-archive it (with better compression)
# and then add it to a draft release
create-draft-release:
runs-on: ubuntu-20.04
needs: [ test-msvc, test-linux, test-mingw ]
if: github.ref_type == 'tag'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare Environment
run: |
echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV
- name: Download SporeModManager (msvc)
uses: actions/download-artifact@v4
with:
name: SporeModLoader-${{ env.GIT_REVISION }}
path: artifact
- name: Prepare SporeModManager (msvc)
run: |
pushd artifact
rm SporeModLoader/ModLibs/keep.txt -f
chmod +x SporeModLoader/SporeModManager/SporeModManager
7za a -mm=Deflate -mx=9 -r "../SporeModLoader-${GIT_REVISION}.zip" *
popd
- name: Create Draft Release
uses: ncipollo/release-action@v1
with:
draft: true
makeLatest: true
tag: ${{ env.GIT_REVISION }}
artifacts: SporeModLoader-${{ env.GIT_REVISION }}.zip