[FREELDR:XBOX:PC98] Fix compilation dependencies and linking (#8512) #634
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: [push, pull_request] | |
| jobs: | |
| build-linux: | |
| strategy: | |
| matrix: | |
| compiler: [gcc] | |
| arch: [i386] | |
| config: [Debug] | |
| dllver: ['0x502'] | |
| exclude: | |
| - dllver: 0x600 | |
| compiler: clang | |
| - dllver: 0x600 | |
| config: Release | |
| fail-fast: false | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Get RosBE build specifics | |
| id: get_rosbe_spec | |
| run: | | |
| gcc -march=native -Q --help=target | grep "\-march= " | awk '{print $NF}' | |
| echo march-sha=$(gcc -march=native -Q --help=target | sha1sum | awk '{print $1}') >> $GITHUB_OUTPUT | |
| echo git-sha=$(git ls-remote https://github.com/zefklop/RosBE.git | grep unix_amd64 | awk '{print $1}') >> $GITHUB_OUTPUT | |
| wget https://gist.githubusercontent.com/zefklop/b2d6a0b470c70183e93d5285a03f5899/raw/build_rosbe_ci.sh | |
| - name: Get RosBE | |
| id: get_rosbe | |
| uses: actions/cache@v4 | |
| with: | |
| path: RosBE-CI | |
| key: RosBE-CI-${{runner.os}}-${{steps.get_rosbe_spec.outputs.march-sha}}-${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}} | |
| - name: Compile RosBE | |
| if: ${{ steps.get_rosbe.outputs.cache-hit != 'true' }} | |
| run: | | |
| chmod +x build_rosbe_ci.sh | |
| ./build_rosbe_ci.sh ${{github.workspace}}/RosBE-CI | |
| - name: Install ccache | |
| run: sudo apt install ccache | |
| - name: Install LLVM | |
| if: ${{ matrix.compiler == 'clang' }} | |
| run: | | |
| export LLVM_VERSION=13 | |
| wget https://apt.llvm.org/llvm.sh | |
| chmod +x llvm.sh | |
| sudo ./llvm.sh $LLVM_VERSION | |
| echo "D_CLANG_VERSION=-DCLANG_VERSION=$LLVM_VERSION" >> $GITHUB_ENV | |
| - name: Source checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| path: src | |
| - name: Set up cache for ccache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ccache | |
| key: ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} | |
| restore-keys: | | |
| ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}- | |
| - name: Set ccache settings | |
| run: | | |
| echo "CCACHE_BASEDIR=${{github.workspace}}" >> $GITHUB_ENV | |
| echo "CCACHE_DIR=${{github.workspace}}/ccache" >> $GITHUB_ENV | |
| echo "CCACHE_MAXSIZE=1G" >> $GITHUB_ENV | |
| echo "CCACHE_SLOPPINESS=time_macros" >> $GITHUB_ENV | |
| - name: Ease ccache compiler check (GCC) | |
| if: ${{ matrix.compiler == 'gcc' }} | |
| run: echo "CCACHE_COMPILERCHECK=string:${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}}" >> $GITHUB_ENV | |
| - name: Configure | |
| run: echo 'cmake -S ${{github.workspace}}/src -B ${{github.workspace}}/build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-${{matrix.compiler}}.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DDLL_EXPORT_VERSION=${{matrix.dllver}} -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{env.D_CLANG_VERSION}}' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} | |
| - name: Build | |
| run: echo 'cmake --build ${{github.workspace}}/build -- -k0' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} | |
| - name: Generate ISOs | |
| run: echo 'cmake --build ${{github.workspace}}/build --target bootcd --target livecd' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} | |
| - name: Print ccache statistics | |
| run: ccache -s | |
| - name: Upload ISOs | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} | |
| path: | | |
| build/bootcd.iso | |
| build/livecd.iso | |
| build-msvc: | |
| strategy: | |
| matrix: | |
| os: [windows-latest] | |
| toolset: ['14.2'] # VS 2022, and 2019 (see below) | |
| arch: [i386] | |
| config: [Debug] | |
| dllver: ['0x502'] | |
| exclude: # Build NT6 ISOs only with the latest toolset when compiled as a debug build | |
| - dllver: 0x600 | |
| toolset: 14.2 | |
| - dllver: 0x600 | |
| config: Release | |
| fail-fast: false | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - name: Install ninja | |
| run: choco install -y ninja | |
| - name: Install Flex & Bison | |
| run: | | |
| curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z | |
| 7z x flexbison.7z -O${{github.workspace}}\bin | |
| echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| - name: Activate VS cmd (x86) | |
| if: ${{ matrix.arch == 'i386' }} | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: amd64_x86 | |
| toolset: ${{matrix.toolset}} | |
| - name: Activate VS cmd (amd64) | |
| if: ${{ matrix.arch == 'amd64' }} | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: amd64 | |
| toolset: ${{matrix.toolset}} | |
| - name: Source checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| path: src | |
| - name: Configure | |
| run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DDLL_EXPORT_VERSION=${{matrix.dllver}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 | |
| - name: Build | |
| run: cmake --build build -- -k0 | |
| - name: Generate ISOs | |
| run: cmake --build build --target bootcd --target livecd | |
| - name: Upload ISOs | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} | |
| path: | | |
| build/bootcd.iso | |
| build/livecd.iso | |
| - name: Upload debug symbols | |
| if: ${{ matrix.config == 'Debug' }} | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} | |
| path: build/msvc_pdb | |