[UXTHEME] Implement the rest of DrawNCPreview #491
This file contains 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, clang] | |
arch: [i386, amd64] | |
config: [Debug, Release] | |
dllver: ['0x502', '0x600'] | |
exclude: | |
- dllver: 0x600 | |
compiler: clang | |
- dllver: 0x600 | |
config: Release | |
fail-fast: false | |
runs-on: ubuntu-latest | |
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@v4 | |
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@v4 | |
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, windows-2019] | |
toolset: ['14.2', '14.1', '14.0'] # VS 2019, 2017, and 2015 (see below) | |
arch: [i386, amd64] | |
config: [Debug, Release] | |
dllver: ['0x502', '0x600'] | |
exclude: # VS 2019, 2017 only with windows-latest; VS 2015 only with windows-2019 | |
- os: windows-2019 | |
toolset: '14.2' | |
- os: windows-2019 | |
toolset: '14.1' | |
- os: windows-latest | |
toolset: '14.0' | |
- dllver: 0x600 | |
os: windows-2019 | |
- dllver: 0x600 | |
toolset: '14.1' | |
- dllver: 0x600 | |
toolset: '14.0' | |
- 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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}} | |
path: build/msvc_pdb | |
build-msvc-arm: | |
strategy: | |
matrix: | |
toolset: ['14.2', '14.1'] # VS 2019, 2017 | |
arch: [arm, arm64] | |
config: [Debug, Release] | |
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 (arm) | |
if: ${{ matrix.arch == 'arm' }} | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: amd64_arm | |
toolset: ${{matrix.toolset}} | |
- name: Activate VS cmd (arm64) | |
if: ${{ matrix.arch == 'arm64' }} | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: amd64_arm64 | |
toolset: ${{matrix.toolset}} | |
- name: Source checkout | |
uses: actions/checkout@v4 | |
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}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 | |
- name: Build base module | |
if: ${{ matrix.arch == 'arm' }} | |
run: cmake --build build --target base/all | |
- name: Build control panel applets | |
if: ${{ matrix.arch == 'arm' }} | |
run: cmake --build build --target dll/cpl/all | |
- name: Build rosapps | |
if: ${{ matrix.arch == 'arm' }} | |
run: cmake --build build --target modules/rosapps/all | |
- name: Build subsystems | |
if: ${{ matrix.arch == 'arm' }} | |
run: cmake --build build --target subsystems/all | |
- name: Build some applications (arm64) | |
if: ${{ matrix.arch == 'arm64' }} | |
run: cmake --build build --target calc magnify mstsc notepad osk regedit taskmgr winmine wordpad base/applications/screensavers/all -- -k0 | |
- name: Upload compiled binaries | |
uses: actions/upload-artifact@v4 | |
with: | |
name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} | |
path: | | |
build/base | |
build/dll/cpl | |
build/modules/rosapps | |
build/subsystems | |
!**/CMakeFiles | |
!**/cmake_install.cmake | |
!**/*.asm | |
!**/*.bin | |
!**/*.c | |
!**/*.def | |
!**/*.exp | |
!**/*.h | |
!**/*.lib | |
!**/*.mc | |
!**/*.obj | |
!**/*.rc | |
!**/*.tlb | |
- name: Upload debug symbols | |
if: ${{ matrix.config == 'Debug' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} | |
path: build/msvc_pdb | |
build-clang-cl: | |
strategy: | |
matrix: | |
arch: [i386, amd64] | |
config: [Debug, Release] | |
fail-fast: false | |
runs-on: windows-latest | |
steps: | |
- name: Install ninja | |
run: choco install -y ninja | |
- name: Install LLVM | |
run: | | |
choco install -y --allow-downgrade llvm --version 13.0.1 | |
echo "LLVM_PATH=${env:PROGRAMFILES}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
- 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: '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 | |
run: echo "${env:LLVM_PATH}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Source checkout | |
uses: actions/checkout@v4 | |
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}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=TRUE | |
- 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@v4 | |
with: | |
name: reactos-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} | |
path: | | |
build/bootcd.iso | |
build/livecd.iso | |
- name: Upload debug symbols | |
if: ${{ matrix.config == 'Debug' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: reactos-syms-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}} | |
path: build/msvc_pdb | |
build-msbuild-i386: | |
name: MSBuild (i386) | |
runs-on: windows-2019 | |
steps: | |
- name: Install Flex and 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: Add CL to PATH | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: amd64_x86 | |
- uses: actions/checkout@v4 | |
with: | |
path: src | |
- name: Configure | |
run: | | |
mkdir build | |
cd build | |
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src | |
- name: Build | |
run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd |