135 lines
4.8 KiB
YAML
135 lines
4.8 KiB
YAML
name: Windows Build
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'master'
|
|
- 'windows-build'
|
|
- 'heimdal-7-1-branch'
|
|
paths:
|
|
- '!docs/**'
|
|
- '!**.md'
|
|
- '!**.[1-9]'
|
|
- '**.[chly]'
|
|
- '**.hin'
|
|
- '**.in'
|
|
- '**.pl'
|
|
- '**.py'
|
|
- '**.asn1'
|
|
- '**.opt'
|
|
- '**.w32'
|
|
- '**/NTMakefile*'
|
|
- '**/COPYING'
|
|
- '**/INSTALL'
|
|
- '**/README*'
|
|
- '.github/workflows/windows.yml'
|
|
- '!appveyor.yml'
|
|
- '!.travis.yml'
|
|
|
|
pull_request:
|
|
paths:
|
|
- '!docs/**'
|
|
- '!**.md'
|
|
- '!**.[1-9]'
|
|
- '**.[chly]'
|
|
- '**.hin'
|
|
- '**.in'
|
|
- '**.pl'
|
|
- '**.py'
|
|
- '**.asn1'
|
|
- '**.opt'
|
|
- '**.w32'
|
|
- '**/NTMakefile'
|
|
- '**/COPYING'
|
|
- '**/INSTALL'
|
|
- '**/README*'
|
|
- '.github/workflows/windows.yml'
|
|
- '!appveyor.yml'
|
|
- '!.travis.yml'
|
|
|
|
jobs:
|
|
windows:
|
|
# Run if no [only X] tag, or if [only windows] is present (check both push commits and PR titles)
|
|
if: >-
|
|
(!contains(github.event.head_commit.message, '[only ') &&
|
|
!contains(github.event.pull_request.title, '[only ')) ||
|
|
contains(github.event.head_commit.message, '[only windows]') ||
|
|
contains(github.event.pull_request.title, '[only windows]')
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# clang-cl disabled due to LLVM 19 bug with MMX intrinsics in VS 2022 headers
|
|
compiler: [msvc]
|
|
env:
|
|
APPVER: '10.0'
|
|
CODESIGN_PKT: 0000000000000000
|
|
INSTALL_DIR: C:\heimdal
|
|
WINSDKVER: '10.0.22000.0'
|
|
WIXDIR: 'c:\Program Files (x86)\Windows Installer XML v3.5'
|
|
steps:
|
|
- name: Clone repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Find MSVC and run vcvarsall.bat
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: amd64
|
|
|
|
- name: Setup OpenSSL
|
|
shell: pwsh
|
|
run: |
|
|
# OpenSSL 3.x is pre-installed on windows-latest at C:\Program Files\OpenSSL
|
|
$opensslDir = "C:\Program Files\OpenSSL"
|
|
if (Test-Path $opensslDir) {
|
|
Write-Host "OpenSSL found at $opensslDir"
|
|
Get-ChildItem $opensslDir
|
|
# Show version
|
|
& "$opensslDir\bin\openssl.exe" version
|
|
} else {
|
|
Write-Host "OpenSSL not found, installing via chocolatey..."
|
|
choco install openssl -y
|
|
$opensslDir = "C:\Program Files\OpenSSL"
|
|
}
|
|
# Set environment variables for the build
|
|
echo "OPENSSL_DIR=$opensslDir" >> $env:GITHUB_ENV
|
|
echo "INCLUDE_openssl_crypto=$opensslDir\include" >> $env:GITHUB_ENV
|
|
echo "LIB_openssl_crypto=$opensslDir\lib\VC\x64\MD\libcrypto.lib" >> $env:GITHUB_ENV
|
|
|
|
- name: Install MSYS2 packages
|
|
shell: cmd
|
|
run: |
|
|
C:\msys64\usr\bin\pacman.exe --noconfirm -S zstd autoconf automake flex bison perl perl-JSON texinfo
|
|
|
|
- name: Build
|
|
shell: cmd
|
|
run: |
|
|
set "PATH=%PATH%;C:\msys64\usr\bin"
|
|
set "PATH=%PATH%;C:\Program Files (x86)\HTML Help Workshop"
|
|
set "PATH=%PATH%;C:\Program Files\OpenSSL\bin"
|
|
set CODESIGN_PKT=0000000000000000
|
|
mkdir %INSTALL_DIR%
|
|
echo PATH=%PATH%
|
|
echo INCLUDE_openssl_crypto=%INCLUDE_openssl_crypto%
|
|
echo LIB_openssl_crypto=%LIB_openssl_crypto%
|
|
echo Compiler: ${{ matrix.compiler }}
|
|
if "${{ matrix.compiler }}"=="clang-cl" (
|
|
clang-cl --version
|
|
nmake /f NTMakefile CC=clang-cl APPVEYOR=1 MAKEINFO=makeinfo NO_INSTALLERS=1 INCLUDE_openssl_crypto="%INCLUDE_openssl_crypto%" LIB_openssl_crypto="%LIB_openssl_crypto%" CFLAGS="-msse2"
|
|
) else (
|
|
nmake /f NTMakefile APPVEYOR=1 MAKEINFO=makeinfo NO_INSTALLERS=1 INCLUDE_openssl_crypto="%INCLUDE_openssl_crypto%" LIB_openssl_crypto="%LIB_openssl_crypto%"
|
|
)
|
|
|
|
- name: Test
|
|
shell: cmd
|
|
run: |
|
|
set "PATH=%PATH%;C:\msys64\usr\bin"
|
|
set "PATH=%PATH%;C:\Program Files\OpenSSL\bin"
|
|
nmake /f NTMakefile APPVEYOR=1 MAKEINFO=makeinfo NO_INSTALLERS=1 test
|
|
|
|
- name: Upload Artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Objects-${{ matrix.compiler }}
|
|
path: 'D:/a/heimdal/heimdal/out/'
|