Files
harbour-core/.github/workflows/windows-ci.yml
Aleksander Czajczynski 1b105c2d3d 2025-10-20 10:47 UTC+0200 Aleksander Czajczynski (hb fki.pl)
* .github/workflows/windows-ci.yml
    * encourage to test OpenSSL

  * contrib/hbssl/hbssl.hbc
    * treat Microsoft Visual Studio 2017 or newer can use
      the latest OpenSSL lib. That's very loose approximation,
      but hopefully better than before. If you are using such
      compiler please update your OpenSSL library.

    % deduplicated the rules, leftovers from old static "_s" suffixing
2025-10-20 10:46:48 +02:00

182 lines
5.3 KiB
YAML

name: windows-ci
on:
- push
- pull_request
jobs:
windows-ci:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
compiler:
- bcc
- mingw64
- clang
cpu:
- x86
- x86_64
exclude:
- compiler: bcc
cpu: x86_64
- compiler: clang
cpu: x86
strictness:
- "normal"
- "strict"
steps:
- name: Configure environment
shell: bash
run: |
set -ex
{
case ${{matrix.cpu}} in
(x86) echo MINGWxx="MINGW32"
echo "msys_cpu=i686" ;;
(x86_64) echo MINGWxx="MINGW64"
echo "msys_cpu=${{matrix.cpu}}" ;;
esac
case ${{matrix.compiler}} in
(clang) echo MINGWxx="CLANG64" ;;
esac
} >> $GITHUB_ENV
- name: Install packages
uses: msys2/setup-msys2@v2
with:
msystem: ${{ env.MINGWxx }}
location: d:/
update: true
install: >
mingw-w64-${{ env.msys_cpu }}-ccache
mingw-w64-${{ env.msys_cpu }}-gcc
mingw-w64-${{ env.msys_cpu }}-make
mingw-w64-${{ env.msys_cpu }}-allegro
mingw-w64-${{ env.msys_cpu }}-bzip2
mingw-w64-${{ env.msys_cpu }}-cairo
mingw-w64-${{ env.msys_cpu }}-curl
mingw-w64-${{ env.msys_cpu }}-ghostscript
mingw-w64-${{ env.msys_cpu }}-openssl
openssl-devel
- name: 'Add packages available on 64-bit hosts only'
if: matrix.cpu != 'x86'
shell: msys2 {0}
run: |
pacman -S --noconfirm mingw-w64-${{ env.msys_cpu }}-postgresql
pacman -S --noconfirm mingw-w64-${{ env.msys_cpu }}-qt5-base
pacman -S --noconfirm mingw-w64-${{ env.msys_cpu }}-libgd
pacman -S --noconfirm mingw-w64-${{ env.msys_cpu }}-libmariadbclient
pacman -S --noconfirm mingw-w64-${{ env.msys_cpu }}-firebird
pacman -S --noconfirm mingw-w64-${{ env.msys_cpu }}-freeimage
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.client_payload.branch }}
- run: pwd
shell: msys2 {0}
- run: ls
shell: msys2 {0}
- name: Prepare ccache using action
if: matrix.compiler != 'bcc'
uses: hendrikmuhs/ccache-action@v1.2.10
with:
key: windows-${{ matrix.cpu }}-${{ matrix.compiler }}-${{ matrix.strictness }}-ci
max-size: "32M"
- name: Configure build shell
shell: msys2 {0}
run: |
set -ex
HB_USER_CFLAGS=""
HB_USER_LDFLAGS=""
case ${{matrix.compiler}} in
(clang)
pacman -S --noconfirm mingw-w64-${{ env.msys_cpu }}-clang
PATH="$PATH:/mingw64/bin/"
tee ./.bashrc <<EOMCLPTH
export PATH="\$PATH:/mingw64/bin/" # add ccache location
EOMCLPTH
;;
esac
case ${{matrix.strictness}} in
normal) ;;
strict) case ${{matrix.compiler}} in
(bcc) HB_USER_CFLAGS="$HB_USER_CFLAGS -w!" ;;
(*) HB_USER_CFLAGS="$HB_USER_CFLAGS -Werror" ;;
esac ;;
esac
tee -a ./.bashrc <<EOENV
export HB_BUILD_TEST="${{matrix.strictness}}"
export HB_BUILD_VERBOSE="yes"
export HBMK_WITH_SQLITE3="local"
export HB_USER_CFLAGS="$HB_USER_CFLAGS"
export HB_USER_LDFLAGS="$HB_USER_LDFLAGS"
export HB_CCACHE=$(which ccache.exe)
export mingwxx="$(echo "$MINGWxx" | tr A-Z a-z)"
EOENV
case ${{matrix.compiler}} in
bcc)
curl -LO "http://altd.embarcadero.com/download/bcppbuilder/freecommandLinetools.exe"
./freecommandLinetools.exe -s -verbose
find /c/Borland -type d || exit 1
tee -a ./.bashrc <<EOMSYSENV
export PATH="/c/Borland/BCC55/Bin:\$PATH"
export HB_WITH_CURL="/d/msys64/$mingwxx/include"
export HB_CCACHE=""
EOMSYSENV
;;
*)
tee -a ./.bashrc <<'EOCCACHE'
# Reconfigure ccache in msys2
ccache --set-config="cache_dir=$(pwd)/.ccache"
ccache --set-config=max_size=32M
ccache --set-config=compression=true
ccache -p
export HB_WITH_OPENSSL="/usr/include"
EOCCACHE
;;
esac
- name: Build Harbour
shell: msys2 {0}
run: |
echo ::group::Build Harbour
set -ex
source ./.bashrc
mingw32-make.exe -j2 \
HB_CPU=${{matrix.cpu}} \
HB_BUILD_CONTRIBS=no \
HB_COMPILER=${{matrix.compiler}}
- name: Build contribs
shell: msys2 {0}
run: |
echo ::group::Build contribs
set -ex
source ./.bashrc
mingw32-make.exe -j2 \
-C contrib \
HB_CPU=${{matrix.cpu}} \
HB_COMPILER=${{matrix.compiler}}
- name: Run tests
shell: msys2 {0}
run: |
echo ::group::Run tests
set -ex
bin/win/${{matrix.compiler}}/hbtest.exe