69 lines
2.4 KiB
YAML
69 lines
2.4 KiB
YAML
name: MinGW32-CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
# Important: scoop will either install 32-bit GCC or 64-bit GCC, not both.
|
|
|
|
# It is important to build static libraries because cmake is not smart enough under Windows/mingw to take care of the path. So
|
|
# with a dynamic library, you could get failures due to the fact that the EXE can't find its DLL.
|
|
|
|
jobs:
|
|
ci:
|
|
if: >-
|
|
! contains(toJSON(github.event.commits.*.message), '[skip ci]') &&
|
|
! contains(toJSON(github.event.commits.*.message), '[skip github]')
|
|
name: windows-gcc
|
|
runs-on: windows-2016
|
|
|
|
env:
|
|
CMAKE_GENERATOR: Ninja # This is critical, try ' cmake -GNinja-DSIMDJSON_BUILD_STATIC=ON .. ' if using the command line
|
|
CC: gcc
|
|
CXX: g++
|
|
|
|
steps: # To reproduce what is below, start a powershell with administrative rights, using scoop *is* a good idea
|
|
- uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2 # we cache the scoop setup with 32-bit GCC
|
|
id: cache
|
|
with:
|
|
path: |
|
|
C:\ProgramData\scoop
|
|
key: scoop32 # static key: should be good forever
|
|
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: dependencies/.cache
|
|
key: ${{ hashFiles('dependencies/CMakeLists.txt') }}
|
|
|
|
- name: Setup Windows # This should almost never run if the cache works.
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
shell: powershell
|
|
run: |
|
|
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
|
|
scoop install sudo --global
|
|
sudo scoop install git --global
|
|
sudo scoop install ninja --global
|
|
sudo scoop install cmake --global
|
|
sudo scoop install gcc --arch 32bit --global
|
|
$env:path
|
|
Write-Host 'Everything has been installed, you are good!'
|
|
- name: Build and Test 32-bit x86
|
|
shell: powershell
|
|
run: |
|
|
$ENV:PATH="C:\ProgramData\scoop\shims;C:\ProgramData\scoop\apps\gcc\current\bin;C:\ProgramData\scoop\apps\ninja\current;$ENV:PATH"
|
|
g++ --version
|
|
cmake --version
|
|
ninja --version
|
|
git --version
|
|
mkdir build32
|
|
cd build32
|
|
cmake -DSIMDJSON_BUILD_STATIC=ON -DSIMDJSON_COMPETITION=OFF -DSIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_ENABLE_THREADS=OFF ..
|
|
cmake --build . --target acceptance_tests --verbose
|
|
ctest -L acceptance --output-on-failure
|