1b815c7f3Sopenharmony_ci# libsndfile 2b815c7f3Sopenharmony_ci 3b815c7f3Sopenharmony_ci 4b815c7f3Sopenharmony_ci 5b815c7f3Sopenharmony_cilibsndfile is a C library for reading and writing files containing sampled audio 6b815c7f3Sopenharmony_cidata. 7b815c7f3Sopenharmony_ci 8b815c7f3Sopenharmony_ci## Authors 9b815c7f3Sopenharmony_ci 10b815c7f3Sopenharmony_ciThe libsndfile project was originally developed and maintained by 11b815c7f3Sopenharmony_ciErik de Castro Lopo <erikd@mega-nerd.com> aka @erikd. The project was developed 12b815c7f3Sopenharmony_cion Github at <https://github.com/erikd/libsndfile>. 13b815c7f3Sopenharmony_ci 14b815c7f3Sopenharmony_ciAfter the release of version 1.0.30, @erikd transferred the project to 15b815c7f3Sopenharmony_ci[the libsndfile team](https://github.com/libsndfile), see [AUTHORS](AUTHORS) 16b815c7f3Sopenharmony_cifor details. 17b815c7f3Sopenharmony_ci 18b815c7f3Sopenharmony_ci## Hacking 19b815c7f3Sopenharmony_ci 20b815c7f3Sopenharmony_ciThe canonical source code repository for libsndfile is at 21b815c7f3Sopenharmony_ci<https://github.com/libsndfile/libsndfile>. 22b815c7f3Sopenharmony_ci 23b815c7f3Sopenharmony_ciYou can grab the source code using: 24b815c7f3Sopenharmony_ci 25b815c7f3Sopenharmony_ci git clone https://github.com/libsndfile/libsndfile.git 26b815c7f3Sopenharmony_ci 27b815c7f3Sopenharmony_ciFor building for Android see [BuildingForAndroid][BuildingForAndroid]. 28b815c7f3Sopenharmony_ci 29b815c7f3Sopenharmony_ciThere are currently two build systems: the traditional GNU autotool based one and 30b815c7f3Sopenharmony_cimodern CMake based build system. Use of the CMake build system is documented 31b815c7f3Sopenharmony_cibelow. 32b815c7f3Sopenharmony_ci 33b815c7f3Sopenharmony_ciSetting up a build environment for libsndfile on Debian or Ubuntu is as simple as: 34b815c7f3Sopenharmony_ci 35b815c7f3Sopenharmony_ci sudo apt install autoconf autogen automake build-essential libasound2-dev \ 36b815c7f3Sopenharmony_ci libflac-dev libogg-dev libtool libvorbis-dev libopus-dev libmp3lame-dev \ 37b815c7f3Sopenharmony_ci libmpg123-dev pkg-config python 38b815c7f3Sopenharmony_ci 39b815c7f3Sopenharmony_ciFor other Linux distributions or any of the *BSDs, the setup should be similar 40b815c7f3Sopenharmony_cialthough the package install tools and package names may be slightly different. 41b815c7f3Sopenharmony_ci 42b815c7f3Sopenharmony_ciSimilarly on Mac OS X, assuming [brew] is already installed: 43b815c7f3Sopenharmony_ci 44b815c7f3Sopenharmony_ci brew install autoconf autogen automake flac libogg libtool libvorbis opus mpg123 pkg-config 45b815c7f3Sopenharmony_ci 46b815c7f3Sopenharmony_ciOnce the build environment has been set up, building and testing libsndfile is 47b815c7f3Sopenharmony_cias simple as: 48b815c7f3Sopenharmony_ci 49b815c7f3Sopenharmony_ci autoreconf -vif 50b815c7f3Sopenharmony_ci ./configure --enable-werror 51b815c7f3Sopenharmony_ci make 52b815c7f3Sopenharmony_ci make check 53b815c7f3Sopenharmony_ci 54b815c7f3Sopenharmony_ci## The CMake build system 55b815c7f3Sopenharmony_ci 56b815c7f3Sopenharmony_ciAlthough Autotools is the primary and recommended build toolchain, CMake meta 57b815c7f3Sopenharmony_cibuild generator is also available. The build process with CMake takes 58b815c7f3Sopenharmony_ciplace in two stages. First, standard build files are created from configuration 59b815c7f3Sopenharmony_ciscripts. Then the platform's native build tools are used for the actual 60b815c7f3Sopenharmony_cibuilding. CMake can produce Microsoft Visual Studio project and solution files, 61b815c7f3Sopenharmony_ciUnix Makefiles, Xcode projects and [many more](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html). 62b815c7f3Sopenharmony_ci 63b815c7f3Sopenharmony_ciSome IDE support CMake natively or with plugins, check you IDE documentation 64b815c7f3Sopenharmony_ci for details. 65b815c7f3Sopenharmony_ci 66b815c7f3Sopenharmony_ci### Requirements 67b815c7f3Sopenharmony_ci 68b815c7f3Sopenharmony_ci1. C99-compliant compiler toolchain (tested with GCC, Clang and Visual 69b815c7f3Sopenharmony_ci Studio 2015) 70b815c7f3Sopenharmony_ci2. CMake 3.1.3 or newer 71b815c7f3Sopenharmony_ci 72b815c7f3Sopenharmony_ciThere are some recommended packages to enable all features of libsndfile: 73b815c7f3Sopenharmony_ci 74b815c7f3Sopenharmony_ci1. Ogg, Vorbis and FLAC libraries and headers to enable these formats support 75b815c7f3Sopenharmony_ci2. ALSA development package under Linux to build sndfile-play utility 76b815c7f3Sopenharmony_ci3. Sndio development package under BSD to build sndfile-play utility 77b815c7f3Sopenharmony_ci 78b815c7f3Sopenharmony_ci### Building from command line 79b815c7f3Sopenharmony_ci 80b815c7f3Sopenharmony_ciCMake can handle out-of-place builds, enabling several builds from 81b815c7f3Sopenharmony_cithe same source tree, and cross-compilation. The ability to build a directory 82b815c7f3Sopenharmony_citree outside the source tree is a key feature, ensuring that if a build 83b815c7f3Sopenharmony_cidirectory is removed, the source files remain unaffected. 84b815c7f3Sopenharmony_ci 85b815c7f3Sopenharmony_ci mkdir CMakeBuild 86b815c7f3Sopenharmony_ci cd CMakeBuild 87b815c7f3Sopenharmony_ci 88b815c7f3Sopenharmony_ciThen run `cmake` command with directory where CMakeLists.txt script is located 89b815c7f3Sopenharmony_cias argument (relative paths are supported): 90b815c7f3Sopenharmony_ci 91b815c7f3Sopenharmony_ci cmake .. 92b815c7f3Sopenharmony_ci 93b815c7f3Sopenharmony_ciThis command will configure and write build script or solution to CMakeBuild 94b815c7f3Sopenharmony_cidirectory. CMake is smart enough to create Unix makefiles under Linux or Visual 95b815c7f3Sopenharmony_ciStudio solution if you have Visual Studio installed, but you can configure 96b815c7f3Sopenharmony_ci[generator](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html) 97b815c7f3Sopenharmony_ciwith `-G` command line parameter: 98b815c7f3Sopenharmony_ci 99b815c7f3Sopenharmony_ci cmake .. -G"Unix Makefiles" 100b815c7f3Sopenharmony_ci 101b815c7f3Sopenharmony_ciThe build procedure depends on the selected generator. With "Unix Makefiles" you 102b815c7f3Sopenharmony_cican type: 103b815c7f3Sopenharmony_ci 104b815c7f3Sopenharmony_ci make & make install 105b815c7f3Sopenharmony_ci 106b815c7f3Sopenharmony_ciWith "Visual Studio" and some other generators you can open solution or project 107b815c7f3Sopenharmony_cifrom `CMakeBuild` directory and build using IDE. 108b815c7f3Sopenharmony_ci 109b815c7f3Sopenharmony_ciFinally, you can use unified command: 110b815c7f3Sopenharmony_ci 111b815c7f3Sopenharmony_ci cmake --build . 112b815c7f3Sopenharmony_ci 113b815c7f3Sopenharmony_ciCMake also provides Qt-based cross platform GUI, cmake-gui. Using it is trivial 114b815c7f3Sopenharmony_ciand does not require detailed explanations. 115b815c7f3Sopenharmony_ci 116b815c7f3Sopenharmony_ci### Configuring CMake 117b815c7f3Sopenharmony_ci 118b815c7f3Sopenharmony_ciYou can pass additional options with `/D<parameter>=<value>` when you run 119b815c7f3Sopenharmony_ci`cmake` command. Some useful system options: 120b815c7f3Sopenharmony_ci 121b815c7f3Sopenharmony_ci* `CMAKE_C_FLAGS` - additional C compiler flags 122b815c7f3Sopenharmony_ci* `CMAKE_BUILD_TYPE` - configuration type, `DEBUG`, `RELEASE`, `RELWITHDEBINFO` 123b815c7f3Sopenharmony_ci or `MINSIZEREL`. `DEBUG` is default 124b815c7f3Sopenharmony_ci* `CMAKE_INSTALL_PREFIX` - build install location, the same as `--prefix` option 125b815c7f3Sopenharmony_ci of `configure` script 126b815c7f3Sopenharmony_ci 127b815c7f3Sopenharmony_ci Useful libsndfile options: 128b815c7f3Sopenharmony_ci 129b815c7f3Sopenharmony_ci* `BUILD_SHARED_LIBS` - build shared library (DLL under Windows) when `ON`, 130b815c7f3Sopenharmony_ci build static library othervise. This option is `OFF` by default. 131b815c7f3Sopenharmony_ci* `BUILD_PROGRAMS` - build libsndfile's utilities from `programs/` directory, 132b815c7f3Sopenharmony_ci `ON` by default. 133b815c7f3Sopenharmony_ci* `BUILD_EXAMPLES` - build examples, `ON` by default. 134b815c7f3Sopenharmony_ci* `BUILD_TESTING` - build tests. Then you can run tests with `ctest` command, 135b815c7f3Sopenharmony_ci `ON` by default. Setting `BUILD_SHARED_LIBS` to `ON` disables this option. 136b815c7f3Sopenharmony_ci* `ENABLE_EXTERNAL_LIBS` - enable Ogg, Vorbis, FLAC and Opus support. This 137b815c7f3Sopenharmony_ci option is available and set to `ON` if all dependency libraries were found. 138b815c7f3Sopenharmony_ci* `ENABLE_MPEG` - MP3 support. This option is available and set to `ON` if all 139b815c7f3Sopenharmony_ci dependency libraries were found. 140b815c7f3Sopenharmony_ci* `ENABLE_CPU_CLIP` - enable tricky cpu specific clipper. Enabled and set to 141b815c7f3Sopenharmony_ci `ON` when CPU clips negative\positive. Don't touch it if you are not sure 142b815c7f3Sopenharmony_ci* `ENABLE_BOW_DOCS` - enable black-on-white documentation theme, `OFF` by 143b815c7f3Sopenharmony_ci default. 144b815c7f3Sopenharmony_ci* `ENABLE_EXPERIMENTAL` - enable experimental code. Don't use it if you are 145b815c7f3Sopenharmony_ci not sure. This option is `OFF` by default. 146b815c7f3Sopenharmony_ci* `ENABLE_CPACK` - enable [CPack](https://cmake.org/cmake/help/latest/module/CPack.html) support. 147b815c7f3Sopenharmony_ci This option is `ON` by default. 148b815c7f3Sopenharmony_ci* `ENABLE_PACKAGE_CONFIG` - generate and install [package config file](https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#config-file-packages). 149b815c7f3Sopenharmony_ci* `INSTALL_PKGCONFIG_MODULE` - generate and install [pkg-config module](https://people.freedesktop.org/~dbn/pkg-config-guide.html). 150b815c7f3Sopenharmony_ci* `INSTALL_MANPAGES` - install [man pages](https://en.wikipedia.org/wiki/Man_page) for programs. This option is `ON` by default 151b815c7f3Sopenharmony_ci* `ENABLE_STATIC_RUNTIME` - enable static runtime on Windows platform (MSVC and 152b815c7f3Sopenharmony_ci MinGW), `OFF` by default. 153b815c7f3Sopenharmony_ci 154b815c7f3Sopenharmony_ci **Note**: For MSVC compiler this option is deprecated for CMake >= 3.15, see 155b815c7f3Sopenharmony_ci policy [CMP0091](https://cmake.org/cmake/help/latest/policy/CMP0091.html). 156b815c7f3Sopenharmony_ci Use `CMAKE_MSVC_RUNTIME_LIBRARY` option instead. 157b815c7f3Sopenharmony_ci 158b815c7f3Sopenharmony_ci **Note**: For MinGW toolchain this option is experimental. If you enabled it 159b815c7f3Sopenharmony_ci and then disabled again, you need to clear CMake cache (delete CMakeCache.txt). 160b815c7f3Sopenharmony_ci* `ENABLE_COMPATIBLE_LIBSNDFILE_NAME` - set DLL name to `libsndfile-1.dll` 161b815c7f3Sopenharmony_ci (canonical name) on Windows platform, `sndfile.dll` otherwise, `OFF` by 162b815c7f3Sopenharmony_ci default. Library name can be different depending on platform. The well known 163b815c7f3Sopenharmony_ci DLL name on Windows platform is `libsndfile-1.dll`, because the only way to 164b815c7f3Sopenharmony_ci build Windows library before was MinGW toolchain with Autotools. This name 165b815c7f3Sopenharmony_ci is native for MinGW ecosystem, Autotools constructs it using MinGW platform 166b815c7f3Sopenharmony_ci rules from `sndfile` target. But when you build with CMake using native 167b815c7f3Sopenharmony_ci Windows compiler, the name is `sndfile.dll`. This is name for native Windows 168b815c7f3Sopenharmony_ci platform, because Windows has no library naming rules. It is preffered 169b815c7f3Sopenharmony_ci because you can search library using package manager or CMake's 170b815c7f3Sopenharmony_ci `find_library` command on any platform using the same `sndfile` name. 171b815c7f3Sopenharmony_ci 172b815c7f3Sopenharmony_ci* `ENABLE_SSE2` - add compiler flag to enable SSE2 if required, `ON` by default. 173b815c7f3Sopenharmony_ci 174b815c7f3Sopenharmony_ci This option is for X86 and GCC compatible compilers configurations only. 175b815c7f3Sopenharmony_ci 176b815c7f3Sopenharmony_ci If you compile for other SIMD set, e.g. AVX2, you may want to set 177b815c7f3Sopenharmony_ci `ENABLE_SSE2` to `OFF`. 178b815c7f3Sopenharmony_ci 179b815c7f3Sopenharmony_ci **Note**: This option is not active for X64 configuration, because SSE2 is 180b815c7f3Sopenharmony_ci always available in this mode and all optimizations are enabled by default. 181b815c7f3Sopenharmony_ci 182b815c7f3Sopenharmony_ciDeprecated options: 183b815c7f3Sopenharmony_ci 184b815c7f3Sopenharmony_ci* `DISABLE_EXTERNAL_LIBS` - disable Ogg, Vorbis and FLAC support. Replaced by 185b815c7f3Sopenharmony_ci `ENABLE_EXTERNAL_LIBS` 186b815c7f3Sopenharmony_ci* `DISABLE_CPU_CLIP` - disable tricky cpu specific clipper. Replaced by 187b815c7f3Sopenharmony_ci `ENABLE_CPU_CLIP` 188b815c7f3Sopenharmony_ci* `BUILD_STATIC_LIBS` - build static library. Use `BUILD_SHARED_LIBS` instead 189b815c7f3Sopenharmony_ci 190b815c7f3Sopenharmony_ci### Linking from CMake projects 191b815c7f3Sopenharmony_ci 192b815c7f3Sopenharmony_ciFirst you need to add `FindOgg.cmake`, `FindVorbis.cmake`, `FindFLAC.cmake` and 193b815c7f3Sopenharmony_ci`FindOpus.cmake` files to some directory inside your CMake project (usually 194b815c7f3Sopenharmony_ci`cmake`) and add it to `CMAKE_MODULE_PATH`: 195b815c7f3Sopenharmony_ci 196b815c7f3Sopenharmony_ci project(SomeApplication) 197b815c7f3Sopenharmony_ci 198b815c7f3Sopenharmony_ci list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 199b815c7f3Sopenharmony_ci 200b815c7f3Sopenharmony_ciNow you can search `libsndfile` library from your `CMakeLists.txt` 201b815c7f3Sopenharmony_ci with this command: 202b815c7f3Sopenharmony_ci 203b815c7f3Sopenharmony_ci find_package(SndFile) 204b815c7f3Sopenharmony_ci 205b815c7f3Sopenharmony_ci`SndFile_FOUND` is set to `ON` when library is found. 206b815c7f3Sopenharmony_ci 207b815c7f3Sopenharmony_ciIf `libsndfile` dependency is critical, you can add `REQUIRED` to 208b815c7f3Sopenharmony_ci `find_package`: 209b815c7f3Sopenharmony_ci 210b815c7f3Sopenharmony_ci find_package(SndFile REQUIRED) 211b815c7f3Sopenharmony_ci 212b815c7f3Sopenharmony_ciWith with option `find_package` will terminate configuration process 213b815c7f3Sopenharmony_ci if `libsndfile` is not found. 214b815c7f3Sopenharmony_ci 215b815c7f3Sopenharmony_ciYou can also add version check: 216b815c7f3Sopenharmony_ci 217b815c7f3Sopenharmony_ci find_package(SndFile 1.0.29) 218b815c7f3Sopenharmony_ci 219b815c7f3Sopenharmony_ci`find_package` will report error, if `libsndfile` version is < 1.0.29. 220b815c7f3Sopenharmony_ci 221b815c7f3Sopenharmony_ciYou can combine `REQUIRED` and version if you need. 222b815c7f3Sopenharmony_ci 223b815c7f3Sopenharmony_ciTo link `libsndfile` library use: 224b815c7f3Sopenharmony_ci 225b815c7f3Sopenharmony_ci target_link_libraries(my_application PRIVATE SndFile::sndfile) 226b815c7f3Sopenharmony_ci 227b815c7f3Sopenharmony_ci### Notes for Windows users 228b815c7f3Sopenharmony_ci 229b815c7f3Sopenharmony_ci#### System CRT library 230b815c7f3Sopenharmony_ci 231b815c7f3Sopenharmony_ciFirst advice about Visual Studio [system CRT libraries](https://docs.microsoft.com/en-us/cpp/c-runtime-library/c-run-time-library-reference?view=vs-2019), 232b815c7f3Sopenharmony_ciit is system code linked as static or dynamic library to every C application. 233b815c7f3Sopenharmony_ci 234b815c7f3Sopenharmony_ciYou can find related option in Visual Studio project properties: 235b815c7f3Sopenharmony_ci 236b815c7f3Sopenharmony_ci C/C++ -> Code Generation -> Runtime Library 237b815c7f3Sopenharmony_ci 238b815c7f3Sopenharmony_ciDynamic version of system CRT library is default and it means that end user needs 239b815c7f3Sopenharmony_cito have the same runtime library installed on his system. Most likely it is so, 240b815c7f3Sopenharmony_cibut if it is not, the user will see this error message using libsndfile DLL: 241b815c7f3Sopenharmony_ci 242b815c7f3Sopenharmony_ci "The program can't start because <crt-dll-name>.dll is missing from your computer. Try reinstalling the program to fix this problem. " 243b815c7f3Sopenharmony_ci 244b815c7f3Sopenharmony_ciTo avoid this, you may want to enable static CRT library linking. In this case 245b815c7f3Sopenharmony_cithe size of your DLL will increase slightly the size will increase slightly, but 246b815c7f3Sopenharmony_ciyou can redistribute the libsndfile DLL without having to install the correct 247b815c7f3Sopenharmony_civersion of the system CRT library. 248b815c7f3Sopenharmony_ci 249b815c7f3Sopenharmony_ciCMake project will use dynamic system CRT libraries by default, just like 250b815c7f3Sopenharmony_ciVisual Studio does. But you can change it using `ENABLE_STATIC_RUNTIME` or 251b815c7f3Sopenharmony_ci`CMAKE_MSVC_RUNTIME_LIBRARY` options. 252b815c7f3Sopenharmony_ci 253b815c7f3Sopenharmony_ci**Note**: You cannot use both options at the same time, it will lead to a 254b815c7f3Sopenharmony_ciconfiguration error. 255b815c7f3Sopenharmony_ci 256b815c7f3Sopenharmony_ciIf you have CMake >= 3.15 you should use 257b815c7f3Sopenharmony_ci[`CMAKE_MSVC_RUNTIME_LIBRARY`](https://cmake.org/cmake/help/v3.15/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html) option. 258b815c7f3Sopenharmony_ci 259b815c7f3Sopenharmony_ciThis will enable static linking: 260b815c7f3Sopenharmony_ci 261b815c7f3Sopenharmony_ci cmake .. -D"MultiThreaded$<$<CONFIG:Debug>:Debug>" 262b815c7f3Sopenharmony_ci 263b815c7f3Sopenharmony_ciYou can use libsndfile `ENABLE_STATIC_RUNTIME` option to to control CRT library 264b815c7f3Sopenharmony_cilinking for CMake project: `OFF` or unset (default) for dynamic, and `ON` for 265b815c7f3Sopenharmony_cistatic linking: 266b815c7f3Sopenharmony_ci 267b815c7f3Sopenharmony_ci cmake .. -DENABLE_STATIC_RUNTIME=ON 268b815c7f3Sopenharmony_ci 269b815c7f3Sopenharmony_ci**Note**: This option is deprecated and may be removed in far future because we 270b815c7f3Sopenharmony_cihave standard option `CMAKE_MSVC_RUNTIME_LIBRARY` now. 271b815c7f3Sopenharmony_ci 272b815c7f3Sopenharmony_ci#### Using Vcpkg package manager 273b815c7f3Sopenharmony_ci 274b815c7f3Sopenharmony_ciSecond advice is about Ogg, Vorbis FLAC and Opus support. Searching external 275b815c7f3Sopenharmony_cilibraries under Windows is a little bit tricky. The best way is to use 276b815c7f3Sopenharmony_ci[Vcpkg](https://github.com/Microsoft/vcpkg). 277b815c7f3Sopenharmony_ci 278b815c7f3Sopenharmony_ciInstall Vcpkg and then add this parameter to cmake command line: 279b815c7f3Sopenharmony_ci 280b815c7f3Sopenharmony_ci -DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake 281b815c7f3Sopenharmony_ci 282b815c7f3Sopenharmony_ciYou also need to set `VCPKG_TARGET_TRIPLET` if you want to use static libraries: 283b815c7f3Sopenharmony_ci 284b815c7f3Sopenharmony_ci -DVCPKG_TARGET_TRIPLET=x64-windows-static 285b815c7f3Sopenharmony_ci 286b815c7f3Sopenharmony_ciThen you need to install static libogg, libvorbis, libflac, libopus, mpg123 and 287b815c7f3Sopenharmony_cimp3lame Vcpkg packages. 288b815c7f3Sopenharmony_ci 289b815c7f3Sopenharmony_ciAfter 1.1.0beta2 you don't need to install dependencies manually. Libsndfile 290b815c7f3Sopenharmony_cinow supports [Vcpkg manifest mode](https://vcpkg.readthedocs.io/en/latest/users/manifests/) 291b815c7f3Sopenharmony_ciand all dependencies are installed automatically. 292b815c7f3Sopenharmony_ci 293b815c7f3Sopenharmony_ciHowever, you can turn off the manifest mode and return to the classic mode using 294b815c7f3Sopenharmony_cithe `VCPKG_MANIFEST_MODE` parameter from the command line: 295b815c7f3Sopenharmony_ci 296b815c7f3Sopenharmony_ci -DVCPKG_MANIFEST_MODE=OFF 297b815c7f3Sopenharmony_ci 298b815c7f3Sopenharmony_ciIn classic mode, you need to install the required libraries manually: 299b815c7f3Sopenharmony_ci 300b815c7f3Sopenharmony_ci vcpkg install libvorbis:x64-windows-static libflac:x64-windows-static 301b815c7f3Sopenharmony_ci opus:x64-windows-static mp3lame:x86-windows-static mpg123:x86-windows-static 302b815c7f3Sopenharmony_ci libvorbis:x86-windows-static libflac:x86-windows-static 303b815c7f3Sopenharmony_ci opus:x86-windows-static mp3lame:x86-windows-static mpg123:x86-windows-static 304b815c7f3Sopenharmony_ci 305b815c7f3Sopenharmony_ci**Note**: Use must use the same CRT library for external libraries and the 306b815c7f3Sopenharmony_cilibsndfile library itself. For `*-static` triplets Vcpkg uses 307b815c7f3Sopenharmony_ci[static CRT](https://vcpkg.readthedocs.io/en/latest/users/triplets/). 308b815c7f3Sopenharmony_ci 309b815c7f3Sopenharmony_ci## Submitting Patches 310b815c7f3Sopenharmony_ci 311b815c7f3Sopenharmony_ciSee [CONTRIBUTING.md](CONTRIBUTING.md) for details. 312b815c7f3Sopenharmony_ci 313b815c7f3Sopenharmony_ci[brew]: http://brew.sh/ 314b815c7f3Sopenharmony_ci[github]: http://libsndfile.github.io/libsndfile/ 315b815c7f3Sopenharmony_ci[BuildingForAndroid]: https://github.com/libsndfile/libsndfile/blob/master/Building-for-Android.md 316