-
Notifications
You must be signed in to change notification settings - Fork 359
136 lines (118 loc) · 3.54 KB
/
build.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
127
128
129
130
131
132
133
134
135
136
#
# Build GMT and run a few simple tests
#
name: Build
on:
push:
branches:
- master
- 6.[0-9]+
paths:
- 'ci/**'
- 'cmake/**'
- 'src/**'
- '**/CMakeLists.txt'
- '.github/workflows/build.yml'
pull_request:
paths:
- 'ci/**'
- 'cmake/**'
- 'src/**'
- 'CMakeLists.txt'
- '.github/workflows/build.yml'
defaults:
run:
# default to use bash shell
shell: bash -el {0}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
env:
# directories
COASTLINEDIR: ${{ github.workspace }}/coastline
INSTALLDIR: ${{ github.workspace }}/gmt-install-dir
# disable auto-display of GMT plots
GMT_END_SHOW: off
# Compile only
BUILD_DOCS : false
PACKAGE : false
RUN_TESTS : false
strategy:
fail-fast: false
matrix:
include:
- name: Linux
os: ubuntu-latest
- name: macOS
os: macos-latest
- name: Windows
os: windows-latest
- name: Linux (without optional dependencies)
os: ubuntu-latest
EXCLUDE_OPTIONAL : true
steps:
- name: Checkout
uses: actions/checkout@v4.2.0
- name: Setup vcpkg (Windows)
run: gh run download -n vcpkg-cache -D C:/vcpkg/installed/
if: runner.os == 'Windows'
env:
GH_TOKEN: ${{ github.token }}
- name: Setup conda (macOS)
uses: conda-incubator/setup-miniconda@v3
if: runner.os == 'macOS'
- name: Install GMT dependencies
run: |
# $RUNNER_OS can be Linux, macOS or Windows
# The following command converts $RUNNER_OS to lowercase
os=$(echo "$RUNNER_OS" | tr '[:upper:]' '[:lower:]')
bash ci/install-dependencies-${os}.sh
env:
EXCLUDE_OPTIONAL: ${{ matrix.EXCLUDE_OPTIONAL }}
- name: Download GSHHG and DCW data
run: gh run download -n coastline-cache -D coastline
env:
GH_TOKEN: ${{ github.token }}
- name: Configure GMT
run: |
if [ "$RUNNER_OS" != "Windows" ]; then
bash ci/config-gmt-unix.sh
else
bash ci/config-gmt-windows.sh
fi
- name: Compile GMT (Linux/macOS)
run: |
mkdir build
cd build
cmake -G Ninja ..
cmake --build .
if: runner.os != 'Windows'
- name: Compile GMT (Windows)
shell: cmd
run: |
mkdir build
cd build
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
cmake -G Ninja .. -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
if: runner.os == 'Windows'
- name: Install GMT
run: |
cd build
cmake --build . --target install
# Add GMT PATH to bin
echo "${INSTALLDIR}/bin" >> $GITHUB_PATH
- name: Download cached GMT remote data from GitHub Artifacts
run: gh run download -n gmt-cache -D ~/.gmt/static/
env:
GH_TOKEN: ${{ github.token }}
- name: Check a few simple commands
run: bash ci/simple-gmt-tests.sh
- name: Check a few simple commands (Windows)
shell: cmd
run: call ci/simple-gmt-tests.bat
if: runner.os == 'Windows'