package/sdl2: Fix Raspberry Pi support for SDL2
Tweak build system to play well with Buildroot. Signed-off-by: Guillermo A. Amaral <g@maral.me> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
feb5d69f6a
commit
9f8a6fdf99
167
package/sdl2/0001-make-cross-compiler-friendly.patch
Normal file
167
package/sdl2/0001-make-cross-compiler-friendly.patch
Normal file
@ -0,0 +1,167 @@
|
||||
From 4cbd2fbfcbfe94b5826907f59ee963c69860e522 Mon Sep 17 00:00:00 2001
|
||||
From: "Guillermo A. Amaral" <g@maral.me>
|
||||
Date: Thu, 18 Jan 2018 09:23:58 -0800
|
||||
Subject: [PATCH] Make rpi video cross-compiler friendly.
|
||||
|
||||
* Stops using fixed path to find GLES/EGL libs.
|
||||
* Tries pkg-config to locate bcm_host.
|
||||
|
||||
Signed-off-by: Guillermo A. Amaral <g@maral.me>
|
||||
---
|
||||
cmake/sdlchecks.cmake | 15 ++++++++++-----
|
||||
configure | 48 ++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
configure.in | 8 ++++++--
|
||||
src/video/SDL_egl.c | 12 ++++++------
|
||||
4 files changed, 68 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake
|
||||
index e2e89a2..fc715f1 100644
|
||||
--- a/cmake/sdlchecks.cmake
|
||||
+++ b/cmake/sdlchecks.cmake
|
||||
@@ -1127,15 +1127,19 @@ endmacro()
|
||||
# - n/a
|
||||
macro(CheckRPI)
|
||||
if(VIDEO_RPI)
|
||||
- set(VIDEO_RPI_INCLUDE_DIRS "/opt/vc/include" "/opt/vc/include/interface/vcos/pthreads" "/opt/vc/include/interface/vmcs_host/linux/" )
|
||||
- set(VIDEO_RPI_LIBRARY_DIRS "/opt/vc/lib" )
|
||||
- set(VIDEO_RPI_LIBS bcm_host )
|
||||
+ pkg_check_modules(VIDEO_RPI bcm_host brcmegl)
|
||||
+ if (NOT VIDEO_RPI_FOUND)
|
||||
+ set(VIDEO_RPI_INCLUDE_DIRS "/opt/vc/include" "/opt/vc/include/interface/vcos/pthreads" "/opt/vc/include/interface/vmcs_host/linux/" )
|
||||
+ set(VIDEO_RPI_LIBRARY_DIRS "/opt/vc/lib" )
|
||||
+ set(VIDEO_RPI_LIBRARIES bcm_host )
|
||||
+ set(VIDEO_RPI_LDFLAGS "-Wl,-rpath,/opt/vc/lib")
|
||||
+ endif()
|
||||
listtostr(VIDEO_RPI_INCLUDE_DIRS VIDEO_RPI_INCLUDE_FLAGS "-I")
|
||||
listtostr(VIDEO_RPI_LIBRARY_DIRS VIDEO_RPI_LIBRARY_FLAGS "-L")
|
||||
|
||||
set(ORIG_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
|
||||
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}")
|
||||
- set(CMAKE_REQUIRED_LIBRARIES "${VIDEO_RPI_LIBS}")
|
||||
+ set(CMAKE_REQUIRED_LIBRARIES "${VIDEO_RPI_LIBRARIES}")
|
||||
check_c_source_compiles("
|
||||
#include <bcm_host.h>
|
||||
int main(int argc, char **argv) {}" HAVE_VIDEO_RPI)
|
||||
@@ -1147,8 +1151,9 @@ macro(CheckRPI)
|
||||
set(SDL_VIDEO_DRIVER_RPI 1)
|
||||
file(GLOB VIDEO_RPI_SOURCES ${SDL2_SOURCE_DIR}/src/video/raspberry/*.c)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${VIDEO_RPI_SOURCES})
|
||||
- list(APPEND EXTRA_LIBS ${VIDEO_RPI_LIBS})
|
||||
+ list(APPEND EXTRA_LIBS ${VIDEO_RPI_LIBRARIES})
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}")
|
||||
+ list(APPEND EXTRA_LDFLAGS ${VIDEO_RPI_LDFLAGS})
|
||||
endif(SDL_VIDEO AND HAVE_VIDEO_RPI)
|
||||
endif(VIDEO_RPI)
|
||||
endmacro(CheckRPI)
|
||||
diff --git a/configure b/configure
|
||||
index b622085..d42a22a 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -19485,12 +19485,56 @@ else
|
||||
fi
|
||||
|
||||
if test x$enable_video = xyes -a x$enable_video_rpi = xyes; then
|
||||
- if test x$ARCH = xnetbsd; then
|
||||
+ # Extract the first word of "pkg-config", so it can be a program name with args.
|
||||
+set dummy pkg-config; ac_word=$2
|
||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
+$as_echo_n "checking for $ac_word... " >&6; }
|
||||
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
|
||||
+ $as_echo_n "(cached) " >&6
|
||||
+else
|
||||
+ case $PKG_CONFIG in
|
||||
+ [\\/]* | ?:[\\/]*)
|
||||
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
|
||||
+ ;;
|
||||
+ *)
|
||||
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
+for as_dir in $PATH
|
||||
+do
|
||||
+ IFS=$as_save_IFS
|
||||
+ test -z "$as_dir" && as_dir=.
|
||||
+ for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
|
||||
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
+ break 2
|
||||
+ fi
|
||||
+done
|
||||
+ done
|
||||
+IFS=$as_save_IFS
|
||||
+
|
||||
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
|
||||
+ ;;
|
||||
+esac
|
||||
+fi
|
||||
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
|
||||
+if test -n "$PKG_CONFIG"; then
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
|
||||
+$as_echo "$PKG_CONFIG" >&6; }
|
||||
+else
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
+$as_echo "no" >&6; }
|
||||
+fi
|
||||
+
|
||||
+
|
||||
+ if test x$PKG_CONFIG != xno && $PKG_CONFIG --exists bcm_host; then
|
||||
+ RPI_CFLAGS=`$PKG_CONFIG --cflags bcm_host brcmegl`
|
||||
+ RPI_LDFLAGS=`$PKG_CONFIG --libs bcm_host brcmegl`
|
||||
+ elif test x$ARCH = xnetbsd; then
|
||||
RPI_CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/interface/vcos/pthreads -I/usr/pkg/include/interface/vmcs_host/linux"
|
||||
RPI_LDFLAGS="-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lbcm_host"
|
||||
else
|
||||
RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
|
||||
- RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host"
|
||||
+ RPI_LDFLAGS="-Wl,-rpath,/opt/vc/lib -L/opt/vc/lib -lbcm_host"
|
||||
fi
|
||||
|
||||
# Save the original compiler flags and libraries
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 5ac2130..450bf62 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -1563,12 +1563,16 @@ CheckRPI()
|
||||
AC_HELP_STRING([--enable-video-rpi], [use Raspberry Pi video driver [[default=yes]]]),
|
||||
, enable_video_rpi=yes)
|
||||
if test x$enable_video = xyes -a x$enable_video_rpi = xyes; then
|
||||
- if test x$ARCH = xnetbsd; then
|
||||
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
||||
+ if test x$PKG_CONFIG != xno && $PKG_CONFIG --exists bcm_host; then
|
||||
+ RPI_CFLAGS=`$PKG_CONFIG --cflags bcm_host brcmegl`
|
||||
+ RPI_LDFLAGS=`$PKG_CONFIG --libs bcm_host brcmegl`
|
||||
+ elif test x$ARCH = xnetbsd; then
|
||||
RPI_CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/interface/vcos/pthreads -I/usr/pkg/include/interface/vmcs_host/linux"
|
||||
RPI_LDFLAGS="-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lbcm_host"
|
||||
else
|
||||
RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
|
||||
- RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host"
|
||||
+ RPI_LDFLAGS="-Wl,-rpath,/opt/vc/lib -L/opt/vc/lib -lbcm_host"
|
||||
fi
|
||||
|
||||
# Save the original compiler flags and libraries
|
||||
diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c
|
||||
index 9ccc2c3..23a7f2d 100644
|
||||
--- a/src/video/SDL_egl.c
|
||||
+++ b/src/video/SDL_egl.c
|
||||
@@ -44,12 +44,12 @@
|
||||
|
||||
#if SDL_VIDEO_DRIVER_RPI
|
||||
/* Raspbian places the OpenGL ES/EGL binaries in a non standard path */
|
||||
-#define DEFAULT_EGL "/opt/vc/lib/libbrcmEGL.so"
|
||||
-#define DEFAULT_OGL_ES2 "/opt/vc/lib/libbrcmGLESv2.so"
|
||||
-#define ALT_EGL "/opt/vc/lib/libEGL.so"
|
||||
-#define ALT_OGL_ES2 "/opt/vc/lib/libGLESv2.so"
|
||||
-#define DEFAULT_OGL_ES_PVR "/opt/vc/lib/libGLES_CM.so"
|
||||
-#define DEFAULT_OGL_ES "/opt/vc/lib/libGLESv1_CM.so"
|
||||
+#define DEFAULT_EGL "libbrcmEGL.so"
|
||||
+#define DEFAULT_OGL_ES2 "libbrcmGLESv2.so"
|
||||
+#define ALT_EGL "libEGL.so"
|
||||
+#define ALT_OGL_ES2 "libGLESv2.so"
|
||||
+#define DEFAULT_OGL_ES_PVR "libGLES_CM.so"
|
||||
+#define DEFAULT_OGL_ES "libGLESv1_CM.so"
|
||||
|
||||
#elif SDL_VIDEO_DRIVER_ANDROID || SDL_VIDEO_DRIVER_VIVANTE
|
||||
/* Android */
|
||||
--
|
||||
2.13.6
|
||||
|
@ -19,7 +19,6 @@ SDL2_CONF_OPTS += \
|
||||
--disable-dbus \
|
||||
--disable-pulseaudio \
|
||||
--disable-video-wayland \
|
||||
--disable-video-rpi
|
||||
|
||||
# We must enable static build to get compilation successful.
|
||||
SDL2_CONF_OPTS += --enable-static
|
||||
@ -39,6 +38,13 @@ else
|
||||
SDL2_CONF_OPTS += --disable-video-directfb
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
|
||||
SDL2_DEPENDENCIES += rpi-userland
|
||||
SDL2_CONF_OPTS += --enable-video-rpi
|
||||
else
|
||||
SDL2_CONF_OPTS += --disable-video-rpi
|
||||
endif
|
||||
|
||||
# x-includes and x-libraries must be set for cross-compiling
|
||||
# By default x_includes and x_libraries contains unsafe paths.
|
||||
# (/usr/X11R6/include and /usr/X11R6/lib)
|
||||
|
Loading…
Reference in New Issue
Block a user