diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f3ad5168c7d..42de2d16973 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,26 +60,77 @@ jobs: - 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}} -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DCLANG_VERSION=${{env.LLVM_VERSION}}' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} - name: Build - run: echo 'cmake --build ${{github.workspace}}/build' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} + 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 bootcd + - name: Upload ISOs uses: actions/upload-artifact@v2 with: - name: reactos-bootcd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/bootcd.iso - - name: Upload livecd - uses: actions/upload-artifact@v2 - with: - name: reactos-livecd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/livecd.iso + name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} + path: | + build/bootcd.iso + build/livecd.iso build-msvc: strategy: matrix: - compiler: [msvc, clang-cl] + arch: [i386, amd64] + toolset: ['14.2', '14.1'] # VS 2019, 2017 + include: + - arch: i386 # Not compiling on amd64 prompt + toolset: '14.0' # VS 2015 + fail-fast: false + runs-on: windows-latest + 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@v2 + with: + path: src + - name: Configure + run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 + - name: Build + run: cmake --build ${{github.workspace}}\build -- -k0 + - name: Generate ISOs + run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd + - name: Upload ISOs + uses: actions/upload-artifact@v2 + with: + name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{github.sha}} + path: | + build/bootcd.iso + build/livecd.iso + - name: Upload debug symbols + uses: actions/upload-artifact@v2 + with: + name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{github.sha}} + path: build/msvc_pdb + + build-clang-cl: + strategy: + matrix: arch: [i386, amd64] fail-fast: false runs-on: windows-latest @@ -87,12 +138,12 @@ jobs: - name: Install ninja run: choco install -y ninja - name: Install LLVM (x86) - if: ${{ (matrix.compiler == 'clang-cl') && (matrix.arch == 'i386') }} + if: ${{ matrix.arch == 'i386' }} run: | choco install --x86 -y llvm echo "LLVM_PATH=${env:PROGRAMFILES(X86)}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Install LLVM (amd64) - if: ${{ (matrix.compiler == 'clang-cl') && (matrix.arch == 'amd64') }} + if: ${{ matrix.arch == 'amd64' }} run: | choco install -y llvm echo "LLVM_PATH=${env:PROGRAMFILES}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append @@ -108,34 +159,37 @@ jobs: uses: ilammy/msvc-dev-cmd@v1 with: arch: amd64_x86 + toolset: '14.1' # latest masm build known to make bootable builds - name: Activate VS cmd (amd64) if: ${{ matrix.arch == 'amd64' }} uses: ilammy/msvc-dev-cmd@v1 with: arch: amd64 + toolset: '14.1' # latest masm build known to make bootable builds - name: Add LLVM to PATH - if: ${{ matrix.compiler == 'clang-cl' }} run: echo "${env:LLVM_PATH}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Source checkout uses: actions/checkout@v2 with: path: src - name: Configure - run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=${{matrix.compiler == 'clang-cl'}} + run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=TRUE - name: Build - run: cmake --build ${{github.workspace}}\build + run: cmake --build ${{github.workspace}}\build -- -k0 - name: Generate ISOs run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd - - name: Upload bootcd + - name: Upload ISOs uses: actions/upload-artifact@v2 with: - name: reactos-bootcd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/bootcd.iso - - name: Upload livecd + name: reactos-clang-cl-${{matrix.arch}}-${{github.sha}} + path: | + build/bootcd.iso + build/livecd.iso + - name: Upload debug symbols uses: actions/upload-artifact@v2 with: - name: reactos-livecd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/livecd.iso + name: reactos-syms-clang-cl-${{matrix.arch}}-${{github.sha}} + path: build/msvc_pdb build-msbuild-i386: name: MSBuild (i386)