| contrib: Update libmodplug to 0.8.9.0
(cherry picked from commit 4345b4b0d141ba3c9fc10ac8449e4f3af6487397)
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
| 6 年前 |
| contrib: modplug: Fix endianness check
The autoconf endianness check does not compile with a C++ compiler
due to bogus casts, therefore it is needed to use the C compiler to
check for the host endianness.
This fixes the libmodplug contrib build for Android.
(cherry picked from commit 903c250978153ef8d95a6005def39ab0ad4078f9)
Signed-off-by: David Fuhrmann <dfuhrmann@videolan.org>
| 5 年前 |
| contrib: modplug: Link against libc++ on macOS
libstdc++ is not available anymore in modern sdks.
(cherry picked from commit a7dd702b66d6f3c211988e26a8534aba01c581de)
Signed-off-by: David Fuhrmann <dfuhrmann@videolan.org>
| 5 年前 |
| contribs: modplug: Do not force old minimum macosx version
VLC already sets the minimum version, forcing an older version
makes compilation fail with our flags.
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
(cherry picked from commit b20af5ad95dacb6a857fc1c93345977e9a34ef90)
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
| 6 年前 |
| Fix libmod_plugin undefined __imp_ symbols building for win32
When building current HEAD of master for x86_64-w64-mingw32 against current
contribs, compilation fails at libmod_plugin due to undefined symbols of
the form __imp_ModPlug_*. This patch modifies libmodplug in contribs by
adding -DMODPLUG_STATIC to CFlags in the pkg-config file. A bug is also
fixed in the main build system to make sure the CFLAGS are picked up from
this pkg-config file.
This problem occurs because of the following code in
contrib/x86_64-w64-mingw32/include/libmodplug/modplug.h. This code is
present in libmodplug obtained from running "make fetch & make" in the
contribs directory, but not present in the prebuilt contribs obtained from
running "make prebuilt".
#if defined(_WIN32) || defined(__CYGWIN__)
# if defined(MODPLUG_BUILD) && defined(DLL_EXPORT)
# define MODPLUG_EXPORT __declspec(dllexport)
# elif defined(MODPLUG_BUILD) || defined(MODPLUG_STATIC)
# define MODPLUG_EXPORT
# else
# define MODPLUG_EXPORT __declspec(dllimport)
# endif
When building for Windows, if MODPLUG_STATIC is not defined, MODPLUG_EXPORT
is defined as "__declspec(dllimport)". On Windows, dynamic symbols are
prefixed with "__imp_", so this causes GCC to adjust the symbol references
to the libmodplug functions accordingly.
This patch therefore adds a patch to contribs for libmodplug's pkg-config
file. It adds -DMODPLUG_STATIC to CFlags, so that when libmod_plugin is
building it will have the correct symbol names.
However, there is also a bug in the build system that needs to be fixed for
this to work. The configure script sets a CXXFLAGS_mod containing the
output of pkg-config for libmodplug, but not CFLAGS_mod. Additionally, the
Makefile.ac for libmod_plugin sets CXXFLAGS when in fact the relevant files
(mod.c) are plain C. Autotools therefore ignores these CXXFLAGS when
generating a makefile.
The solution is to add a macro to configure.ac to set CFLAGS_mod. This then
needs to be used in modules/demux/Makefile.am to populate
libmod_plugin_la_CFLAGS instead of libmod_plugin_la_CXXFLAGS (which gets
ignored).
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
| 11 年前 |
| contrib: modplug: Force building with a specific older C++ version
This project uses the 'register' storage class specifier for a lot
of variables, and C++17 disallows that storage class spcifier.
This fixes building with newer compilers that default to C++17
if nothing is specified (which is the default since GCC 11
and Clang 16).
When building with Clang 16 in C++17 mode, it fails with errors
like these:
fastmix.cpp:678:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
SNDMIX_BEGINSAMPLELOOP8
^
fastmix.cpp:291:2: note: expanded from macro 'SNDMIX_BEGINSAMPLELOOP8'
register MODCHANNEL * const pChn = pChannel;\
^
(cherry picked from commit 72e7335d664905331768728e4afff8134d2d3ac8)
Signed-off-by: Martin Storsjö <martin@martin.st>
| 3 年前 |