On Thu, Jul 26, 2018 at 07:39:20PM +0200, Michael Grzeschik wrote:
> Signed-off-by: Michael Grzeschik <m.grzesc...@pengutronix.de>
> ---
> v1 -> v2: - added select to MESALIB_GL* on SDL2_OPENGL*
>           - padded prompt entry with extra spaces
> v2 -> v3: - added patch to add egl cflags on configure.in and enabled 
> autogen.sh
> v3 -> v4: - improved egl check with PKG_CHECK_MODULES
>           - removed extract stage and added custom autogen.sh
> v4 -> v5: - reworked the configuration for the package
>           - added a patch to find a valid dri device in kms backend
> 
>  ...001-sdl-2.0.8-add-egl-cflags-to-test.patch |  55 +++++++
>  ...-find-available-card-if-called-witho.patch | 129 +++++++++++++++
>  patches/SDL2-2.0.8/autogen.sh                 |   3 +
>  patches/SDL2-2.0.8/series                     |   5 +
>  rules/sdl2.in                                 | 153 ++++++++++++++++++
>  rules/sdl2.make                               | 153 ++++++++++++++++++
>  6 files changed, 498 insertions(+)
>  create mode 100644 
> patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-test.patch
>  create mode 100644 
> patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch
>  create mode 100755 patches/SDL2-2.0.8/autogen.sh
>  create mode 100644 patches/SDL2-2.0.8/series
>  create mode 100644 rules/sdl2.in
>  create mode 100644 rules/sdl2.make
> 
> diff --git a/patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-test.patch 
> b/patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-test.patch
> new file mode 100644
> index 000000000..c86d48e5a
> --- /dev/null
> +++ b/patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-test.patch
> @@ -0,0 +1,55 @@
> +From: Sergey Zhuravlevich <zhu...@gmail.com>
> +Date: Mon, 16 Jul 2018 12:03:42 +0200
> +Subject: [PATCH] sdl-2.0.8: add egl-cflags to test
> +
> +- also call aclocal to expand PKG_CHECK_MODULES
> +
> +Signed-off-by: Sergey Zhuravlevich <zhu...@gmail.com>
> +Signed-off-by: Michael Grzeschik <m.grzesc...@pengutronix.de>
> +---
> + autogen.sh   |  2 +-
> + configure.in | 11 +++++++++++
> + 2 files changed, 12 insertions(+), 1 deletion(-)
> +
> +diff --git a/autogen.sh b/autogen.sh
> +index 9edfb8a7d913..2f1e2ef3d419 100755
> +--- a/autogen.sh
> ++++ b/autogen.sh
> +@@ -8,7 +8,7 @@ test -z "$srcdir" && srcdir=.
> + cd "$srcdir"
> + 
> + # Regenerate configuration files
> +-cat acinclude/* >aclocal.m4
> ++aclocal
> + found=false
> + for autoconf in autoconf autoconf259 autoconf-2.59
> + do if which $autoconf >/dev/null 2>&1; then $autoconf && found=true; break; 
> fi
> +diff --git a/configure.in b/configure.in
> +index 1c7e79338a88..06e37a1b7f98 100644
> +--- a/configure.in
> ++++ b/configure.in
> +@@ -2335,6 +2335,14 @@ dnl Find OpenGL ES
> + CheckOpenGLESX11()
> + {
> +     if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
> ++        PKG_CHECK_MODULES(EGL, [egl], [have_egl="yes"], [have_egl="no"])
> ++
> ++        save_CFLAGS="$CFLAGS"
> ++        if test x$have_egl = xyes; then
> ++          CFLAGS="$save_CFLAGS $EGL_CFLAGS"
> ++          EXTRA_CFLAGS="$EXTRA_CFLAGS $EGL_CFLAGS"
> ++        fi
> ++
> +         AC_MSG_CHECKING(for EGL support)
> +         video_opengl_egl=no
> +         AC_TRY_COMPILE([
> +@@ -2347,6 +2355,9 @@ CheckOpenGLESX11()
> +         video_opengl_egl=yes
> +         ])
> +         AC_MSG_RESULT($video_opengl_egl)
> ++
> ++        CFLAGS="$save_CFLAGS"
> ++
> +         if test x$video_opengl_egl = xyes; then
> +             AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
> +         fi
> diff --git 
> a/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch
>  
> b/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch
> new file mode 100644
> index 000000000..e889f87ae
> --- /dev/null
> +++ 
> b/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch
> @@ -0,0 +1,129 @@
> +From 212c7c68ec228a1058f39497d18c65e9312d00df Mon Sep 17 00:00:00 2001
> +From: Michael Grzeschik <m.grzesc...@pengutronix.de>
> +Date: Thu, 12 Jul 2018 13:48:54 +0200
> +Subject: [PATCH] sdl-2.0.8: KMSDRM: find available card if called without
> + index
> +
> +Signed-off-by: Michael Grzeschik <m.grzesc...@pengutronix.de>
> +---
> + src/video/kmsdrm/SDL_kmsdrmvideo.c | 84 ++++++++++++++++++++++++++++--
> + 1 file changed, 80 insertions(+), 4 deletions(-)
> +
> +diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c 
> b/src/video/kmsdrm/SDL_kmsdrmvideo.c
> +index 7855eeddb..f63c91b0a 100644
> +--- a/src/video/kmsdrm/SDL_kmsdrmvideo.c
> ++++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c
> +@@ -41,15 +41,22 @@
> + #include "SDL_kmsdrmopengles.h"
> + #include "SDL_kmsdrmmouse.h"
> + #include "SDL_kmsdrmdyn.h"
> ++#include <sys/stat.h>
> ++#include <dirent.h>
> ++#include <errno.h>
> + 
> +-#define KMSDRM_DRI_CARD_0 "/dev/dri/card0"
> ++#define KMSDRM_DRI_PATH "/dev/dri/"
> + 
> + static int
> +-KMSDRM_Available(void)
> ++check_modestting(int devindex)
> + {
> +     int available = 0;
> ++    char device[512];
> ++    int drm_fd;
> ++
> ++    sprintf(device, "%scard%d", KMSDRM_DRI_PATH, devindex);
> + 
> +-    int drm_fd = open(KMSDRM_DRI_CARD_0, O_RDWR | O_CLOEXEC);
> ++    drm_fd = open(device, O_RDWR | O_CLOEXEC);
> +     if (drm_fd >= 0) {
> +         if (SDL_KMSDRM_LoadSymbols()) {
> +             drmModeRes *resources = KMSDRM_drmModeGetResources(drm_fd);
> +@@ -65,6 +72,72 @@ KMSDRM_Available(void)
> +     return available;
> + }
> + 
> ++static int get_dricount(void)
> ++{
> ++    int devcount = 0;
> ++    struct dirent *res;
> ++    struct stat sb;
> ++    DIR *folder;
> ++
> ++    if (!(stat(KMSDRM_DRI_PATH, &sb) == 0
> ++                && S_ISDIR(sb.st_mode))) {
> ++        printf("The path %s cannot be opened or is not available\n",
> ++               KMSDRM_DRI_PATH);
> ++        return 0;
> ++    }
> ++
> ++    if (access(KMSDRM_DRI_PATH, F_OK) == -1) {
> ++        printf("The path %s cannot be opened\n",
> ++               KMSDRM_DRI_PATH);
> ++        return 0;
> ++    }
> ++
> ++    folder = opendir(KMSDRM_DRI_PATH);
> ++    if (!folder)
> ++        return 0;
> ++
> ++    while ((res = readdir(folder))) {
> ++        if (res->d_type == DT_CHR)
> ++            devcount++;
> ++    }
> ++
> ++    closedir(folder);
> ++
> ++    return devcount;
> ++}
> ++
> ++static int
> ++get_driindex(void)
> ++{
> ++    int i = 0;
> ++    int available = 0;
> ++    int devcount = get_dricount();
> ++
> ++    for (i = 0; i < devcount; i++) {
> ++        if (check_modestting(i)) {
> ++            available = 1;
> ++            break;
> ++        }
> ++    }
> ++
> ++    if (available)
> ++        return i;
> ++
> ++    return -ENOENT;
> ++}
> ++
> ++static int
> ++KMSDRM_Available(void)
> ++{
> ++    int ret = -ENOENT;
> ++
> ++    ret = get_driindex();
> ++    if (ret >= 0)
> ++        return 1;
> ++
> ++    return ret;
> ++}
> ++
> + static void
> + KMSDRM_Destroy(SDL_VideoDevice * device)
> + {
> +@@ -83,7 +156,10 @@ KMSDRM_Create(int devindex)
> +     SDL_VideoDevice *device;
> +     SDL_VideoData *vdata;
> + 
> +-    if (devindex < 0 || devindex > 99) {
> ++    if (!devindex || devindex > 99)
> ++        devindex = get_driindex();
> ++
> ++    if (devindex < 0) {
> +         SDL_SetError("devindex (%d) must be between 0 and 99.\n", devindex);
> +         return NULL;
> +     }
> +-- 
> +2.18.0
> +
> diff --git a/patches/SDL2-2.0.8/autogen.sh b/patches/SDL2-2.0.8/autogen.sh
> new file mode 100755
> index 000000000..a430a4eb7
> --- /dev/null
> +++ b/patches/SDL2-2.0.8/autogen.sh
> @@ -0,0 +1,3 @@
> +#!/bin/sh
> +
> +./autogen.sh
> diff --git a/patches/SDL2-2.0.8/series b/patches/SDL2-2.0.8/series
> new file mode 100644
> index 000000000..e4e931f38
> --- /dev/null
> +++ b/patches/SDL2-2.0.8/series
> @@ -0,0 +1,5 @@
> +# generated by git-ptx-patches
> +#tag:base --start-number 1
> +0001-sdl-2.0.8-add-egl-cflags-to-test.patch
> +0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch
> +# b803bb470cfcfd4d04f208304b9fd212  - git-ptx-patches magic
> diff --git a/rules/sdl2.in b/rules/sdl2.in
> new file mode 100644
> index 000000000..0f20181a2
> --- /dev/null
> +++ b/rules/sdl2.in
> @@ -0,0 +1,153 @@
> +## SECTION=multimedia_sdl
> +
> +menuconfig SDL2
> +     tristate
> +     prompt "SDL2                          "
> +     select LIBC_M
> +     select LIBC_DL
> +     select LIBC_PTHREAD
> +     select GCCLIBS_GCC_S
> +     select LIBUNWIND
> +     select CROSS_NASM               if SDL2_VIDEO
> +     select ALSA_LIB                 if SDL2_ALSA
> +     sleect XORG_PROTO               if SDL2_XORG
        ^^^^^^
Whoops! this should be a select. I must have typed something
wrong while reviewing my mails. Hope you fix it while
applying.

Thanks,
Michael

> +     select XORG_LIB_X11             if SDL2_XORG
> +     select XORG_LIB_XXF86VM         if SDL2_XORG
> +     select XORG_LIB_XRANDR          if SDL2_XORG
> +     select XORG_LIB_XCURSOR         if SDL2_XORG
> +     select XORG_LIB_XI              if SDL2_XORG
> +     select TSLIB                    if SDL2_TSLIB
> +     select DBUS                     if SDL2_DBUS
> +     select LIBDRM                   if SDL2_WAYLAND
> +     select MESALIB_GLX              if SDL2_OPENGL
> +     select MESALIB_GLES1            if SDL2_OPENGLES1
> +     select MESALIB_GLES2            if SDL2_OPENGLES2
> +     select MESALIB_EGL_DRM          if SDL2_KMS
> +     select MESALIB                  if SDL2_WAYLAND || SDL2_OPENGL
> +     select MESALIB_GBM              if SDL2_WAYLAND
> +     select MESALIB_EGL_WAYLAND      if SDL2_WAYLAND
> +     select LIBXKBCOMMON             if SDL2_WAYLAND
> +     select UDEV                     if SDL2_UDEV
> +     select UDEV_LIBUDEV             if SDL2_UDEV
> +     select PULSEAUDIO               if SDL2_PULSEAUDIO
> +     select WAYLAND_PROTOCOLS        if SDL2_WAYLAND
> +     help
> +       Simple DirectMedia Layer is a cross-platform multimedia
> +       library designed to provide low level access to audio,
> +       keyboard, mouse, joystick, 3D hardware via OpenGL, and
> +       2D video framebuffer.
> +
> +if SDL2
> +
> +menuconfig SDL2_AUDIO
> +     bool
> +     prompt "SDL2 Audio Support             "
> +     default y
> +     help
> +       Turn on to enable audio support in libsdl2
> +
> +if SDL2_AUDIO
> +
> +config SDL2_OSS
> +     bool
> +     prompt "SDL2 OSS Support"
> +     help
> +       Open Sound System (OSS) is the first attempt in
> +       unifying the digital audio architecture for UNIX.
> +       OSS is a set of device drivers that provide a
> +       uniform API across all the major UNIX architectures.
> +
> +config SDL2_ALSA
> +     bool
> +     prompt "SDL2 ALSA Support"
> +     default y
> +     help
> +       The Advanced Linux Sound Architecture (ALSA)
> +       provides audio and MIDI functionality to the
> +       Linux operating system.
> +
> +config SDL2_PULSEAUDIO
> +     bool
> +     prompt "SDL2 Pulseaudio Support"
> +     default y
> +     help
> +       PulseAudio is a sound system for POSIX OSes, meaning that it
> +       is a proxy for your sound applications.
> +
> +endif
> +
> +menuconfig SDL2_VIDEO
> +     bool
> +     prompt "SDL2 Video Support             "
> +     default y
> +     help
> +       Turn on to enable video support in libsdl2
> +
> +if SDL2_VIDEO
> +
> +config SDL2_KMS
> +     bool
> +     prompt "KMS Support"
> +     help
> +       kms video support
> +
> +config SDL2_XORG
> +     bool
> +     prompt "Xorg Support"
> +     help
> +       X.Org provides an open source implementation of the
> +       X Window System.
> +
> +config SDL2_WAYLAND
> +     bool
> +     prompt "Wayland Support"
> +     help
> +       Wayland Window System.
> +
> +config SDL2_OPENGL
> +     bool
> +     prompt "OpenGL Support"
> +     depends on SDL2_XORG
> +     help
> +       OpenGL is a multi-platform software interface to
> +       graphics hardware, supporting rendering and imaging
> +       operations.
> +
> +config SDL2_OPENGLES
> +     bool
> +     default SDL2_OPENGLES1 || SDL2_OPENGLES2
> +
> +config SDL2_OPENGLES1
> +     bool
> +     prompt "OpenGLES1 Support"
> +     help
> +       OpenGL ES1 graphics support
> +
> +config SDL2_OPENGLES2
> +     bool
> +     prompt "OpenGLES2 Support"
> +     help
> +       OpenGL ES2 graphics support
> +
> +endif
> +
> +config SDL2_TSLIB
> +     bool
> +     prompt "tslib Support"
> +     help
> +       Turn on support for the touchscreen library 'tslib'
> +
> +config SDL2_UDEV
> +     bool
> +     prompt "udev Support"
> +     help
> +       Turn on support for the udev library
> +
> +config SDL2_DBUS
> +     bool
> +     prompt "dbus Support"
> +
> +     help
> +       Turn on support for the dbus library
> +
> +endif
> diff --git a/rules/sdl2.make b/rules/sdl2.make
> new file mode 100644
> index 000000000..43c8e5e0b
> --- /dev/null
> +++ b/rules/sdl2.make
> @@ -0,0 +1,153 @@
> +# -*-makefile-*-
> +#
> +# Copyright (C) 2018 by Sergey Zhuravlevich
> +#
> +# See CREDITS for details about who has contributed to this project.
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +#
> +# We provide this package
> +#
> +PACKAGES-$(PTXCONF_SDL2) += sdl2
> +
> +#
> +# Paths and names
> +#
> +SDL2_VERSION := 2.0.8
> +SDL2_MD5             := 3800d705cef742c6a634f202c37f263f
> +SDL2         := SDL2-$(SDL2_VERSION)
> +SDL2_SUFFIX  := tar.gz
> +SDL2_URL             := https://www.libsdl.org/release/$(SDL2).$(SDL2_SUFFIX)
> +SDL2_SOURCE  := $(SRCDIR)/$(SDL2).$(SDL2_SUFFIX)
> +SDL2_DIR             := $(BUILDDIR)/$(SDL2)
> +SDL2_LICENSE := zlib
> +
> +# 
> ----------------------------------------------------------------------------
> +# Prepare
> +# 
> ----------------------------------------------------------------------------
> +
> +#
> +# autoconf
> +#
> +SDL2_CONF_TOOL       := autoconf
> +SDL2_CONF_OPT        := \
> +     $(CROSS_AUTOCONF_USR) \
> +     --enable-shared \
> +     --disable-static \
> +     --enable-libtool-lock \
> +     --enable-assertions=auto \
> +     --enable-dependency-tracking \
> +     --enable-libc \
> +     --enable-gcc-atomics \
> +     --enable-atomic \
> +     --$(call ptx/endis,PTXCONF_SDL2_AUDIO)-audio \
> +     --$(call ptx/endis,PTXCONF_SDL2_VIDEO)-video \
> +     --enable-render \
> +     --enable-events \
> +     --enable-joystick \
> +     --enable-haptic \
> +     --disable-power \
> +     --disable-filesystem \
> +     --enable-threads \
> +     --enable-timers \
> +     --enable-file \
> +     --enable-loadso \
> +     --enable-cpuinfo \
> +     --enable-assembly \
> +     --disable-ssemath \
> +     --disable-mmx \
> +     --disable-3dnow \
> +     --disable-sse \
> +     --disable-sse2 \
> +     --disable-sse3 \
> +     --disable-jack \
> +     --disable-jack-shared \
> +     --disable-sndio \
> +     --disable-sndio-shared \
> +     --disable-fusionsound \
> +     --disable-fusionsound-shared \
> +     --$(call ptx/endis,PTXCONF_SDL2_OSS)-oss \
> +     --$(call ptx/endis,PTXCONF_SDL2_ALSA)-alsa \
> +     --disable-alsatest \
> +     --disable-alsa-shared \
> +     --disable-esd \
> +     --disable-esdtest \
> +     --disable-esd-shared \
> +     --$(call ptx/endis,PTXCONF_SDL2_PULSEAUDIO)-pulseaudio \
> +     --$(call ptx/endis,PTXCONF_SDL2_PULSEAUDIO)-pulseaudio-shared \
> +     --disable-arts \
> +     --disable-arts-shared \
> +     --disable-nas \
> +     --disable-nas-shared \
> +     --disable-diskaudio \
> +     --disable-dummyaudio \
> +     --disable-libsamplerate \
> +     --disable-libsamplerate-shared \
> +     --$(call ptx/endis,PTXCONF_SDL2_WAYLAND)-video-wayland \
> +     --disable-video-wayland-qt-touch \
> +     --$(call ptx/endis,PTXCONF_SDL2_WAYLAND)-wayland-shared \
> +     --disable-video-mir \
> +     --disable-mir-shared \
> +     --disable-video-rpi \
> +     --disable-altivec \
> +     --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11 \
> +     --disable-x11-shared \
> +     --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-vm \
> +     --disable-video-vivante \
> +     --disable-video-x11-xinerama \
> +     --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-xrandr \
> +     --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-xcursor \
> +     --disable-video-x11-xdbe \
> +     --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-xinput \
> +     --disable-video-x11-scrnsaver \
> +     --disable-video-x11-xshape \
> +     --disable-video-cocoa \
> +     --disable-render-metal \
> +     --disable-video-directfb \
> +     --disable-directfb-shared \
> +     --$(call ptx/endis,PTXCONF_SDL2_KMS)-video-kmsdrm \
> +     --$(call ptx/endis,PTXCONF_SDL2_KMS)-kmsdrm-shared \
> +     --enable-video-dummy \
> +     --$(call ptx/endis,PTXCONF_SDL2_OPENGL)-video-opengl \
> +     --$(call ptx/endis,PTXCONF_SDL2_OPENGLES)-video-opengles \
> +     --$(call ptx/endis,PTXCONF_SDL2_OPENGLES1)-video-opengles1 \
> +     --$(call ptx/endis,PTXCONF_SDL2_OPENGLES2)-video-opengles2 \
> +     --disable-video-vulkan \
> +     --$(call ptx/endis,PTXCONF_SDL2_UDEV)-libudev \
> +     --$(call ptx/endis,PTXCONF_SDL2_DBUS)-dbus \
> +     --disable-ime \
> +     --disable-ibus \
> +     --disable-fcitx \
> +     --$(call ptx/endis,PTXCONF_SDL2_TSLIB)-input-tslib \
> +     --enable-pthreads \
> +     --enable-pthread-sem \
> +     --disable-directx \
> +     --enable-sdl-dlopen \
> +     --enable-clock_gettime \
> +     --disable-rpath \
> +     --disable-render-d3d \
> +     --$(call ptx/wwo,PTXCONF_SDL2_XORG)-x
> +
> +# 
> ----------------------------------------------------------------------------
> +# Target-Install
> +# 
> ----------------------------------------------------------------------------
> +
> +$(STATEDIR)/sdl2.targetinstall:
> +     @$(call targetinfo)
> +
> +     @$(call install_init, sdl2)
> +     @$(call install_fixup, sdl2,PRIORITY,optional)
> +     @$(call install_fixup, sdl2,SECTION,base)
> +     @$(call install_fixup, sdl2,AUTHOR,"Sergey Zhuravlevich 
> <zhu...@gmail.com>")
> +     @$(call install_fixup, sdl2,DESCRIPTION,missing)
> +
> +     @$(call install_lib, sdl2, 0, 0, 0644, libSDL2-2.0)
> +
> +     @$(call install_finish, sdl2)
> +
> +     @$(call touch)
> +
> +# vim: syntax=make
> -- 
> 2.18.0
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

Attachment: signature.asc
Description: PGP signature

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de

Reply via email to