-
Notifications
You must be signed in to change notification settings - Fork 53
187 lines (186 loc) · 6.2 KB
/
main.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
name: Build SSR with different compilers
on: [push, pull_request]
jobs:
build:
strategy:
matrix:
include:
- os: ubuntu-22.04
compiler-pkg: g++-12
env:
CC: gcc-12
CXX: g++-12
- os: ubuntu-20.04
compiler-pkg: g++-9
env:
CC: gcc-9
CXX: g++-9
- os: ubuntu-22.04
compiler-pkg: clang-14
env:
CC: clang-14
CXX: clang++-14
- os: ubuntu-20.04
compiler-pkg: clang-9
env:
CC: clang-9
CXX: clang++-9
CXXFLAGS: -fno-builtin
- os: macos-15 # arm64
xcode: Xcode_16.0
- os: macos-14 # arm64
xcode: Xcode_16.0
- os: macos-13 # Intel
xcode: Xcode_15.2
- os: macos-13 # Intel
xcode: Xcode_14.3.1
- os: macos-12 # Intel
xcode: Xcode_14.2
runs-on: ${{ matrix.os }}
env: ${{ matrix.env || fromJSON('{}') }}
steps:
- name: Clone SSR repo
uses: actions/checkout@v4
with:
submodules: true
- name: Select Xcode
if: matrix.xcode
run: |
sudo xcode-select --switch /Applications/${{ matrix.xcode }}.app
- name: Install Ubuntu packages
if: startsWith(matrix.os, 'ubuntu')
run: |
PACKAGES=(
automake
ecasound
help2man
jackd1
libasio-dev
libecasoundc-dev
libfftw3-dev
libfmt-dev
libjack-dev
libjack0
libmysofa-dev
libqt5opengl5-dev
libsndfile1-dev
libtool
libwebsocketpp-dev
libxml2-dev
pkg-config
)
sudo apt-get update
sudo apt-get install --no-install-recommends ${PACKAGES[@]}
echo QT_SELECT=qt5 >> $GITHUB_ENV
- name: Install homebrew packages
if: startsWith(matrix.os, 'macos')
run: |
# This is only needed (temporarily?) for macos-12 and macos-13, see
# https://github.com/actions/runner-images/issues/4020
# Fix based on https://github.com/TeamForbiddenLLC/warfork-qfusion/pull/325:
brew uninstall --force azure-cli
brew uninstall --force aws-sam-cli
brew install python@3 || brew link --overwrite python@3
# End of fix.
PACKAGES=(
asio
automake
ecasound
fftw
fmt
help2man
jack
SoundScapeRenderer/ssr/libmysofa
libsndfile
libtool
pkg-config
qt@5
vrpn
websocketpp
)
brew install ${PACKAGES[@]}
echo CPPFLAGS="-I$(brew --prefix)/include" >> $GITHUB_ENV
echo LDFLAGS="-L$(brew --prefix)/lib" >> $GITHUB_ENV
# Link keg-only Qt5
echo "$(brew --prefix)/opt/qt@5/bin" >> $GITHUB_PATH
echo PKG_CONFIG_PATH="$(brew --prefix)/opt/qt@5/lib/pkgconfig" >> $GITHUB_ENV
# Perl module needed for help2man
#cpan Locale::gettext
- name: Install compiler
if: matrix.compiler-pkg
run: |
sudo apt-get install --no-install-recommends ${{ matrix.compiler-pkg }}
- name: Check compiler versions
run: |
which ${CC:-gcc}
${CC:-gcc} --version
which ${CXX:-g++}
${CXX:-g++} --version
- name: Build some Linux dependencies from source
if: startsWith(matrix.os, 'ubuntu')
run: |
ci/build-deps-ubuntu.sh
- name: upload VRPN logs
if: failure() && startsWith(matrix.os, 'ubuntu')
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }} ${{ matrix.xcode }}${{ env.CXX }} VRPN logs
path: "vrpn/build/CMakeFiles/*.log"
- name: Download and unzip InterSense SDK
if: startsWith(matrix.os, 'ubuntu')
run: |
wget https://www.intersense.com/wp-content/uploads/2018/12/InterSense_SDK_4.2381.zip
unzip InterSense_SDK_4.2381.zip
- name: Install InterSense SDK
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo cp SDK/Linux/Sample/*.h /usr/local/include
sudo cp SDK/Linux/x86_64/libisense.so /usr/local/lib
sudo ldconfig
- name: Install cargo-c
run: |
cargo install cargo-c --force
- name: Clone ASDF repo
uses: actions/checkout@v4
with:
repository: AudioSceneDescriptionFormat/asdf-rust
submodules: true
path: asdf-rust
- name: Build and install ASDF library
working-directory: asdf-rust
run: |
cargo cinstall --release --prefix=/usr/local --destdir=temp
sudo cp -r temp/usr/local/* /usr/local/
- name: Update dynamic linker cache for libasdf
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo ldconfig
- run: |
./autogen.sh
- name: configure
# NB: browser-gui is tested with CircleCI
run: |
./configure --enable-gui --enable-ip-interface --enable-websocket-interface --enable-fudi-interface --enable-ecasound --enable-sofa --enable-polhemus --enable-razor --enable-vrpn --disable-browser-gui --enable-dynamic-asdf --disable-dependency-tracking
- name: upload config.log
if: failure()
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }} ${{ matrix.xcode }}${{ env.CXX }} configure log
path: config.log
- run: |
make
- run: |
sudo make install
- name: Check dynamic libraries
if: startsWith(matrix.os, 'ubuntu')
run: |
ldd $(which ssr-binaural)
- name: Check dynamic libraries
if: startsWith(matrix.os, 'macos')
run: |
otool -L $(which ssr-binaural)
# It's probably hard to run the SSR with JACK and everything,
# but we can at least check if we can run the executable,
# which should also test if all dynamic libraries are found:
- run: |
ssr-binaural --help