-
Konstantinos Tsanaktsidis authored
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>
298616dd