name: CI on: [push, pull_request] # schedule: # - cron: '0 0-23/4 * * *' permissions: contents: read jobs: emscripten: name: Emscripten runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - name: emscripten configFlags: --enable-gif --enable-jpeg --enable-ogg --enable-png --enable-vorbis --enable-zlib --enable-freetype2 - name: emscripten (extra libs) configFlags: --enable-gif --enable-jpeg --enable-ogg --enable-png --enable-vorbis --enable-zlib --enable-freetype2 --enable-a52 --enable-faad --enable-fluidlite --enable-fribidi --enable-mad --enable-mpcdec --enable-mpeg2 --enable-mpeg2 --enable-mikmod --enable-retrowave --enable-theoradec --enable-vpx steps: - uses: actions/checkout@v4 - name: Build cache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.platform }} max-size: 1G create-symlink: true - name: Restore libs cache uses: actions/cache/restore@v4 with: key: ${{ matrix.configFlags }} path: | dists/emscripten/libs/ - name: Call configure run: | CXX='ccache emcc' dists/emscripten/build.sh configure --enable-all-engines ${{ matrix.configFlags }} - name: Save libs cache uses: actions/cache/save@v4 with: key: ${{ matrix.configFlags }} path: | dists/emscripten/libs/ - name: Build scummvm run: | dists/emscripten/build.sh make windows: name: Windows runs-on: windows-latest strategy: fail-fast: false matrix: include: - platform: win32 triplet: x86-windows arch: x86 configFlags: --enable-discord --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx useNasm: 'true' - platform: x64 arch: x64 triplet: x64-windows configFlags: --enable-discord --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx - platform: arm64 arch: arm64 triplet: arm64-windows configFlags: --enable-discord --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx env: CONFIGURATION: Debug PLATFORM: ${{ matrix.platform }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VCPKG_FEATURE_FLAGS: dependencygraph VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }} VCPKG_INSTALLED_DIR: ${{ github.workspace }}/vcpkg_installed VCPKG_BINARY_SOURCES: clear;files,${{ github.workspace }}/vcpkg_cache,readwrite VCPKG_OVERLAY_PORTS: ${{ github.workspace }}/.github/vcpkg-ports GIT_VCPKG_COMMIT: ef7dbf94b9198bc58f45951adcf1f041fcbc5ea0 permissions: contents: write # For dependencygraph steps: - name: Checkout uses: actions/checkout@v4 - name: Setup nasm uses: ilammy/setup-nasm@v1 if: matrix.useNasm == 'true' - name: Install vcpkg uses: lukka/run-vcpkg@v11 id: runvcpkg with: vcpkgGitCommitId: ${{ env.GIT_VCPKG_COMMIT }} - name: Integrate vcpkg run: | ${{ steps.runvcpkg.outputs.RUNVCPKG_VCPKG_ROOT_OUT }}/vcpkg integrate install - name: Restore vcpkg cache uses: actions/cache/restore@v4 with: path: ${{ github.workspace }}/vcpkg_cache key: vcpkg-${{ env.GIT_VCPKG_COMMIT }}-${{ matrix.triplet }}-${{ hashFiles('vcpkg.json', 'vcpkg_installed/compiler-file-hash-cache.json', 'vcpkg_installed/status') }} restore-keys: vcpkg-${{ env.GIT_VCPKG_COMMIT }}-${{ matrix.triplet }}- - name: Build create_project run: | cd devtools/create_project/cmake cmake . cmake --build . -j 2 ls cd ../../../ - name: Call create_project run: | mkdir build-scummvm cd build-scummvm ../devtools/create_project/cmake/Debug/create_project.exe .. --msvc --vcpkg --enable-all-engines ${{ matrix.configFlags }} ls - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 - name: Install vcpkg packages run: | vcpkg install - name: Save vcpkg cache uses: actions/cache/save@v4 with: path: ${{ github.workspace }}/vcpkg_cache key: vcpkg-${{ env.GIT_VCPKG_COMMIT }}-${{ matrix.triplet }}-${{ hashFiles('vcpkg.json', 'vcpkg_installed/compiler-file-hash-cache.json', 'vcpkg_installed/status') }} - name: Build scummvm run: | cd build-scummvm ls msbuild scummvm.sln /m /p:VcpkgEnableManifest=true /p:BuildInParallel=true /p:Configuration=${{ env.CONFIGURATION }} /p:PreferredToolArchitecture=x64 /p:Platform=${{ matrix.platform }} /v:minimal - name: Upload scummvm uses: actions/upload-artifact@v4 if: matrix.buildArtifacts == 'true' with: name: scummvm-${{ matrix.arch }} path: build-scummvm/${{ env.CONFIGURATION }}${{ matrix.arch }}/*.exe - name: Upload scummvm libs uses: actions/upload-artifact@v4 if: matrix.buildArtifacts == 'true' with: name: libs-${{ matrix.arch }} path: ${{ env.VCPKG_INSTALLED_DIR }}\\${{ matrix.triplet }}\\bin\\*.dll - name: Upload scummvm symbols uses: actions/upload-artifact@v4 if: matrix.buildArtifacts == 'true' && env.CONFIGURATION == 'Debug' with: name: symbols-${{ matrix.arch }} path: build-scummvm/${{ env.CONFIGURATION }}${{ matrix.arch }}/*.pdb - name: Upload scummvm libs symbols uses: actions/upload-artifact@v4 if: matrix.buildArtifacts == 'true' && env.CONFIGURATION == 'Debug' with: name: lib-symbols-${{ matrix.arch }} path: ${{ env.VCPKG_INSTALLED_DIR }}\\${{ matrix.triplet }}\\bin\\*.pdb xcode: name: Xcode runs-on: macos-15-intel strategy: fail-fast: false matrix: include: - platform: macosx buildFlags: -scheme ScummVM-macOS -destination 'platform=macOS,arch=x86_64' configFlags: --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx brewPackages: a52dec faad2 flac fluid-synth freetype fribidi giflib jpeg mad libmikmod libmpeg2 libogg libpng libvorbis libvpx sdl2 sdl2_net theora - platform: ios7 buildFlags: -scheme ScummVM-iOS CODE_SIGN_IDENTITY="" CODE_SIGNING_ALLOWED=NO configFlags: --ios --use-xcframework --enable-faad --enable-gif --enable-mikmod --enable-vpx --enable-mpc --enable-a52 --disable-taskbar --disable-tts packagesUrl: https://downloads.scummvm.org/frs/build/scummvm-ios7-libs-v4.zip defaults: run: # Must be explicit for proper pipefail support shell: bash steps: - name: Checkout uses: actions/checkout@v4 - name: Install packages if: ${{ matrix.brewPackages }} run: brew install ${{ matrix.brewPackages }} - name: Download libraries if: ${{ matrix.packagesUrl }} run: | curl -L -o libs.zip ${{ matrix.packagesUrl }} unzip libs.zip ls - name: Build create_project run: | cd devtools/create_project/xcode xcodebuild ls cd ../../../ - name: Call create_project run: | ./devtools/create_project/xcode/build/Release/create_project . --xcode --enable-all-engines ${{ matrix.configFlags }} ls - name: Build cache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.platform }} max-size: 1G create-symlink: true - name: Build scummvm run: | xcodebuild CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ build -project scummvm.xcodeproj ${{ matrix.buildFlags }} | awk '$1 !~ /^(export|cd|clang++)/' ls ubuntu: name: Ubuntu runs-on: ${{ matrix.platform }} strategy: fail-fast: false matrix: include: - platform: ubuntu-latest sdlConfig: sdl2-config cxx: ccache g++ aptPackages: 'liba52-dev libcurl4-openssl-dev libfaad-dev libflac-dev libfluidsynth-dev libfreetype6-dev libfribidi-dev libgif-dev libgtk-3-dev libjpeg-turbo8-dev libmad0-dev libmikmod-dev libmpeg2-4-dev libogg-dev libpng-dev libsdl2-dev libsdl2-net-dev libsndio-dev libspeechd-dev libtheora-dev libunity-dev libvorbis-dev libvpx-dev zlib1g-dev' configFlags: --enable-discord --with-discord-prefix=/usr/local - platform: ubuntu-22.04 sdlConfig: sdl-config cxx: ccache g++-4.8 aptPackages: 'g++-4.8 liba52-dev libcurl4-openssl-dev libfaad-dev libflac-dev libfluidsynth-dev libfreetype6-dev libfribidi-dev libgif-dev libgtk-3-dev libjpeg-turbo8-dev libmad0-dev libmikmod-dev libmpeg2-4-dev libogg-dev libpng-dev libsdl-net1.2-dev libsdl1.2-dev libsndio-dev libspeechd-dev libtheora-dev libunity-dev libvorbis-dev libvpx-dev zlib1g-dev' configFlags: --enable-discord --with-discord-prefix=/usr/local env: SDL_CONFIG: ${{ matrix.sdlConfig }} defaults: run: # Must be explicit for proper pipefail support shell: bash steps: - name: Checkout uses: actions/checkout@v4 - name: Add Ubuntu Xenial package sources if: matrix.platform == 'ubuntu-22.04' run: | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 40976EAF437D05B5 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 3B4FE6ACC0B21F32 sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ xenial main' sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ xenial universe' - name: Install packages run: | sudo apt-get update sudo apt-get install ${{ matrix.aptPackages }} - name: Download and install Discord RPC libraries run: | curl -L -o discord-rpc-linux.zip https://github.com/discord/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip echo 'dac1f5dc6bedaeab1cc3c2c7fd4261e00838c81619c3ee325f3723c3d55ee03a discord-rpc-linux.zip' | sha256sum --check && unzip discord-rpc-linux.zip sudo cp -v -pR discord-rpc/linux-dynamic/include/*.* /usr/local/include/ sudo cp -v -pR discord-rpc/linux-dynamic/lib/*.* /usr/local/lib/ - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.platform }} max-size: 1G - name: Call configure run: | CXX='${{ matrix.cxx }}' ./configure --enable-all-engines ${{ matrix.configFlags }} - name: Build scummvm run: | make -j2 - name: Build tests run: | make test - name: Build devtools run: | make devtools