[OE-core] [PATCH] libsdl: Convert to use pkg-config in internal m4 macros
Martin Jansa
martin.jansa at gmail.com
Wed Jun 25 09:16:26 UTC 2014
On Tue, Jun 24, 2014 at 11:53:47PM +0100, Richard Purdie wrote:
> Rather than code which doesn't even work properly when cross compiling,
> lets just use pkg-config instead. Its a little simpler.
Acked-by: Martin Jansa <Martin.Jansa at gmail.com>
BTW: libsdl-ttf still needs patch to use freetype2 pkg-config instead of
freetype-config, I'll fix that.
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch
> new file mode 100644
> index 0000000..913baa9
> --- /dev/null
> +++ b/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch
> @@ -0,0 +1,187 @@
> +Rather than code which doesn't even work properly when cross compiling,
> +lets just use pkg-config instead. Its a little simpler.
> +
> +RP 2014/6/20
> +
> +Upstream-Status: Pending
> +
> +Index: SDL-1.2.15/sdl.m4
> +===================================================================
> +--- SDL-1.2.15.orig/sdl.m4
> ++++ SDL-1.2.15/sdl.m4
> +@@ -12,174 +12,8 @@ dnl Test for SDL, and define SDL_CFLAGS
> + dnl
> + AC_DEFUN([AM_PATH_SDL],
> + [dnl
> +-dnl Get the cflags and libraries from the sdl-config script
> +-dnl
> +-AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)],
> +- sdl_prefix="$withval", sdl_prefix="")
> +-AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
> +- sdl_exec_prefix="$withval", sdl_exec_prefix="")
> +-AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program],
> +- , enable_sdltest=yes)
> +-
> +- if test x$sdl_exec_prefix != x ; then
> +- sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix"
> +- if test x${SDL_CONFIG+set} != xset ; then
> +- SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
> +- fi
> +- fi
> +- if test x$sdl_prefix != x ; then
> +- sdl_config_args="$sdl_config_args --prefix=$sdl_prefix"
> +- if test x${SDL_CONFIG+set} != xset ; then
> +- SDL_CONFIG=$sdl_prefix/bin/sdl-config
> +- fi
> +- fi
> +-
> +- as_save_PATH="$PATH"
> +- if test "x$prefix" != xNONE; then
> +- PATH="$prefix/bin:$prefix/usr/bin:$PATH"
> +- fi
> +- AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
> +- PATH="$as_save_PATH"
> + min_sdl_version=ifelse([$1], ,0.11.0,$1)
> +- AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
> +- no_sdl=""
> +- if test "$SDL_CONFIG" = "no" ; then
> +- no_sdl=yes
> +- else
> +- SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags`
> +- SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs`
> +-
> +- sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \
> +- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
> +- sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \
> +- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
> +- sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
> +- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
> +- if test "x$enable_sdltest" = "xyes" ; then
> +- ac_save_CFLAGS="$CFLAGS"
> +- ac_save_CXXFLAGS="$CXXFLAGS"
> +- ac_save_LIBS="$LIBS"
> +- CFLAGS="$CFLAGS $SDL_CFLAGS"
> +- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
> +- LIBS="$LIBS $SDL_LIBS"
> +-dnl
> +-dnl Now check if the installed SDL is sufficiently new. (Also sanity
> +-dnl checks the results of sdl-config to some extent
> +-dnl
> +- rm -f conf.sdltest
> +- AC_TRY_RUN([
> +-#include <stdio.h>
> +-#include <stdlib.h>
> +-#include <string.h>
> +-#include "SDL.h"
> +-
> +-char*
> +-my_strdup (char *str)
> +-{
> +- char *new_str;
> +-
> +- if (str)
> +- {
> +- new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
> +- strcpy (new_str, str);
> +- }
> +- else
> +- new_str = NULL;
> +-
> +- return new_str;
> +-}
> +-
> +-int main (int argc, char *argv[])
> +-{
> +- int major, minor, micro;
> +- char *tmp_version;
> +-
> +- /* This hangs on some systems (?)
> +- system ("touch conf.sdltest");
> +- */
> +- { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
> +-
> +- /* HP/UX 9 (%@#!) writes to sscanf strings */
> +- tmp_version = my_strdup("$min_sdl_version");
> +- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
> +- printf("%s, bad version string\n", "$min_sdl_version");
> +- exit(1);
> +- }
> +-
> +- if (($sdl_major_version > major) ||
> +- (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
> +- (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
> +- {
> +- return 0;
> +- }
> +- else
> +- {
> +- printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
> +- printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
> +- printf("*** best to upgrade to the required version.\n");
> +- printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
> +- printf("*** to point to the correct copy of sdl-config, and remove the file\n");
> +- printf("*** config.cache before re-running configure\n");
> +- return 1;
> +- }
> +-}
> +-
> +-],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
> +- CFLAGS="$ac_save_CFLAGS"
> +- CXXFLAGS="$ac_save_CXXFLAGS"
> +- LIBS="$ac_save_LIBS"
> +- fi
> +- fi
> +- if test "x$no_sdl" = x ; then
> +- AC_MSG_RESULT(yes)
> +- ifelse([$2], , :, [$2])
> +- else
> +- AC_MSG_RESULT(no)
> +- if test "$SDL_CONFIG" = "no" ; then
> +- echo "*** The sdl-config script installed by SDL could not be found"
> +- echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
> +- echo "*** your path, or set the SDL_CONFIG environment variable to the"
> +- echo "*** full path to sdl-config."
> +- else
> +- if test -f conf.sdltest ; then
> +- :
> +- else
> +- echo "*** Could not run SDL test program, checking why..."
> +- CFLAGS="$CFLAGS $SDL_CFLAGS"
> +- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
> +- LIBS="$LIBS $SDL_LIBS"
> +- AC_TRY_LINK([
> +-#include <stdio.h>
> +-#include "SDL.h"
> +-
> +-int main(int argc, char *argv[])
> +-{ return 0; }
> +-#undef main
> +-#define main K_and_R_C_main
> +-], [ return 0; ],
> +- [ echo "*** The test program compiled, but did not run. This usually means"
> +- echo "*** that the run-time linker is not finding SDL or finding the wrong"
> +- echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
> +- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
> +- echo "*** to the installed location Also, make sure you have run ldconfig if that"
> +- echo "*** is required on your system"
> +- echo "***"
> +- echo "*** If you have an old version installed, it is best to remove it, although"
> +- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
> +- [ echo "*** The test program failed to compile or link. See the file config.log for the"
> +- echo "*** exact error that occured. This usually means SDL was incorrectly installed"
> +- echo "*** or that you have moved SDL since it was installed. In the latter case, you"
> +- echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
> +- CFLAGS="$ac_save_CFLAGS"
> +- CXXFLAGS="$ac_save_CXXFLAGS"
> +- LIBS="$ac_save_LIBS"
> +- fi
> +- fi
> +- SDL_CFLAGS=""
> +- SDL_LIBS=""
> +- ifelse([$3], , :, [$3])
> +- fi
> ++ PKG_CHECK_MODULES([SDL], [sdl >= $min_sdl_version])
> + AC_SUBST(SDL_CFLAGS)
> + AC_SUBST(SDL_LIBS)
> +- rm -f conf.sdltest
> + ])
> diff --git a/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb b/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb
> index f81d862..e544b60 100644
> --- a/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb
> +++ b/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb
> @@ -23,6 +23,7 @@ PR = "r3"
> SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
> file://configure_tweak.patch \
> file://libsdl-1.2.15-xdata32.patch \
> + file://pkgconfig.patch \
> "
>
> S = "${WORKDIR}/SDL-${PV}"
>
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
--
Martin 'JaMa' Jansa jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20140625/737baa29/attachment-0002.sig>
More information about the Openembedded-core
mailing list