-
Notifications
You must be signed in to change notification settings - Fork 177
126 lines (105 loc) · 3.59 KB
/
cmake.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
name: Build and Test Subversion with CMake
on:
push:
branches: ["*"]
concurrency:
group: ${{ github.ref }}
cancel-in-progress: false
defaults:
run:
shell: pwsh
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- name: Windows, shared, x64, with tests
os: windows-latest
build_shared: ON
vcpkg_triplet: x64-windows
arch: x64
run_tests: true
- name: Windows, shared, x86
os: windows-latest
build_shared: ON
vcpkg_triplet: x86-windows
arch: x86
- name: Windows, static, x64, with tests
os: windows-latest
build_shared: OFF
vcpkg_triplet: x64-windows-static
arch: x64
run_tests: true
- name: Linux, shared, with tests
os: ubuntu-latest
build_shared: ON
run_tests: true
runs-on: ${{ matrix.os }}
name: ${{ matrix.name }}
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
steps:
- name: Prepare Enviroment (Windows)
if: runner.os == 'Windows'
run: |
$root = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
Import-Module "$root\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
Enter-VsDevShell -VsInstallPath $root -DevCmdArguments "-arch=${{ matrix.arch }}"
ls env: | foreach { "$($_.Name)=$($_.Value)" >> $env:GITHUB_ENV }
- name: Prepare Enviroment (Linux)
if: runner.os == 'Windows'
run: |
# nothing yet
- name: Export GitHub Actions cache environment variables
if: runner.os == 'Windows'
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Install dependecies (Windows, vcpkg)
if: runner.os == 'Windows'
run: |
C:\vcpkg\vcpkg.exe install --triplet ${{ matrix.vcpkg_triplet }} `
apr apr-util expat zlib sqlite3
"CMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" >> $env:GITHUB_ENV
- name: Install dependecies (Linux, apt-get)
if: runner.os == 'Linux'
run: >
sudo apt-get install
libtool
libtool-bin
libapr1-dev
libaprutil1-dev
libexpat1-dev
zlib1g-dev
libsqlite3-dev
ninja-build
- name: Use LF for Git checkout
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- uses: actions/checkout@v4
- name: gen-make
run: python ./gen-make.py -t cmake
- name: Configure CMake
run: >
cmake -B out -G Ninja
-DBUILD_SHARED_LIBS=${{ matrix.build_shared }}
-DSVN_ENABLE_TESTS=ON
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/installdir
-DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }}
- name: Build CMake
run: cmake --build out
- name: Install
run: cmake --install out
- name: Run all tests
id: run_all_tests
if: matrix.run_tests
working-directory: out
run: ctest --output-on-failure --verbose
- name: Rerun failed tests
if: ${{ matrix.run_tests && failure() && steps.run_all_tests.conclusion == 'failure' }}
working-directory: out
run: ctest --output-on-failure --verbose --rerun-failed