Commit Graph

163 Commits

Author SHA1 Message Date
Martijn van Beurden d5a43acbff Reduce chance of ogg serial number collision
When two ogg streams were made with two different calls to `flac`
within the same second, their serial numbers would be the same.
This caused problems with seeking in the test suite. While in
theory, libFLAC should be able to seek in a chained stream with
two equal serial numbers without fail, in practice seeking in
chained streams is hard enough. So, this commit makes sure the
chained test files have links with unequal serial numbers.

Concerning the use of specific casts, shifts and masks: For some
reason, on some platforms, seemingly, saturating arithmetic was
used where overflow was expected, in effect always seeding with
the same number, UINT32_MAX.
2024-09-27 15:24:19 +02:00
Martijn van Beurden e2aef0c275
Remove microbench (#736)
This commit removes 'microbench', as it is no longer relevant. For
more information on its former purpose, see
https://lists.xiph.org/pipermail/flac-dev/2015-September/005608.html
2024-08-30 07:33:55 +02:00
Martijn van Beurden de8bbb0d5b
Update copyright to 2024 (#722) 2024-07-11 15:35:32 +02:00
Martijn van Beurden 706c061457
Fix https://github.com/m-ab-s/media-autobuild_suite/issues/2718 (#711) 2024-06-19 15:22:26 +02:00
Martijn van Beurden d6921ed6cd Fix use of --enable-asm-optimizations
Fixes https://github.com/xiph/flac/issues/686
2024-05-02 08:30:27 +02:00
Martijn van Beurden 7f7da558f5 Remove checks for semaphore.h in CMake and configure 2024-02-26 21:54:37 +01:00
Martijn van Beurden 68d01aaea5 Add checking for pthread to configure 2023-09-22 21:10:15 +02:00
Martijn van Beurden 28e4f0528c
Release FLAC 1.4.3 2023-06-23 09:17:08 +02:00
Martijn van Beurden e00d9b881f
Update copyright year and maintainer status 2023-06-06 22:08:24 +02:00
Martijn van Beurden 0b8a271b3e
Fix version number display on Windows
This adds windows-specific version information to build objects

Co-authored-by: Ozkan Sezer <sezeroz@gmail.com>
2023-05-24 14:52:13 +02:00
Martijn van Beurden 43bc8101ce Switch default bitreader/bitwriter word size to 64-bit 2023-03-27 22:10:00 +02:00
Martijn van Beurden 771eb050e7 Add tests for foreign metadata handling 2023-02-17 11:06:46 +01:00
Martijn van Beurden ba5172e554
Remove all PPC-specific code (and a mention of SPARC)
As it turns out that the PPC-specific code provides no benefit with
modern, autovectorizing compilers, and given that there is a lot of
cruft surrounding the PPC-specific parts, remove all of it.

See also https://lists.xiph.org/pipermail/flac-dev/2022-December/006620.html
2023-01-27 19:02:36 +01:00
Martijn van Beurden 0a52c6fd5c
Replace own bool with stdbool.h, check for header being available 2023-01-07 09:58:00 +01:00
Martijn van Beurden eb5bac33f9
Only prepend default CFLAGS for GCC and Clang 2022-11-06 19:12:34 +01:00
Martijn van Beurden b32e5cbf98
Release FLAC 1.4.2 2022-10-22 13:01:34 +02:00
Martijn van Beurden e7b584eaf9
Remove default msse2 on x86, tidy up asm optimizations
Remove default addition of msse2 on x86. After profiling it was
found this helps little on modern systems. See
https://github.com/xiph/flac/issues/486

The mention of Asm optimizations at the end of configuration was
wrong in many ways: it was 'yes' on platforms for which there are
no optimizations, and wasn't set to 'no' in case intrinsics headers
aren't available.
2022-10-20 07:39:18 +02:00
Ozkan Sezer 3426713ed9
fix --disable-stack-smash-protection mingw issues, add --disable-fortify-source
Co-authored-by: Martijn van Beurden <mvanb1@gmail.com>
2022-10-18 22:43:38 +02:00
Martijn van Beurden ad9618c54d
Prepend to CFLAGS instead of only setting when blank 2022-10-18 07:16:16 +02:00
Martijn van Beurden 75ef7958df
Remove all assembler 2022-10-15 15:44:03 +02:00
Martijn van Beurden 06769de241 Compile libFLAC with associative floating-point math 2022-10-12 20:37:18 +02:00
Martijn van Beurden 8fbeff238c
Remove xmms plugin 2022-10-06 16:41:40 +02:00
Martijn van Beurden 2440e19a73 Fix out-of-tree building with prebuilt docs 2022-09-26 16:47:17 +02:00
Martijn van Beurden e9551810c7 AC_CHECK_FILE -> simple test, doesn't fail when cross-compiling
This should fix https://github.com/xiph/flac/issues/463
2022-09-26 16:47:17 +02:00
Martijn van Beurden b6fbd6b3d9
Release FLAC 1.4.1 2022-09-22 12:02:59 +02:00
Martijn van Beurden b175971f80
Include api dir in distribution
Also, don't create empty Doxygen tag and api directory
2022-09-18 20:09:48 +02:00
Martijn van Beurden 71c3c55dba
Do not make empty man pages, use either pandoc or prebuild (#440)
* Do not make empty man pages, use either pandoc or prebuild

A check is added to configure whether flac.1 and metaflac.1
are already build when pandoc is not available. This is the
case in for example dist packages

* Fix typo in new automake conditional
2022-09-18 10:11:47 +02:00
Martijn van Beurden 1cb364d8cf
Make sure git doesn't try to get version from other repository
Fixes https://github.com/xiph/flac/issues/443
2022-09-16 13:59:21 +02:00
Martijn van Beurden 1a84604b2b
Remove __MSVCRT_VERSION__=0x0601 from configure.ac
This does not seem to be necessary anymore, is not used in CMake
and inhibits building against UWP and UCRT with MinGW
2022-09-15 16:07:29 +02:00
Martijn van Beurden 2ab4677750
Release FLAC 1.4.0 2022-09-09 14:08:42 +02:00
Martijn van Beurden dd8a264c56
Restructure README, API and HTML documentation
Tool documentation has moved to man directory, other dev docs to
README.md and CONTRIBUTING.md. User documentation is already on
the website and doesn't really belong in the source code. Also, fix CMake
so that it uses Doxyfile.in instead of using defaults.
2022-09-05 19:11:31 +02:00
Martijn van Beurden 010c60e1f9
Add configure option to not build programs 2022-08-13 15:20:42 +02:00
Martijn van Beurden 80d064e15d
Convert docbook to markdown
Currently, the man pages are converted from a docbook document, but
the conversion doesn't seem very reliable. Also, the man page is
more-or-less duplicated by the html documentation.

This commit moves all tool documentation to a markdown document which
is readable by itself and can be converted by pandoc to a man page
and can be used by Jekyll to populate the website.
2022-08-09 21:26:19 +02:00
Martijn van Beurden dd4a263406 Remove Makefile.lite build system 2022-05-27 21:59:32 +02:00
Fabrice Fontaine 6cd28e855c Fix uclibc build
Commit 4fbb6d4f2e reverted commit
44036c9a9b and so broke again the build on
uclibc

So put back the sys/auxv.h check as well as a getauxval check in a way
that doesn't break iOS

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2022-04-30 09:46:47 +02:00
RonenGvili 95e2c52980
Adding ARM64 support and optimized Neon implementation (#270)
Add NEON intrinsics routines for lpc_compute_residual_from_qlp_coefficients
and lpc_compute_residual_from_qlp_coefficients_wide
2022-04-29 14:46:07 +02:00
Martijn van Beurden d15bcf80a0 Add check for certain POWER8/9 intrinsic in altivec.h to configure 2022-04-25 20:13:36 +02:00
Martijn van Beurden f579b163fe
Add git commit tag, hash and date to vendor string when available
In some circles (Hydrogenaud.io for example) people share binaries
compiled from git, i.e. inbetween official releases. Files created
with these binaries cannot be discerned from others. To improve
troubleshooting, compiles from a git repository are marked with
the commit hash and date when configured with autotools or CMake
2022-04-20 21:47:07 +02:00
Martijn van Beurden 0f98b940f8 Update fuzzers
This changes the names of the two fuzzers so they align with
current oss-fuzz usage (to provide continuity in test data and
corpora) and adds a dictionary to the decoder fuzzer. It also
removes some unnecessary configuration, as it clashed with oss-fuzz
defaults
2022-04-20 11:10:08 +02:00
Martijn van Beurden 14eb65de34 Fix configuration of stack smash protection/fortify source on MinGW
Without this commit, building fails on MinGW because
-D_FORTIFY_SOURCE=2 needs runtime support which MinGW does not
provide. Building was possible with make LDFLAGS='-lssp'

This commit checks whether a symbol used by _D_FORTIFY_SOURCE=2 and
the stack smashing protector are available, and if so, enables these.
Resulting DLLs depend on the libssp DLL.
2022-04-15 09:36:15 +02:00
Martijn van Beurden 7dd7f94822 Fix building both static and shared libs on MinGW with autotools
When building both static and shared libs on MinGW with autotools,
the build broke down without any error message. This commit makes
such a build work
2022-04-15 09:36:15 +02:00
Martijn van Beurden ecede0bc72 Remove AC_C_VARARRAYS from configure.ac
With autoconf 2.70, the behaviour of AC_C_VARARRAYS has changed,
causing a lot of warnings and as a result a cluttered make output.

Doing some research as to where this comes from, I found an strange
piece of code that seems to rely on a misunderstanding as to VLA's
in C++. As I found, the C++ standard does not have VLA's. The
configure.ac code and some code in libFLAC++ seems to think it does.
This now causes strange behaviour.

This commit removes the code relying on this behaviour and removing
all VLA related autoconf macro's from configure.ac
2022-04-15 09:36:15 +02:00
Martijn van Beurden 13149acddd Remove more obsolete autoconf macro's
Autoconf 2.71 warns about obsolete macro's on running ./autogen.sh.

AC_PROG_CC_STDC is replaced by AC_PROG_CC as recommended by autoupdate

AC_HEADER_STDC has been removed. Autoupdate recommended the following:
> The preprocessor macro `STDC_HEADERS' is obsolete. Except in unusual
> embedded environments, you can safely include all ISO C90 headers
> unconditionally.
2022-04-15 09:36:15 +02:00
Martijn van Beurden d94a43d5c3 Update configure.ac and m4 files with autoupdate 2.60
Starting with autoconf 2.70, obsolescence warnings are output by
default. To keep the script as compatible as possible, I build
autoconf 2.60 and ran the autoupdate that came with it on
configure.ac and all m4 files.
2022-04-15 09:36:15 +02:00
Martijn van Beurden e75495be3d
Change version to 1.3.4 and add placeholders for release date
Signed-off-by: Ralph Giles <giles@thaumas.net>
2022-02-20 20:54:19 -08:00
Thomas BERNARD 4fbb6d4f2e fix build under Mac OS X with PowerPC CPU
revert 44036c9a9b because auxv.h is only
available under Linux and FreeBSD.
2020-05-03 17:14:33 +10:00
NotTsunami f706f28322 cmake/configure.ac: Enable -fstack-protector-strong by default
This commit contains the following changes:

- Drops -fstack-protector in favor of -fstack-protector-strong.
  Consequently, the ssp-buffer-size parameter has been removed as
  -fstack-protector-strong ignores array size.

- Add new global opt-out for stack smash protection. This is enabled
  by default for both autotools and CMake builds. Users can opt out
  of stack smash protection by passing -DWITH_STACK_PROTECTOR=OFF to
  CMake or --disable-stack-smash-protection when running ./configure.

- Renames HAVE_SSP_FLAG to HAVE_STACK_PROTECTOR_FLAG in
  CMakeLists.txt to be more readable.
2019-11-20 17:12:03 +11:00
Erik de Castro Lopo e0f7e0ece5 oss-fuzz: Add fuzzing targets
These fuzzing targets were originally from:

    https://github.com/guidovranken/flac-fuzzers.git

but having them in a separate repo was a huge pain in the neck when
working on fixing any problems found.
2019-11-18 06:29:10 +11:00
sezero d4a1b345dd configure.ac: allow several compiler flags for clang
The flac configury marked clang as 'not being gcc' and excluded
a lot of compiler switches, most importantly the visibility flags,
from being used with it. This was done possibly after a problem
reported at: https://github.com/erikd/libsndfile/issues/49 .

This patch does the following:

- m4/gcc_version.m4 (XIPH_GCC_VERSION): set GCC_MAJOR_VERSION and
  GCC_MINOR_VERSION to 0 for non-gcc. Previously, they were left
  unset.

- configure: the gcc version checks are, naturally, against non-
  zero values, so, allow many compiler switches to be used with
  clang without affecting real-gcc cases.

- configure: When setting CFLAGS="-O3 -funroll-loops", also set
  CXXFLAGS="-O3".  Prevents g++ warnings with _FORTIFY_SOURCE, i.e.:
 '_FORTIFY_SOURCE requires compiling with optimization (-O)'

Tested compilation using gcc-7.3.1 and clang-5.0.2 on x86_64-linux,
and gcc-4.4.7 and clang-3.4.2 on an i686-linux.  Also tested cross-
compiling for Mac OS X using clang-5.0.2.
2019-10-10 18:31:26 +11:00
sezero b917d456d2 make dllexport work with compilers other than MSVC
the issue is, flac and metaflac exes rely on flac_internal_???_utf8()
procedures from windows_unicode_filenames.c and there is no easy way
to exclude them from exports without breaking things. So export them
explicitly (they are exported anyway w/o this patch), but add a FIXME
note about the kludge in windows_unicode_filenames.c.
2019-10-10 18:30:39 +11:00