1b815c7f3Sopenharmony_ciname: C/C++ CI
2b815c7f3Sopenharmony_ci
3b815c7f3Sopenharmony_cion: [push, pull_request]
4b815c7f3Sopenharmony_ci
5b815c7f3Sopenharmony_cijobs:
6b815c7f3Sopenharmony_ci  build:
7b815c7f3Sopenharmony_ci    strategy:
8b815c7f3Sopenharmony_ci      fail-fast: false
9b815c7f3Sopenharmony_ci      matrix:
10b815c7f3Sopenharmony_ci        name: [
11b815c7f3Sopenharmony_ci          ubuntu-gcc-autotools,
12b815c7f3Sopenharmony_ci          ubuntu-clang-autotools,
13b815c7f3Sopenharmony_ci          ubuntu-gcc-ossfuzz,
14b815c7f3Sopenharmony_ci          macos-autotools,
15b815c7f3Sopenharmony_ci          ubuntu-gcc-cmake,
16b815c7f3Sopenharmony_ci          ubuntu-gcc-cmake-shared,
17b815c7f3Sopenharmony_ci          ubuntu-clang-cmake,
18b815c7f3Sopenharmony_ci          ubuntu-clang-cmake-shared,
19b815c7f3Sopenharmony_ci          macos-cmake,
20b815c7f3Sopenharmony_ci          macos-cmake-shared,
21b815c7f3Sopenharmony_ci          windows-vs2022-x64,
22b815c7f3Sopenharmony_ci          windows-vs2022-x64-shared,
23b815c7f3Sopenharmony_ci          windows-vs2022-Win32,
24b815c7f3Sopenharmony_ci          windows-vs2022-Win32-shared
25b815c7f3Sopenharmony_ci        ]
26b815c7f3Sopenharmony_ci        include:
27b815c7f3Sopenharmony_ci          - name: ubuntu-gcc-autotools
28b815c7f3Sopenharmony_ci            os: ubuntu-latest
29b815c7f3Sopenharmony_ci            cc: gcc
30b815c7f3Sopenharmony_ci            cxx: g++
31b815c7f3Sopenharmony_ci            autotools-options: --enable-werror
32b815c7f3Sopenharmony_ci            build-system: autotools
33b815c7f3Sopenharmony_ci
34b815c7f3Sopenharmony_ci          - name: ubuntu-clang-autotools
35b815c7f3Sopenharmony_ci            os: ubuntu-latest
36b815c7f3Sopenharmony_ci            cc: clang
37b815c7f3Sopenharmony_ci            cxx: clang++
38b815c7f3Sopenharmony_ci            autotools-options: --enable-werror
39b815c7f3Sopenharmony_ci            build-system: autotools
40b815c7f3Sopenharmony_ci
41b815c7f3Sopenharmony_ci          - name: ubuntu-gcc-ossfuzz
42b815c7f3Sopenharmony_ci            os: ubuntu-latest
43b815c7f3Sopenharmony_ci            cc: gcc
44b815c7f3Sopenharmony_ci            cxx: g++
45b815c7f3Sopenharmony_ci            autotools-options: --enable-werror
46b815c7f3Sopenharmony_ci            build-system: ossfuzz
47b815c7f3Sopenharmony_ci
48b815c7f3Sopenharmony_ci          - name: macos-autotools
49b815c7f3Sopenharmony_ci            os: macos-latest
50b815c7f3Sopenharmony_ci            cc: clang
51b815c7f3Sopenharmony_ci            cxx: clang++
52b815c7f3Sopenharmony_ci            autotools-options: --enable-werror
53b815c7f3Sopenharmony_ci            build-system: autotools
54b815c7f3Sopenharmony_ci
55b815c7f3Sopenharmony_ci          - name: ubuntu-gcc-cmake
56b815c7f3Sopenharmony_ci            os: ubuntu-latest
57b815c7f3Sopenharmony_ci            cc: gcc
58b815c7f3Sopenharmony_ci            cxx: g++
59b815c7f3Sopenharmony_ci            build-system: cmake
60b815c7f3Sopenharmony_ci            cmake-generator: 'Ninja'
61b815c7f3Sopenharmony_ci            cmake-options: >-
62b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
63b815c7f3Sopenharmony_ci              -DCMAKE_C_FLAGS="-Wall -Wextra"
64b815c7f3Sopenharmony_ci              -DCMAKE_VERBOSE_MAKEFILE=ON
65b815c7f3Sopenharmony_ci
66b815c7f3Sopenharmony_ci          - name: ubuntu-gcc-cmake-shared
67b815c7f3Sopenharmony_ci            os: ubuntu-latest
68b815c7f3Sopenharmony_ci            cc: gcc
69b815c7f3Sopenharmony_ci            cxx: g++
70b815c7f3Sopenharmony_ci            build-system: cmake
71b815c7f3Sopenharmony_ci            cmake-generator: 'Ninja'
72b815c7f3Sopenharmony_ci            cmake-options: >-
73b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
74b815c7f3Sopenharmony_ci              -DBUILD_SHARED_LIBS=ON
75b815c7f3Sopenharmony_ci              -DCMAKE_C_FLAGS="-Wall -Wextra"
76b815c7f3Sopenharmony_ci              -DCMAKE_VERBOSE_MAKEFILE=ON
77b815c7f3Sopenharmony_ci
78b815c7f3Sopenharmony_ci          - name: ubuntu-clang-cmake
79b815c7f3Sopenharmony_ci            os: ubuntu-latest
80b815c7f3Sopenharmony_ci            cc: clang
81b815c7f3Sopenharmony_ci            cxx: clang++
82b815c7f3Sopenharmony_ci            build-system: cmake
83b815c7f3Sopenharmony_ci            cmake-generator: 'Ninja'
84b815c7f3Sopenharmony_ci            cmake-options: >-
85b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
86b815c7f3Sopenharmony_ci              -DCMAKE_C_FLAGS="-Wall -Wextra"
87b815c7f3Sopenharmony_ci              -DCMAKE_VERBOSE_MAKEFILE=ON
88b815c7f3Sopenharmony_ci
89b815c7f3Sopenharmony_ci          - name: ubuntu-clang-cmake-shared
90b815c7f3Sopenharmony_ci            os: ubuntu-latest
91b815c7f3Sopenharmony_ci            cc: clang
92b815c7f3Sopenharmony_ci            cxx: clang++
93b815c7f3Sopenharmony_ci            build-system: cmake
94b815c7f3Sopenharmony_ci            cmake-generator: 'Ninja'
95b815c7f3Sopenharmony_ci            cmake-options: >-
96b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
97b815c7f3Sopenharmony_ci              -DBUILD_SHARED_LIBS=ON
98b815c7f3Sopenharmony_ci              -DCMAKE_C_FLAGS="-Wall -Wextra"
99b815c7f3Sopenharmony_ci              -DCMAKE_VERBOSE_MAKEFILE=ON
100b815c7f3Sopenharmony_ci
101b815c7f3Sopenharmony_ci          - name: macos-cmake
102b815c7f3Sopenharmony_ci            os: macos-latest
103b815c7f3Sopenharmony_ci            cc: clang
104b815c7f3Sopenharmony_ci            cxx: clang++
105b815c7f3Sopenharmony_ci            build-system: cmake
106b815c7f3Sopenharmony_ci            cmake-generator: 'Unix Makefiles'
107b815c7f3Sopenharmony_ci            cmake-options: >-
108b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
109b815c7f3Sopenharmony_ci              -DCMAKE_C_FLAGS="-Wall -Wextra"
110b815c7f3Sopenharmony_ci              -DCMAKE_VERBOSE_MAKEFILE=ON
111b815c7f3Sopenharmony_ci
112b815c7f3Sopenharmony_ci          - name: macos-cmake-shared
113b815c7f3Sopenharmony_ci            os: macos-latest
114b815c7f3Sopenharmony_ci            cc: clang
115b815c7f3Sopenharmony_ci            cxx: clang++
116b815c7f3Sopenharmony_ci            build-system: cmake
117b815c7f3Sopenharmony_ci            cmake-generator: 'Unix Makefiles'
118b815c7f3Sopenharmony_ci            cmake-options: >-
119b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
120b815c7f3Sopenharmony_ci              -DBUILD_SHARED_LIBS=ON
121b815c7f3Sopenharmony_ci              -DCMAKE_C_FLAGS="-Wall -Wextra"
122b815c7f3Sopenharmony_ci              -DCMAKE_VERBOSE_MAKEFILE=ON
123b815c7f3Sopenharmony_ci
124b815c7f3Sopenharmony_ci          - name: windows-vs2022-x64
125b815c7f3Sopenharmony_ci            os: windows-latest
126b815c7f3Sopenharmony_ci            triplet: 'x64-windows-static'
127b815c7f3Sopenharmony_ci            build-system: cmake
128b815c7f3Sopenharmony_ci            cmake-generator: 'Visual Studio 17 2022'
129b815c7f3Sopenharmony_ci            cmake-options: >-
130b815c7f3Sopenharmony_ci              -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>
131b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
132b815c7f3Sopenharmony_ci              -DVCPKG_TARGET_TRIPLET=x64-windows-static
133b815c7f3Sopenharmony_ci              -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake
134b815c7f3Sopenharmony_ci
135b815c7f3Sopenharmony_ci          - name: windows-vs2022-x64-shared
136b815c7f3Sopenharmony_ci            os: windows-latest
137b815c7f3Sopenharmony_ci            triplet: 'x64-windows-static'
138b815c7f3Sopenharmony_ci            build-system: cmake
139b815c7f3Sopenharmony_ci            cmake-generator: 'Visual Studio 17 2022'
140b815c7f3Sopenharmony_ci            cmake-options: >-
141b815c7f3Sopenharmony_ci              -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>
142b815c7f3Sopenharmony_ci              -DBUILD_SHARED_LIBS=ON
143b815c7f3Sopenharmony_ci              -DBUILD_REGTEST=OFF
144b815c7f3Sopenharmony_ci              -DBUILD_EXAMPLES=OFF
145b815c7f3Sopenharmony_ci              -DINSTALL_PKGCONFIG_MODULE=OFF
146b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
147b815c7f3Sopenharmony_ci              -DVCPKG_TARGET_TRIPLET=x64-windows-static
148b815c7f3Sopenharmony_ci              -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake
149b815c7f3Sopenharmony_ci
150b815c7f3Sopenharmony_ci          - name: windows-vs2022-Win32
151b815c7f3Sopenharmony_ci            os: windows-latest
152b815c7f3Sopenharmony_ci            triplet: 'x86-windows-static'
153b815c7f3Sopenharmony_ci            build-system: cmake
154b815c7f3Sopenharmony_ci            cmake-generator: 'Visual Studio 17 2022'
155b815c7f3Sopenharmony_ci            cmake-options: >-
156b815c7f3Sopenharmony_ci              -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>
157b815c7f3Sopenharmony_ci              -DCMAKE_GENERATOR_PLATFORM=Win32
158b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
159b815c7f3Sopenharmony_ci              -DVCPKG_TARGET_TRIPLET=x86-windows-static
160b815c7f3Sopenharmony_ci              -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake
161b815c7f3Sopenharmony_ci
162b815c7f3Sopenharmony_ci          - name: windows-vs2022-Win32-shared
163b815c7f3Sopenharmony_ci            os: windows-latest
164b815c7f3Sopenharmony_ci            triplet: 'x86-windows-static'
165b815c7f3Sopenharmony_ci            build-system: cmake
166b815c7f3Sopenharmony_ci            cmake-generator: 'Visual Studio 17 2022'
167b815c7f3Sopenharmony_ci            cmake-options: >-
168b815c7f3Sopenharmony_ci              -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>
169b815c7f3Sopenharmony_ci              -DCMAKE_GENERATOR_PLATFORM=Win32
170b815c7f3Sopenharmony_ci              -DBUILD_SHARED_LIBS=ON
171b815c7f3Sopenharmony_ci              -DBUILD_REGTEST=OFF
172b815c7f3Sopenharmony_ci              -DBUILD_EXAMPLES=OFF
173b815c7f3Sopenharmony_ci              -DINSTALL_PKGCONFIG_MODULE=OFF
174b815c7f3Sopenharmony_ci              -DCPACK_PACKAGE_NAME=libsndfile
175b815c7f3Sopenharmony_ci              -DCMAKE_BUILD_TYPE=Release
176b815c7f3Sopenharmony_ci              -DVCPKG_TARGET_TRIPLET=x86-windows-static
177b815c7f3Sopenharmony_ci              -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake
178b815c7f3Sopenharmony_ci
179b815c7f3Sopenharmony_ci    runs-on: ${{ matrix.os }}
180b815c7f3Sopenharmony_ci    steps:
181b815c7f3Sopenharmony_ci      - uses: actions/checkout@v2
182b815c7f3Sopenharmony_ci
183b815c7f3Sopenharmony_ci      - name: Install MacOS dependencies
184b815c7f3Sopenharmony_ci        if: startsWith(matrix.os,'macos')
185b815c7f3Sopenharmony_ci        run: |
186b815c7f3Sopenharmony_ci          brew install automake autogen speex mpg123
187b815c7f3Sopenharmony_ci
188b815c7f3Sopenharmony_ci      - name: Install Linux dependencies
189b815c7f3Sopenharmony_ci        if: startsWith(matrix.os,'ubuntu')
190b815c7f3Sopenharmony_ci        run: sudo apt-get update -y && sudo apt-get install -y autogen ninja-build libogg-dev libvorbis-dev libflac-dev libopus-dev libasound2-dev libsqlite3-dev libspeex-dev libmp3lame-dev libmpg123-dev
191b815c7f3Sopenharmony_ci
192b815c7f3Sopenharmony_ci      - name: Setup NuGet Credentials
193b815c7f3Sopenharmony_ci        env:
194b815c7f3Sopenharmony_ci          VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
195b815c7f3Sopenharmony_ci        if: startsWith(matrix.os,'windows')
196b815c7f3Sopenharmony_ci        shell: 'bash'
197b815c7f3Sopenharmony_ci        run: >
198b815c7f3Sopenharmony_ci          `vcpkg fetch nuget | tail -n 1`
199b815c7f3Sopenharmony_ci          sources add
200b815c7f3Sopenharmony_ci          -source "https://nuget.pkg.github.com/libsndfile/index.json"
201b815c7f3Sopenharmony_ci          -storepasswordincleartext
202b815c7f3Sopenharmony_ci          -name "GitHub"
203b815c7f3Sopenharmony_ci          -username "evpobr"
204b815c7f3Sopenharmony_ci          -password "${{ secrets.GITHUB_TOKEN }}"
205b815c7f3Sopenharmony_ci
206b815c7f3Sopenharmony_ci      - name: Configure, build and test with Autotools
207b815c7f3Sopenharmony_ci        env:
208b815c7f3Sopenharmony_ci          CC: ${{ matrix.cc }}
209b815c7f3Sopenharmony_ci          CXX: ${{ matrix.cxx }}
210b815c7f3Sopenharmony_ci        if: startsWith(matrix.build-system,'autotools')
211b815c7f3Sopenharmony_ci        run: |
212b815c7f3Sopenharmony_ci          autoreconf -vif
213b815c7f3Sopenharmony_ci          if [[ "${CC}" == "clang" ]]; then
214b815c7f3Sopenharmony_ci            ./configure --enable-werror && make distcheck
215b815c7f3Sopenharmony_ci          else
216b815c7f3Sopenharmony_ci            Scripts/asan-configure.sh --enable-werror && make distcheck
217b815c7f3Sopenharmony_ci          fi
218b815c7f3Sopenharmony_ci
219b815c7f3Sopenharmony_ci      - name: Configure, build and test with CMake
220b815c7f3Sopenharmony_ci        env:
221b815c7f3Sopenharmony_ci          CC: ${{ matrix.cc }}
222b815c7f3Sopenharmony_ci          CXX: ${{ matrix.cxx }}
223b815c7f3Sopenharmony_ci          VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
224b815c7f3Sopenharmony_ci        if: startsWith(matrix.build-system,'cmake')
225b815c7f3Sopenharmony_ci        run: |
226b815c7f3Sopenharmony_ci          mkdir build
227b815c7f3Sopenharmony_ci          cd build
228b815c7f3Sopenharmony_ci          cmake .. -G "${{matrix.cmake-generator}}" ${{matrix.cmake-options}}
229b815c7f3Sopenharmony_ci          cmake --build . --config Release
230b815c7f3Sopenharmony_ci          ctest
231b815c7f3Sopenharmony_ci
232b815c7f3Sopenharmony_ci      - name: Configure, build and test with OSSFuzz
233b815c7f3Sopenharmony_ci        env:
234b815c7f3Sopenharmony_ci          CC: ${{ matrix.cc }}
235b815c7f3Sopenharmony_ci          CXX: ${{ matrix.cxx }}
236b815c7f3Sopenharmony_ci        if: startsWith(matrix.build-system,'ossfuzz')
237b815c7f3Sopenharmony_ci        run: |
238b815c7f3Sopenharmony_ci          ./ossfuzz/ci_oss.sh
239