mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Grzeschik <m.grzeschik@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: [ptxdist] [PATCH v5 1/6] sdl2: add new package
Date: Thu, 26 Jul 2018 19:39:20 +0200	[thread overview]
Message-ID: <20180726173925.1982-2-m.grzeschik@pengutronix.de> (raw)
In-Reply-To: <20180726173925.1982-1-m.grzeschik@pengutronix.de>

Signed-off-by: Michael Grzeschik <m.grzeschik@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 <zhurxx@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 <zhurxx@gmail.com>
+Signed-off-by: Michael Grzeschik <m.grzeschik@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.grzeschik@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.grzeschik@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
+	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 <zhurxx@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

  reply	other threads:[~2018-07-26 17:39 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-26 17:39 [ptxdist] [PATCH v5 0/6] sdl2: add support for new packages Michael Grzeschik
2018-07-26 17:39 ` Michael Grzeschik [this message]
2018-07-27 13:09   ` [ptxdist] [PATCH v5 1/6] sdl2: add new package Michael Grzeschik
2018-07-26 17:39 ` [ptxdist] [PATCH v5 2/6] sdl2-image: " Michael Grzeschik
2018-07-26 17:39 ` [ptxdist] [PATCH v5 3/6] sdl2-net: " Michael Grzeschik
2018-07-26 17:39 ` [ptxdist] [PATCH v5 4/6] sdl2-ttf: " Michael Grzeschik
2018-07-26 17:39 ` [ptxdist] [PATCH v5 5/6] sdl2-mixer: " Michael Grzeschik
2018-07-26 17:39 ` [ptxdist] [PATCH v5 6/6] sdl2-test: " Michael Grzeschik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180726173925.1982-2-m.grzeschik@pengutronix.de \
    --to=m.grzeschik@pengutronix.de \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox