# This file is a part of the UMSKT Project # # Copyleft (C) 2019-2024 UMSKT Contributors (et.al.) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program 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 # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # # @FileCreated by Neo on 06/19/2023 # @Maintainer Neo name: C/C++ CI (DOS DJGPP) on: push: branches: [ "*" ] paths-ignore: [ '**.md', 'doc/**', '.idea/**' ] # If only these files are edited, skip pull_request: branches: [ "*" ] paths-ignore: [ '**.md', 'doc/**', '.idea/**' ] # If only these files are edited, skip workflow_dispatch: jobs: build: runs-on: ubuntu-latest env: CC: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-gcc CXX: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-g++ CMAKE_FIND_ROOT_PATH: ${{ github.workspace }}/djgpp GCC_EXEC_PREFIX: ${{ github.workspace }}/lib/gcc/ DJDIR: ${{ github.workspace }}/djgpp/i586-pc-msdosdjgpp steps: - name: Checkout Source Tree uses: actions/checkout@v4.1.1 - name: Set up CPM cache id: cache-cpm uses: actions/cache@v4 with: path: ${{ github.workspace }}/.cpm-cache key: ${{ runner.os }}-cpm-${{ hashFiles('**/') }} restore-keys: | ${{ runner.os }}-cpm- - name: Setup build environment run: | sudo apt -y update sudo apt -y install build-essential cmake wget 7zip git flex libfl-dev nasm libslang2-dev pkg-config libslang2-modules gcc-multilib - name: Download and Setup DJGPP Toolchain run: | wget https://github.com/andrewwutw/build-djgpp/releases/download/v3.4/djgpp-linux64-gcc1220.tar.bz2 tar xjf djgpp-linux64-gcc1220.tar.bz2 echo "${{ github.workspace }}/djgpp/i586-pc-msdosdjgpp/bin/" >> "$GITHUB_ENV" echo "${{ github.workspace }}/djgpp/bin/" >> "$GITHUB_ENV" - name: Build UMSKT for MSDOS via DJGPP uses: threeal/cmake-action@v1.3.0 with: options: UMSKT_DJGPP_COMPILE=On CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH} CMAKE_BUILD_TYPE=Release build-dir: build c-compiler: ${CC} cxx-compiler: ${CXX} build-args: -j 2 - name: Move executable to upload directory run: | mkdir build/actions_upload mv build/umskt.exe build/actions_upload/ - name: Upload build artifact uses: actions/upload-artifact@v4.3.1 with: name: UMSKT-DOS path: build/actions_upload build-dos-win32-combined: needs: build runs-on: windows-latest steps: # https://github.com/actions/runner-images/issues/6067#issuecomment-1213069040 - name: Install Windows XP Support for Visual Studio run: | Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\" $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" $componentsToAdd = @( "Microsoft.VisualStudio.Component.WinXP" ) [string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_} $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache') $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden if ($process.ExitCode -eq 0) { Write-Host "components have been successfully added" Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.* } else { Write-Host "components were not installed" exit 1 } - name: Setup MSBuild uses: microsoft/setup-msbuild@v1 - name: Checkout Source Tree uses: actions/checkout@v4.1.1 - name: Set up CPM cache id: cache-cpm uses: actions/cache@v4 with: path: ${{ github.workspace }}/.cpm-cache key: ${{ runner.os }}-cpm-${{ hashFiles('**/') }} restore-keys: | ${{ runner.os }}-cpm- - name: Download Built DOS Artifact uses: actions/download-artifact@v4.1.2 with: name: UMSKT-DOS - name: Configure and build UMSKT for DOS+Win32 uses: threeal/cmake-action@v1.3.0 with: options: UMSKT_MSVC_WINXP=On CMAKE_BUILD_TYPE=Release CPM_SOURCE_CACHE=${{ github.workspace }}/.cpm-cache UMSKT_MSVC_MSDOS_STUB=${{ github.workspace }}/umskt.exe generator: "Visual Studio 17 2022" args: -A "Win32" -T "v141_xp" run-build: true build-args: "--config Release -j 2" - name: Upload build artifact uses: actions/upload-artifact@v4.3.1 with: name: UMSKT-DOS+Win32 path: build/Release