Go to file
2016-07-07 19:53:00 +10:00
CMake libsndfile.cmake: Set __USE_MINGW_ANSI_STDIO as needed 2016-07-07 19:53:00 +10:00
doc Version 1.0.27 2016-06-19 18:08:54 +10:00
examples Add examples/sndfile-loopify.c 2015-10-26 09:24:14 +11:00
M4 M4/clang.m4 : Minor improvements. 2013-11-22 18:18:12 +11:00
man Remove all mentions of Carbon for OSX 2015-11-27 06:16:38 +11:00
Octave Do not use old variable INCLUDES and use modern AM_INIT_AUTOMAKE invocation. 2013-04-07 20:05:08 +10:00
programs sndfile-play: Remove support for Darwin <= 11 2016-07-03 10:33:31 +10:00
regtest Add *.exe CLEANFILES in Makefile.am. 2013-06-23 21:33:37 +10:00
Scripts Scripts/git-pre-commit-hook: Support GNU and BSD sed 2016-07-07 19:35:11 +10:00
src ALAC: Fix warnings from AppleClang 2016-07-03 11:34:29 +10:00
tests Revert "Drop use of __USE_MINGW_ANSI_STDIO" 2016-07-03 19:02:03 +10:00
Win32 Remove cruft from Win32 dir. 2008-10-08 21:19:23 +11:00
.gitignore Add examples/sndfile-loopify to .gitignore 2016-02-03 11:01:17 +11:00
.travis.yml .travis.yml: Switch from Ubuntu Precise to Trusty 2015-12-07 19:28:22 +11:00
AUTHORS AUTHORS : Add contributors. 2014-09-02 06:17:37 +10:00
autogen.sh Comprehensive CMake improvements 2016-07-02 17:15:47 +10:00
ChangeLog Fix some typos. 2014-10-27 06:17:57 +11:00
CMakeLists.txt CMake: More fixes 2016-07-03 14:14:17 +10:00
configure.ac Revert "Drop use of __USE_MINGW_ANSI_STDIO" 2016-07-03 19:02:03 +10:00
COPYING First snapshot of the public project. 2007-05-14 19:55:24 +10:00
echo-install-dirs.in Use pkgconfigdir variable as it is not sure it will be libdir/pkgconfig. 2013-04-28 21:35:08 +10:00
INSTALL First snapshot of the public project. 2007-05-14 19:55:24 +10:00
libsndfile.spec.in libsndfile.spec.in : Change field name 'URL' to 'Url'. 2011-12-19 20:22:34 +11:00
make_lite.py Clean out cruft. 2008-04-05 20:13:47 +11:00
Makefile.am CMake: Detect and link external libs (FLAC/vorbis/ogg) 2016-07-02 21:16:40 +10:00
NEWS Version 1.0.27 2016-06-19 18:08:54 +10:00
README Version 1.0.27 2016-06-19 18:08:54 +10:00
README.md README.md: Typo 2016-07-03 08:23:06 +10:00
sndfile.pc.in sndfile.pc.in: missing update from 95828ca2 2016-04-30 07:29:07 +10:00

libsndfile

Build Status

libsndfile is a C library for reading and writing files containing sampled audio data.

Hacking

The canonical source code repository for libsndfile is at https://github.com/erikd/libsndfile/.

You can grab the source code using:

$ git clone git://github.com/erikd/libsndfile.git

There are currently two build systems; the official GNU autotool based one and a more limited and experimental CMake based build system. Use of the CMake build system is documented below.

To build libsndfile on Linux, OSX and Windows (Using GNU GCC) from a git clone using the autotools based build system will require a number of GNU and other Free and Open Source Software tools including:

If you are on Linux, its probably best to install these via your Linux distribution's package manager.

If you want to compile libsndfile with support for formats like FLAC and Ogg/Vorbis you will also need to install the following optional libraries:

Support for these extra libraries is an all or nothing affair. Unless all of them are installed none of them will be supported.

$ ./autogen.sh

Running autogen.sh also installs a git pre-commit hook. The pre-commit hook is run each time a user tries to commit and checks code about to be committed against coding guidelines.

Nest step is to run configure, with the following configure options being recommended for anyone contemplating sending libsndfile patches:

$ ./configure --enable-gcc-werror

Finally libsndfile can be built and tested:

$ make
$ make check

The CMake build system.

The CMake build system is still experimental and probably only works on linux because it still relies on GNU autotools for bootstrapping. Using it as simple as:

$ Scripts/cmake-build.sh

Will happily accept patches to make the CMake build system more portable.

Submitting Patches.

  • Patches should pass all pre-commit hook tests.
  • Patches should always be submitted via a either Github "pull request" or a via emailed patches created using "git format-patch".
  • Patches for new features should include tests and documentation.
  • Patches to fix bugs should either pass all tests, or modify the tests in some sane way.
  • When a new feature is added for a particular file format and that feature makes sense for other formats, then it should also be implemented for one or two of the other formats.