From 7a960de66f706366cf408b58b957a5e4d89eab18 Mon Sep 17 00:00:00 2001 From: Rodrigo Rebello Date: Tue, 1 Mar 2016 22:58:14 -0300 Subject: chocolate-doom: add patch to fix static linking This commit adds a backported upstream patch which modifies the configure script so that it uses pkg-config to detect libraries and their static linking dependencies. It also adds host-pkgconf as a dependency and removes the SDL static linking workaround from chocolate-doom.mk as it's no longer necessary. Fixes: http://autobuild.buildroot.net/results/d98/d981499ad82121d58fb7584b55d09c484cb6aa49/ http://autobuild.buildroot.net/results/e41/e419f29e14edd28cbf48278bef725b696ae8ef70/ http://autobuild.buildroot.net/results/d8f/d8fe9b5bdb262e939d4150804ea34777c91d3c04/ ... Signed-off-by: Rodrigo Rebello Reviewed-by: Arnout Vandecappelle (Essensium/Mind) Reviewed-by: Romain Naour Signed-off-by: Thomas Petazzoni --- ...004-configure-Switch-to-pkg-config-macros.patch | 217 +++++++++++++++++++++ package/chocolate-doom/chocolate-doom.mk | 8 +- 2 files changed, 218 insertions(+), 7 deletions(-) create mode 100644 package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch (limited to 'package/chocolate-doom') diff --git a/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch b/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch new file mode 100644 index 0000000000..2618396b56 --- /dev/null +++ b/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch @@ -0,0 +1,217 @@ +From 3163bf87d7b955d08dedd5ebaccb1b2a86ffdcb9 Mon Sep 17 00:00:00 2001 +From: Simon Howard +Date: Thu, 25 Feb 2016 22:55:04 -0500 +Subject: [PATCH] configure: Switch to pkg-config macros. + +All dependency libraries install pkg-config .pc files nowadays, which +makes the process of looking them up a lot simpler. Get rid of the SDL +workaround macro as it's not needed. + +[Backported from upstream commit 3163bf87d7b955d08dedd5ebaccb1b2a86ffdcb9. +Fixes static linking issues with SDL_mixer.] + +Signed-off-by: Rodrigo Rebello +--- + configure.ac | 117 ++++++++++++++-------------------------- + opl/examples/Makefile.am | 2 +- + src/Makefile.am | 7 ++- + textscreen/Makefile.am | 2 +- + textscreen/examples/Makefile.am | 2 +- + 5 files changed, 49 insertions(+), 81 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7b03485..48f83ef 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -33,89 +33,54 @@ then + CFLAGS="-O$OPT_LEVEL -g $WARNINGS $orig_CFLAGS" + fi + +-dnl Search for SDL ... +- +-AM_PATH_SDL(1.1.3) +- +-# Add the SDL compiler flags to the default compiler flag variables. +-# It is important to do this now, before checking for headers and +-# library functions. The reason being that on Windows, sdl-config +-# sets the -mno-cygwin compiler option in order to generate MinGW +-# executables. If we don't do this now, we might end up discovering +-# header files that are not actually available to us when we come +-# to compile. +- +-CFLAGS="$CFLAGS $SDL_CFLAGS" +-LDFLAGS="$LDFLAGS $SDL_LIBS" +- +-# On some platforms, SDL renames main() to SDL_main() using a #define, +-# so that its own main, stored in the SDLmain library, can be run first. +-# Unfortunately, this causes problems for autoconf, which builds +-# test programs to probe the system. All library/header/symbol checks +-# must be run in this block, that performs a workaround for the problem. +- +-AC_SDL_MAIN_WORKAROUND([ +- +- # Check for SDL_mixer. +- +- AC_CHECK_LIB(SDL_mixer,Mix_LoadMUS,[ +- SDLMIXER_LIBS="$SDLMIXER_LIBS -lSDL_mixer" +- ],[ +- echo "*** Could not find SDL_mixer. Please install it." +- exit -1 +- ]) +- +- # Check for SDL_net. +- +- AC_CHECK_LIB(SDL_net,SDLNet_UDP_Send,[ +- SDLNET_LIBS="$SDLNET_LIBS -lSDL_net" +- ],[ +- echo "*** Could not find SDL_net. Please install it." +- exit -1 +- ]) +- +- # Check for libsamplerate. +- AC_ARG_WITH([libsamplerate], +- AS_HELP_STRING([--without-libsamplerate], +- [Build without libsamplerate @<:@default=check@:>@]), +- [], +- [ +- [with_libsamplerate=check] +- ]) +- AS_IF([test "x$with_libsamplerate" != xno], [ +- AC_CHECK_LIB(samplerate, src_new, [], [ +- AS_IF([test "x$with_libsamplerate" != xcheck], [AC_MSG_FAILURE( +- [--with-libsamplerate was given, but test for libsamplerate failed]) +- ]) ++PKG_CHECK_MODULES([SDL], [sdl]) ++PKG_CHECK_MODULES([SDLMIXER], [SDL_mixer]) ++PKG_CHECK_MODULES([SDLNET], [SDL_net]) ++ ++# Check for libsamplerate. ++AC_ARG_WITH([libsamplerate], ++AS_HELP_STRING([--without-libsamplerate], ++ [Build without libsamplerate @<:@default=check@:>@]), ++[], ++[ ++ [with_libsamplerate=check] ++]) ++AS_IF([test "x$with_libsamplerate" != xno], [ ++ PKG_CHECK_MODULES([SAMPLERATE], [samplerate >= 0.1.8], [ ++ AC_DEFINE([HAVE_LIBSAMPLERATE], [1], [libsamplerate installed]) ++ ], [ ++ AS_IF([test "x$with_libsamplerate" != xcheck], [AC_MSG_FAILURE( ++ [--with-libsamplerate was given, but test for libsamplerate failed]) + ]) + ]) +- # Check for libpng. +- AC_ARG_WITH([libpng], +- AS_HELP_STRING([--without-libpng], +- [Build without libpng @<:@default=check@:>@]), +- [], +- [ +- [with_libpng=check] +- ]) +- AS_IF([test "x$with_libpng" != xno], [ +- AC_CHECK_LIB(z, zlibVersion) +- AC_CHECK_LIB(png, png_get_io_ptr, [], [ +- AS_IF([test "x$with_libpng" != xcheck], [AC_MSG_FAILURE( +- [--with-libpng was given, but test for libpng failed]) +- ]) ++]) ++# Check for libpng. ++AC_ARG_WITH([libpng], ++AS_HELP_STRING([--without-libpng], ++ [Build without libpng @<:@default=check@:>@]), ++[], ++[ ++ [with_libpng=check] ++]) ++AS_IF([test "x$with_libpng" != xno], [ ++ PKG_CHECK_MODULES([PNG], [libpng >= 1.6.10], [ ++ AC_DEFINE([HAVE_LIBPNG], [1], [libpng installed]) ++ ], [ ++ AS_IF([test "x$with_libpng" != xcheck], [AC_MSG_FAILURE( ++ [--with-libpng was given, but test for libpng failed]) + ]) + ]) +- AC_CHECK_LIB(m, log) ++]) ++AC_CHECK_LIB(m, log) + +- AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h]) +- AC_CHECK_FUNCS(mmap ioperm) ++AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h]) ++AC_CHECK_FUNCS(mmap ioperm) + +- # OpenBSD I/O i386 library for I/O port access. +- # (64 bit has the same thing with a different name!) ++# OpenBSD I/O i386 library for I/O port access. ++# (64 bit has the same thing with a different name!) + +- AC_CHECK_LIB(i386, i386_iopl) +- AC_CHECK_LIB(amd64, amd64_iopl) +-]) ++AC_CHECK_LIB(i386, i386_iopl) ++AC_CHECK_LIB(amd64, amd64_iopl) + + case $host in + *cygwin* | *mingw* ) +diff --git a/opl/examples/Makefile.am b/opl/examples/Makefile.am +index 9afcd51..54c37f8 100644 +--- a/opl/examples/Makefile.am ++++ b/opl/examples/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/opl ++AM_CFLAGS = -I$(top_srcdir)/opl @SDL_CFLAGS@ + + noinst_PROGRAMS=droplay + +diff --git a/src/Makefile.am b/src/Makefile.am +index 78ee3ba..9624e01 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -21,7 +21,8 @@ execgames_SCRIPTS = $(SETUP_BINARIES) + AM_CFLAGS = -I$(top_srcdir)/textscreen \ + -I$(top_srcdir)/opl \ + -I$(top_srcdir)/pcsound \ +- @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@ ++ @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@ \ ++ @SAMPLERATE_CFLAGS@ @PNG_CFLAGS@ + + # Common source files used by absolutely everything: + +@@ -150,7 +151,9 @@ EXTRA_LIBS = \ + @LDFLAGS@ \ + @SDL_LIBS@ \ + @SDLMIXER_LIBS@ \ +- @SDLNET_LIBS@ ++ @SDLNET_LIBS@ \ ++ @SAMPLERATE_LIBS@ \ ++ @PNG_LIBS@ + + if HAVE_WINDRES + @PROGRAM_PREFIX@doom_SOURCES=$(SOURCE_FILES_WITH_DEH) resource.rc +diff --git a/textscreen/Makefile.am b/textscreen/Makefile.am +index 628d4ff..427ed40 100644 +--- a/textscreen/Makefile.am ++++ b/textscreen/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/src ++AM_CFLAGS = -I$(top_srcdir)/src @SDL_CFLAGS@ + + CTAGS_ARGS=-I TXT_UNCAST_ARG+ + +diff --git a/textscreen/examples/Makefile.am b/textscreen/examples/Makefile.am +index 4632d92..b857748 100644 +--- a/textscreen/examples/Makefile.am ++++ b/textscreen/examples/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/textscreen ++AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/textscreen @SDL_CFLAGS@ + + noinst_PROGRAMS=guitest calculator + +-- +2.1.4 + diff --git a/package/chocolate-doom/chocolate-doom.mk b/package/chocolate-doom/chocolate-doom.mk index d64ad5168a..dad73528e3 100644 --- a/package/chocolate-doom/chocolate-doom.mk +++ b/package/chocolate-doom/chocolate-doom.mk @@ -8,7 +8,7 @@ CHOCOLATE_DOOM_VERSION = 2.2.1 CHOCOLATE_DOOM_SITE = http://www.chocolate-doom.org/downloads/$(CHOCOLATE_DOOM_VERSION) CHOCOLATE_DOOM_LICENSE = GPLv2+ CHOCOLATE_DOOM_LICENSE_FILES = COPYING -CHOCOLATE_DOOM_DEPENDENCIES = sdl sdl_mixer sdl_net +CHOCOLATE_DOOM_DEPENDENCIES = host-pkgconf sdl sdl_mixer sdl_net # We're patching configure.ac, so we need to autoreconf CHOCOLATE_DOOM_AUTORECONF = YES @@ -16,12 +16,6 @@ CHOCOLATE_DOOM_AUTORECONF = YES # Avoid installing desktop entries, icons, etc. CHOCOLATE_DOOM_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec -ifeq ($(BR2_STATIC_LIBS),y) -# SDL_mixer uses symbols from SDL, but ends up after it on the link -# cmdline. Fix it by forcing the SDL libs at the very end. -CHOCOLATE_DOOM_CONF_ENV = LIBS="`$(STAGING_DIR)/usr/bin/sdl-config --static-libs`" -endif - CHOCOLATE_DOOM_CONF_OPTS = \ --disable-sdltest \ --with-sdl-prefix=$(STAGING_DIR)/usr \ -- cgit v1.2.1