* .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
182 lines
5.3 KiB
YAML
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
|