[GITHUB] Make sure things get compiled with MSVC 2015 & 2017
[reactos.git] / .github / workflows / build.yml
index f3ad516..42de2d1 100644 (file)
@@ -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
+        name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
+        path: |
+          build/bootcd.iso
+          build/livecd.iso
+
+  build-msvc:
+    strategy:
+      matrix:
+        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-livecd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
-        path: build/livecd.iso
+        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-msvc:
+  build-clang-cl:
     strategy:
       matrix:
-        compiler: [msvc, clang-cl]
         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)