| # Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License 2.0 (the "License"). You may not use |
| # this file except in compliance with the License. You can obtain a copy |
| # in the file LICENSE in the source distribution or at |
| # https://www.openssl.org/source/license.html |
| |
| name: Windows Compression GitHub CI |
| |
| on: |
| pull_request: |
| paths: |
| - 'crypto/comp/*.c' |
| - '.github/workflows/windows_comp.yml' |
| push: |
| paths: |
| - '**.c' |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| zstd: |
| runs-on: windows-latest |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| - name: checkout fuzz/corpora submodule |
| run: git submodule update --init --depth 1 fuzz/corpora |
| - name: install nasm |
| run: | |
| choco install nasm |
| "C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append |
| - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 #v1.13.0 |
| - name: prepare the build directory |
| run: mkdir _build |
| - name: Get zstd |
| working-directory: _build |
| run: | |
| vcpkg install zstd:x64-windows |
| - name: config |
| working-directory: _build |
| run: | |
| perl ..\Configure enable-comp enable-zstd --with-zstd-include=C:\vcpkg\packages\zstd_x64-windows\include --with-zstd-lib=C:\vcpkg\packages\zstd_x64-windows\lib\zstd.lib no-makedepend -DOSSL_WINCTX=openssl VC-WIN64A |
| perl configdata.pm --dump |
| - name: build |
| working-directory: _build |
| run: nmake |
| - name: Gather openssl version info |
| working-directory: _build |
| run: | |
| $env:Path+=";C:\vcpkg\packages\zstd_x64-windows\bin" |
| apps/openssl.exe version -v |
| apps/openssl.exe version -v | %{($_ -split '\s+')[1]} |
| apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'} |
| echo "OSSL_VERSION=$(apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'})" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append |
| - name: Set registry keys |
| working-directory: _build |
| run: | |
| echo ${Env:OSSL_VERSION} |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v ENGINESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v MODULESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 |
| reg.exe query HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /reg:32 |
| - name: download coreinfo |
| uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9 #v1.6.0 |
| with: |
| url: "https://download.sysinternals.com/files/Coreinfo.zip" |
| target: _build/coreinfo/ |
| - name: get cpu info |
| working-directory: _build |
| continue-on-error: true |
| run: | |
| $env:Path+=";C:\vcpkg\packages\zstd_x64-windows\bin" |
| 7z.exe x coreinfo/Coreinfo.zip |
| ./Coreinfo64.exe -accepteula -f |
| ./apps/openssl.exe version -c |
| - name: Check platform symbol usage |
| run: | |
| perl ./util/checkplatformsyms.pl ./util/platform_symbols/windows-symbols.txt libcrypto-3-x64.dll ./libssl-3-x64.dll |
| - name: test |
| working-directory: _build |
| run: | |
| $env:Path+=";C:\vcpkg\packages\zstd_x64-windows\bin" |
| nmake test VERBOSE_FAILURE=yes TESTS="-test_fuzz* -test_fipsload" HARNESS_JOBS=4 |
| brotli: |
| runs-on: windows-latest |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| - name: checkout fuzz/corpora submodule |
| run: git submodule update --init --depth 1 fuzz/corpora |
| - name: install nasm |
| run: | |
| choco install nasm |
| "C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append |
| - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 #v1.13.0 |
| - name: prepare the build directory |
| run: mkdir _build |
| - name: Get brotli |
| working-directory: _build |
| run: | |
| vcpkg install brotli:x64-windows |
| - name: config |
| working-directory: _build |
| run: | |
| perl ..\Configure enable-comp enable-brotli --with-brotli-include=C:\vcpkg\packages\brotli_x64-windows\include --with-brotli-lib=C:\vcpkg\packages\brotli_x64-windows\lib no-makedepend -DOSSL_WINCTX=openssl VC-WIN64A |
| perl configdata.pm --dump |
| - name: build |
| working-directory: _build |
| run: nmake |
| - name: Gather openssl version info |
| working-directory: _build |
| run: | |
| $env:Path+=";C:\vcpkg\packages\brotli_x64-windows\bin" |
| apps/openssl.exe version -v |
| apps/openssl.exe version -v | %{($_ -split '\s+')[1]} |
| apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'} |
| echo "OSSL_VERSION=$(apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'})" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append |
| - name: Set registry keys |
| working-directory: _build |
| run: | |
| echo ${Env:OSSL_VERSION} |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v ENGINESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v MODULESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 |
| reg.exe query HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /reg:32 |
| - name: download coreinfo |
| uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9 #v1.6.0 |
| with: |
| url: "https://download.sysinternals.com/files/Coreinfo.zip" |
| target: _build/coreinfo/ |
| - name: get cpu info |
| working-directory: _build |
| continue-on-error: true |
| run: | |
| $env:Path+=";C:\vcpkg\packages\brotli_x64-windows\bin" |
| 7z.exe x coreinfo/Coreinfo.zip |
| ./Coreinfo64.exe -accepteula -f |
| ./apps/openssl.exe version -c |
| - name: test |
| working-directory: _build |
| run: | |
| $env:Path+=";C:\vcpkg\packages\brotli_x64-windows\bin" |
| nmake test VERBOSE_FAILURE=yes TESTS="-test_fuzz* -test_fipsload" HARNESS_JOBS=4 |