Reactos
at master 337 lines 14 kB view raw
1name: Build 2on: [push, pull_request] 3 4jobs: 5 build-linux: 6 strategy: 7 matrix: 8 compiler: [gcc, clang] 9 arch: [i386, amd64] 10 config: [Debug, Release] 11 dllver: ['0x502', '0x600'] 12 exclude: 13 - dllver: 0x600 14 compiler: clang 15 - dllver: 0x600 16 config: Release 17 fail-fast: false 18 runs-on: ubuntu-22.04 19 steps: 20 - name: Get RosBE build specifics 21 id: get_rosbe_spec 22 run: | 23 gcc -march=native -Q --help=target | grep "\-march= " | awk '{print $NF}' 24 echo march-sha=$(gcc -march=native -Q --help=target | sha1sum | awk '{print $1}') >> $GITHUB_OUTPUT 25 echo git-sha=$(git ls-remote https://github.com/zefklop/RosBE.git | grep unix_amd64 | awk '{print $1}') >> $GITHUB_OUTPUT 26 wget https://gist.githubusercontent.com/zefklop/b2d6a0b470c70183e93d5285a03f5899/raw/build_rosbe_ci.sh 27 - name: Get RosBE 28 id: get_rosbe 29 uses: actions/cache@v4 30 with: 31 path: RosBE-CI 32 key: RosBE-CI-${{runner.os}}-${{steps.get_rosbe_spec.outputs.march-sha}}-${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}} 33 - name: Compile RosBE 34 if: ${{ steps.get_rosbe.outputs.cache-hit != 'true' }} 35 run: | 36 chmod +x build_rosbe_ci.sh 37 ./build_rosbe_ci.sh ${{github.workspace}}/RosBE-CI 38 - name: Install ccache 39 run: sudo apt install ccache 40 - name: Install LLVM 41 if: ${{ matrix.compiler == 'clang' }} 42 run: | 43 export LLVM_VERSION=13 44 wget https://apt.llvm.org/llvm.sh 45 chmod +x llvm.sh 46 sudo ./llvm.sh $LLVM_VERSION 47 echo "D_CLANG_VERSION=-DCLANG_VERSION=$LLVM_VERSION" >> $GITHUB_ENV 48 - name: Source checkout 49 uses: actions/checkout@v6 50 with: 51 path: src 52 - name: Set up cache for ccache 53 uses: actions/cache@v4 54 with: 55 path: ccache 56 key: ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} 57 restore-keys: | 58 ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}- 59 - name: Set ccache settings 60 run: | 61 echo "CCACHE_BASEDIR=${{github.workspace}}" >> $GITHUB_ENV 62 echo "CCACHE_DIR=${{github.workspace}}/ccache" >> $GITHUB_ENV 63 echo "CCACHE_MAXSIZE=1G" >> $GITHUB_ENV 64 echo "CCACHE_SLOPPINESS=time_macros" >> $GITHUB_ENV 65 - name: Ease ccache compiler check (GCC) 66 if: ${{ matrix.compiler == 'gcc' }} 67 run: echo "CCACHE_COMPILERCHECK=string:${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}}" >> $GITHUB_ENV 68 - name: Configure 69 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}} 70 - name: Build 71 run: echo 'cmake --build ${{github.workspace}}/build -- -k0' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} 72 - name: Generate ISOs 73 run: echo 'cmake --build ${{github.workspace}}/build --target bootcd --target livecd' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} 74 - name: Print ccache statistics 75 run: ccache -s 76 - name: Upload ISOs 77 uses: actions/upload-artifact@v5 78 with: 79 name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} 80 path: | 81 build/bootcd.iso 82 build/livecd.iso 83 84 build-msvc: 85 strategy: 86 matrix: 87 os: [windows-latest] 88 toolset: ['14','14.2'] # VS 2022, and 2019 (see below) 89 arch: [i386, amd64] 90 config: [Debug, Release] 91 dllver: ['0x502', '0x600'] 92 exclude: # Build NT6 ISOs only with the latest toolset when compiled as a debug build 93 - dllver: 0x600 94 toolset: 14.2 95 - dllver: 0x600 96 config: Release 97 fail-fast: false 98 runs-on: ${{matrix.os}} 99 steps: 100 - name: Install ninja 101 run: choco install -y ninja 102 - name: Install Flex & Bison 103 run: | 104 curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z 105 7z x flexbison.7z -O${{github.workspace}}\bin 106 echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append 107 echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 108 echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 109 - name: Activate VS cmd (x86) 110 if: ${{ matrix.arch == 'i386' }} 111 uses: ilammy/msvc-dev-cmd@v1 112 with: 113 arch: amd64_x86 114 toolset: ${{matrix.toolset}} 115 - name: Activate VS cmd (amd64) 116 if: ${{ matrix.arch == 'amd64' }} 117 uses: ilammy/msvc-dev-cmd@v1 118 with: 119 arch: amd64 120 toolset: ${{matrix.toolset}} 121 - name: Source checkout 122 uses: actions/checkout@v6 123 with: 124 path: src 125 - name: Configure 126 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 127 - name: Build 128 run: cmake --build build -- -k0 129 - name: Generate ISOs 130 run: cmake --build build --target bootcd --target livecd 131 - name: Upload ISOs 132 uses: actions/upload-artifact@v5 133 with: 134 name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} 135 path: | 136 build/bootcd.iso 137 build/livecd.iso 138 - name: Upload debug symbols 139 if: ${{ matrix.config == 'Debug' }} 140 uses: actions/upload-artifact@v5 141 with: 142 name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} 143 path: build/msvc_pdb 144 145 build-msvc-arm: 146 strategy: 147 matrix: 148 os: [windows-2022, windows-latest] 149 toolset: ['14', '14.29'] # VS 2022 (ongoing), 2019 (last) 150 arch: [arm, arm64] 151 config: [Debug, Release] 152 exclude: 153 # arm64: windows-latest is enough/fine. 154 - os: windows-2022 155 arch: arm64 156 # arm (sdk): only available on windows-2022. 157 - os: windows-latest 158 arch: arm 159 fail-fast: false 160 runs-on: ${{matrix.os}} 161 steps: 162 - name: Install ninja 163 run: choco install -y ninja 164 - name: Install Flex & Bison 165 run: | 166 curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z 167 7z x flexbison.7z -O${{github.workspace}}\bin 168 echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append 169 echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 170 echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 171 - name: Activate VS cmd (arm) 172 if: ${{ matrix.arch == 'arm' }} 173 uses: ilammy/msvc-dev-cmd@v1 174 with: 175 arch: amd64_arm 176 sdk: 10.0.22621.0 # Windows SDK 10.0.26100.0 dropped support for 32-bit ARM 177 toolset: ${{matrix.toolset}} 178 - name: Activate VS cmd (arm64) 179 if: ${{ matrix.arch == 'arm64' }} 180 uses: ilammy/msvc-dev-cmd@v1 181 with: 182 arch: amd64_arm64 183 toolset: ${{matrix.toolset}} 184 - name: Source checkout 185 uses: actions/checkout@v6 186 with: 187 path: src 188 - name: Configure 189 run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 190 - name: Build base module 191 if: ${{ matrix.arch == 'arm' }} 192 run: cmake --build build --target base/all 193 - name: Build dll:3rdparty 194 if: ${{ matrix.arch == 'arm' }} 195 run: cmake --build build --target dll/3rdparty/all -- -k0 196 - name: Build control panel applets 197 if: ${{ matrix.arch == 'arm' }} 198 run: cmake --build build --target dll/cpl/all 199 - name: Build dll:opengl 200 if: ${{ matrix.arch == 'arm' }} 201 run: cmake --build build --target dll/opengl/all -- -k0 202 - name: Build dll:shellext 203 if: ${{ matrix.arch == 'arm' }} 204 run: cmake --build build --target dll/shellext/all -- -k0 205 - name: Build drivers:base 206 if: ${{ matrix.arch == 'arm' }} 207 run: cmake --build build --target drivers/base/all -- -k0 208 - name: Build rosapps 209 if: ${{ matrix.arch == 'arm' }} 210 run: cmake --build build --target modules/rosapps/all 211 - name: Build subsystems 212 if: ${{ matrix.arch == 'arm' }} 213 run: cmake --build build --target subsystems/all 214 - name: Build some applications (arm64) 215 if: ${{ matrix.arch == 'arm64' }} 216 run: cmake --build build --target calc magnify mstsc notepad osk regedit taskmgr winmine wordpad base/applications/screensavers/all -- -k0 217 - name: Build control panel applets (arm64) 218 if: ${{ matrix.arch == 'arm64' }} 219 run: cmake --build build --target dll/cpl/all -- -k0 220 - name: Upload compiled binaries 221 uses: actions/upload-artifact@v5 222 with: 223 name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} 224 path: | 225 build/base 226 build/dll/3rdparty 227 build/dll/cpl 228 build/dll/opengl 229 build/dll/shellext 230 build/drivers/base 231 build/modules/rosapps 232 build/subsystems 233 !**/CMakeFiles 234 !**/cmake_install.cmake 235 !**/*.asm 236 !**/*.bin 237 !**/*.c 238 !**/*.def 239 !**/*.exp 240 !**/*.h 241 !**/*.lib 242 !**/*.mc 243 !**/*.obj 244 !**/*.rc 245 !**/*.tlb 246 - name: Upload debug symbols 247 if: ${{ matrix.config == 'Debug' }} 248 uses: actions/upload-artifact@v5 249 with: 250 name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} 251 path: build/msvc_pdb 252 253 # FIXME: Does not boot on toolset 14.1, 14.3+ is untested 254 build-clang-cl: 255 strategy: 256 matrix: 257 arch: [i386, amd64] 258 config: [Debug, Release] 259 fail-fast: false 260 runs-on: windows-latest 261 steps: 262 - name: Install ninja 263 run: choco install -y ninja 264 - name: Install LLVM 265 run: | 266 choco install -y --allow-downgrade llvm --version 13.0.1 267 echo "LLVM_PATH=${env:PROGRAMFILES}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 268 - name: Install Flex & Bison 269 run: | 270 curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z 271 7z x flexbison.7z -O${{github.workspace}}\bin 272 echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append 273 echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 274 echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 275 - name: Activate VS cmd (x86) 276 if: ${{ matrix.arch == 'i386' }} 277 uses: ilammy/msvc-dev-cmd@v1 278 with: 279 arch: amd64_x86 280 toolset: '14' 281 - name: Activate VS cmd (amd64) 282 if: ${{ matrix.arch == 'amd64' }} 283 uses: ilammy/msvc-dev-cmd@v1 284 with: 285 arch: amd64 286 toolset: '14' 287 - name: Add LLVM to PATH 288 run: echo "${env:LLVM_PATH}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append 289 - name: Source checkout 290 uses: actions/checkout@v6 291 with: 292 path: src 293 - name: Configure 294 run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=TRUE 295 - name: Build 296 run: cmake --build build -- -k0 297 - name: Generate ISOs 298 run: cmake --build build --target bootcd --target livecd 299 - name: Upload ISOs 300 uses: actions/upload-artifact@v5 301 with: 302 name: reactos-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} 303 path: | 304 build/bootcd.iso 305 build/livecd.iso 306 - name: Upload debug symbols 307 if: ${{ matrix.config == 'Debug' }} 308 uses: actions/upload-artifact@v5 309 with: 310 name: reactos-syms-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} 311 path: build/msvc_pdb 312 313 build-msbuild-i386: 314 name: MSBuild (i386) 315 runs-on: windows-latest 316 steps: 317 - name: Install Flex and Bison 318 run: | 319 curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z 320 7z x flexbison.7z -O${{github.workspace}}\bin 321 echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append 322 echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 323 echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 324 - name: Add CL to PATH 325 uses: ilammy/msvc-dev-cmd@v1 326 with: 327 arch: amd64_x86 328 - uses: actions/checkout@v6 329 with: 330 path: src 331 - name: Configure 332 run: | 333 mkdir build 334 cd build 335 cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src 336 - name: Build 337 run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd