-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Tried to do this, gcc complained a lot about undefined references. After a bit of mucking with the code, i came up with a few patches. This might be a good conversation starter.
The build that i've got out of this does pass the testsuite. To enable LTO you just need to apply these (for non-W32 builds you probably only need one of the patches) and configure with CFLAGS="... -flto" LDFLAGS="... -flto". - -- O< ascii ribbon - stop html email! - www.asciiribbon.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (MingW32) iQEcBAEBAgAGBQJTZofZAAoJEOs4Jb6SI2CwVs4IAOKqObfHqiEIY5L2pi75l8Fh siFVMIv4Z/pO06lQxM8kO3zQ8F4aTETtM3JRfmb1kRwlMw42KuEedUTB6iwnSS3q XnvmPV6I7BFb8ISaMei/yIKktrNNFA7jF2Oc0j08rgO2fI1ieXFcednBPkYFn9Wy uwdngBHNQY8EKP1O2ahUfbQ5gFmZyMFlronigBbSpsz8Q0HjH0puG/nzsE1c9Iop Db6il2GXNIkuXpp+Jbxj153zvFYBqjvk48fKMvMtQeWSaOh7/2AphFvG5VmeXE0+ ZzPJOInTdowjJem9c8dT1feJpdYU5tHKXGu1DCuj7xNWncq/1FjcV3N3vrMjvwg= =a05t -----END PGP SIGNATURE-----
--- flac-1.3.0/src/libFLAC/include/private/ogg_mapping.h.orig 2013-05-26 09:30:33.932201700 +0000 +++ flac-1.3.0/src/libFLAC/include/private/ogg_mapping.h 2014-05-03 09:05:25.669393200 +0000 @@ -38,27 +38,28 @@ /** The length of the packet type field in bytes. */ #define FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH (1u) -extern const unsigned FLAC__OGG_MAPPING_PACKET_TYPE_LEN; /* = 8 bits */ - -extern const FLAC__byte FLAC__OGG_MAPPING_FIRST_HEADER_PACKET_TYPE; /* = 0x7f */ - /** The length of the 'FLAC' magic in bytes. */ #define FLAC__OGG_MAPPING_MAGIC_LENGTH (4u) -extern const FLAC__byte * const FLAC__OGG_MAPPING_MAGIC; /* = "FLAC" */ - -extern const unsigned FLAC__OGG_MAPPING_VERSION_MAJOR_LEN; /* = 8 bits */ -extern const unsigned FLAC__OGG_MAPPING_VERSION_MINOR_LEN; /* = 8 bits */ - /** The length of the Ogg FLAC mapping major version number in bytes. */ #define FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH (1u) /** The length of the Ogg FLAC mapping minor version number in bytes. */ #define FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH (1u) -extern const unsigned FLAC__OGG_MAPPING_NUM_HEADERS_LEN; /* = 16 bits */ - /** The length of the #-of-header-packets number bytes. */ #define FLAC__OGG_MAPPING_NUM_HEADERS_LENGTH (2u) + +#define FLAC__OGG_MAPPING_PACKET_TYPE_LEN ((unsigned) 8) /* bits */ + +#define FLAC__OGG_MAPPING_FIRST_HEADER_PACKET_TYPE ((FLAC__byte) 0x7f) + +#define FLAC__OGG_MAPPING_MAGIC ((const FLAC__byte * const)"FLAC") + +#define FLAC__OGG_MAPPING_VERSION_MAJOR_LEN ((unsigned) 8) /* bits */ +#define FLAC__OGG_MAPPING_VERSION_MINOR_LEN ((unsigned) 8) /* bits */ + +#define FLAC__OGG_MAPPING_NUM_HEADERS_LEN ((unsigned) 16) /* bits */ + #endif --- flac-1.3.0/src/libFLAC/ogg_mapping.c.orig 2013-05-26 09:30:33.932201700 +0000 +++ flac-1.3.0/src/libFLAC/ogg_mapping.c 2014-05-03 08:55:02.631277400 +0000 @@ -36,13 +36,3 @@ #include "private/ogg_mapping.h" -const unsigned FLAC__OGG_MAPPING_PACKET_TYPE_LEN = 8; /* bits */ - -const FLAC__byte FLAC__OGG_MAPPING_FIRST_HEADER_PACKET_TYPE = 0x7f; - -const FLAC__byte * const FLAC__OGG_MAPPING_MAGIC = (const FLAC__byte * const)"FLAC"; - -const unsigned FLAC__OGG_MAPPING_VERSION_MAJOR_LEN = 8; /* bits */ -const unsigned FLAC__OGG_MAPPING_VERSION_MINOR_LEN = 8; /* bits */ - -const unsigned FLAC__OGG_MAPPING_NUM_HEADERS_LEN = 16; /* bits */
--- flac-1.3.0/include/FLAC/export.h.orig 2013-05-26 09:30:33.924201900 +0000 +++ flac-1.3.0/include/FLAC/export.h 2014-05-03 09:11:50.799298400 +0000 @@ -59,11 +59,19 @@ #if defined(FLAC__NO_DLL) #define FLAC_API -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) || defined(__MINGW32__) #ifdef FLAC_API_EXPORTS -#define FLAC_API _declspec(dllexport) +#if defined(__GNUC__) +#define FLAC_API __attribute__((dllexport)) +#else +#define FLAC_API __declspec(dllexport) +#endif #else -#define FLAC_API _declspec(dllimport) +#if defined(__GNUC__) +#define FLAC_API +#else +#define FLAC_API __declspec(dllimport) +#endif #endif #elif defined(FLAC__USE_VISIBILITY_ATTR) --- flac-1.3.0/include/FLAC++/export.h.orig 2013-05-26 09:30:33.920202000 +0000 +++ flac-1.3.0/include/FLAC++/export.h 2014-05-03 09:12:38.663876500 +0000 @@ -59,11 +59,19 @@ #if defined(FLAC__NO_DLL) #define FLACPP_API -#elif defined(_MSC_VER) -#ifdef FLACPP_API_EXPORTS -#define FLACPP_API _declspec(dllexport) -#else -#define FLACPP_API _declspec(dllimport) +#elif defined(_MSC_VER) || defined(__MINGW32__) +#ifdef FLACPP_API_EXPORTS +#if defined(__GNUC__) +#define FLACPP_API __attribute__((dllexport)) +#else +#define FLACPP_API __declspec(dllexport) +#endif +#else +#if defined(__GNUC__) +#define FLACPP_API +#else +#define FLACPP_API __declspec(dllimport) +#endif #endif #elif defined(FLAC__USE_VISIBILITY_ATTR) --- flac-1.3.0/configure.ac.orig 2013-05-27 08:08:57.218577500 +0000 +++ flac-1.3.0/configure.ac 2014-05-03 09:13:42.351463800 +0000 @@ -386,6 +386,9 @@ CFLAGS="$CFLAGS -fvisibility=hidden" CXXFLAGS="$CXXFLAGS -fvisibility=hidden" fi + if test "$OBJ_FORMAT" = win32; then + CPPFLAGS="$CPPFLAGS -DFLAC_API_EXPORTS=1 -DFLACPP_API_EXPORTS=1" + fi if test "x$GCC_MAJOR_VERSION$GCC_MINOR_VERSION" = "x42" ; then XIPH_ADD_CFLAGS([-fgnu89-inline])
--- flac-1.3.0/src/flac/Makefile.am.orig 2013-05-26 09:30:33.924201900 +0000 +++ flac-1.3.0/src/flac/Makefile.am 2014-05-03 09:44:59.262301200 +0000 @@ -44,6 +44,10 @@ utils.h \ vorbiscomment.h +if OS_IS_WINDOWS +win_utf8_lib = $(top_builddir)/src/share/win_utf8_io/libwin_utf8_io.la +endif + flac_LDADD = \ $(top_builddir)/src/share/utf8/libutf8.la \ $(top_builddir)/src/share/grabbag/libgrabbag.la \ @@ -51,6 +55,7 @@ $(top_builddir)/src/share/replaygain_analysis/libreplaygain_analysis.la \ $(top_builddir)/src/share/replaygain_synthesis/libreplaygain_synthesis.la \ $(top_builddir)/src/libFLAC/libFLAC.la \ + $(win_utf8_lib) \ @LIBICONV@ \ -lm --- flac-1.3.0/src/metaflac/Makefile.am.orig 2013-05-26 09:30:33.936201600 +0000 +++ flac-1.3.0/src/metaflac/Makefile.am 2014-05-03 09:46:35.618536900 +0000 @@ -42,12 +42,17 @@ utils.h metaflac_LDFLAGS = $(AM_LDFLAGS) +if OS_IS_WINDOWS +win_utf8_lib = $(top_builddir)/src/share/win_utf8_io/libwin_utf8_io.la +endif + metaflac_LDADD = \ $(top_builddir)/src/share/grabbag/libgrabbag.la \ $(top_builddir)/src/share/replaygain_analysis/libreplaygain_analysis.la \ $(top_builddir)/src/share/getopt/libgetopt.la \ $(top_builddir)/src/share/utf8/libutf8.la \ $(top_builddir)/src/libFLAC/libFLAC.la \ + $(win_utf8_lib) \ @LIBICONV@ CLEANFILES = metaflac.exe --- flac-1.3.0/src/test_grabbag/cuesheet/Makefile.am.orig 2013-05-26 09:30:33.940201500 +0000 +++ flac-1.3.0/src/test_grabbag/cuesheet/Makefile.am 2014-05-03 09:48:29.464493500 +0000 @@ -24,9 +24,15 @@ noinst_PROGRAMS = test_cuesheet test_cuesheet_SOURCES = \ main.c + +if OS_IS_WINDOWS +win_utf8_lib = $(top_builddir)/src/share/win_utf8_io/libwin_utf8_io.la +endif + test_cuesheet_LDADD = \ $(top_builddir)/src/share/grabbag/libgrabbag.la \ $(top_builddir)/src/share/replaygain_analysis/libreplaygain_analysis.la \ - $(top_builddir)/src/libFLAC/libFLAC.la + $(top_builddir)/src/libFLAC/libFLAC.la \ + $(win_utf8_lib) CLEANFILES = test_cuesheet.exe --- flac-1.3.0/src/test_grabbag/picture/Makefile.am.orig 2013-05-26 09:30:33.940201500 +0000 +++ flac-1.3.0/src/test_grabbag/picture/Makefile.am 2014-05-03 09:49:12.014396600 +0000 @@ -25,8 +25,13 @@ test_picture_SOURCES = \ main.c +if OS_IS_WINDOWS +win_utf8_lib = $(top_builddir)/src/share/win_utf8_io/libwin_utf8_io.la +endif + test_picture_LDADD = \ $(top_builddir)/src/share/grabbag/libgrabbag.la \ - $(top_builddir)/src/libFLAC/libFLAC.la + $(top_builddir)/src/libFLAC/libFLAC.la \ + $(win_utf8_lib) CLEANFILES = test_picture.exe --- flac-1.3.0/src/test_seeking/Makefile.am.orig 2013-05-26 09:30:33.944201400 +0000 +++ flac-1.3.0/src/test_seeking/Makefile.am 2014-05-03 09:50:20.531097100 +0000 @@ -25,8 +25,14 @@ AM_CPPFLAGS = -I$(top_builddir) -I$(srcdir)/include -I$(top_srcdir)/include noinst_PROGRAMS = test_seeking + +if OS_IS_WINDOWS +win_utf8_lib = $(top_builddir)/src/share/win_utf8_io/libwin_utf8_io.la +endif + test_seeking_LDADD = \ - $(top_builddir)/src/libFLAC/libFLAC.la + $(top_builddir)/src/libFLAC/libFLAC.la \ + $(win_utf8_lib) test_seeking_SOURCES = \ main.c --- flac-1.3.0/src/test_libFLAC++/Makefile.am.orig 2013-05-26 09:30:33.940201500 +0000 +++ flac-1.3.0/src/test_libFLAC++/Makefile.am 2014-05-03 09:51:08.574197800 +0000 @@ -22,12 +22,18 @@ AM_CPPFLAGS = -I$(top_builddir) -I$(srcdir)/include -I$(top_srcdir)/include noinst_PROGRAMS = test_libFLAC++ + +if OS_IS_WINDOWS +win_utf8_lib = $(top_builddir)/src/share/win_utf8_io/libwin_utf8_io.la +endif + test_libFLAC___LDADD = \ $(top_builddir)/src/share/grabbag/libgrabbag.la \ $(top_builddir)/src/share/replaygain_analysis/libreplaygain_analysis.la \ $(top_builddir)/src/test_libs_common/libtest_libs_common.la \ $(top_builddir)/src/libFLAC++/libFLAC++.la \ $(top_builddir)/src/libFLAC/libFLAC.la \ + $(win_utf8_lib) \ @OGG_LIBS@ \ -lm
_______________________________________________ flac-dev mailing list flac-dev@xiph.org http://lists.xiph.org/mailman/listinfo/flac-dev