Message ID | 20180118175415.16715-1-g@maral.me |
---|---|
State | Accepted |
Headers | show |
Series | [1/1] package/sdl2: Fix Raspberry Pi support for SDL2 | expand |
Howdy, Tested and it works like a charm! Thanks for the idea Adrian. :-) Cheers, G On Thu, Jan 18, 2018 at 09:54:15AM -0800, Guillermo A. Amaral wrote: > Tweak build system to play well with Buildroot. > > Signed-off-by: Guillermo A. Amaral <g@maral.me> > --- > .../sdl2/0001-make-cross-compiler-friendly.patch | 167 +++++++++++++++++++++ > package/sdl2/sdl2.mk | 8 +- > 2 files changed, 174 insertions(+), 1 deletion(-) > create mode 100644 package/sdl2/0001-make-cross-compiler-friendly.patch > > diff --git a/package/sdl2/0001-make-cross-compiler-friendly.patch b/package/sdl2/0001-make-cross-compiler-friendly.patch > new file mode 100644 > index 000000000..10dcf7465 > --- /dev/null > +++ b/package/sdl2/0001-make-cross-compiler-friendly.patch > @@ -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 > + > diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk > index 3e3ba54aa..113e1063d 100644 > --- a/package/sdl2/sdl2.mk > +++ b/package/sdl2/sdl2.mk > @@ -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) > -- > 2.13.6
Hello, On Thu, 18 Jan 2018 09:54:15 -0800, Guillermo A. Amaral wrote: > Tweak build system to play well with Buildroot. > > Signed-off-by: Guillermo A. Amaral <g@maral.me> > --- > .../sdl2/0001-make-cross-compiler-friendly.patch | 167 +++++++++++++++++++++ > package/sdl2/sdl2.mk | 8 +- > 2 files changed, 174 insertions(+), 1 deletion(-) > create mode 100644 package/sdl2/0001-make-cross-compiler-friendly.patch Applied to master, thanks. Please submit the patch upstream if not already done. Thanks! Thomas
Hi, On Thu, Jan 18, 2018 at 10:17:45PM +0100, Thomas Petazzoni wrote: > Hello, > > On Thu, 18 Jan 2018 09:54:15 -0800, Guillermo A. Amaral wrote: > > Tweak build system to play well with Buildroot. > > > > Signed-off-by: Guillermo A. Amaral <g@maral.me> > > --- > > .../sdl2/0001-make-cross-compiler-friendly.patch | 167 +++++++++++++++++++++ > > package/sdl2/sdl2.mk | 8 +- > > 2 files changed, 174 insertions(+), 1 deletion(-) > > create mode 100644 package/sdl2/0001-make-cross-compiler-friendly.patch > > Applied to master, thanks. Please submit the patch upstream if not > already done. Thanks! Already submitted. Thanks again for taking the time to review, G > Thomas > -- > Thomas Petazzoni, CTO, Free Electrons > Embedded Linux, Kernel and Android engineering > http://free-electrons.com
Guillermo, All, On 1/18/2018 9:54 AM, Guillermo A. Amaral wrote: > Tweak build system to play well with Buildroot. > > Signed-off-by: Guillermo A. Amaral <g@maral.me> > --- > .../sdl2/0001-make-cross-compiler-friendly.patch | 167 +++++++++++++++++++++ > package/sdl2/sdl2.mk | 8 +- > 2 files changed, 174 insertions(+), 1 deletion(-) > create mode 100644 package/sdl2/0001-make-cross-compiler-friendly.patch > > diff --git a/package/sdl2/0001-make-cross-compiler-friendly.patch b/package/sdl2/0001-make-cross-compiler-friendly.patch > new file mode 100644 > index 000000000..10dcf7465 > --- /dev/null > +++ b/package/sdl2/0001-make-cross-compiler-friendly.patch > @@ -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 > + > diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk > index 3e3ba54aa..113e1063d 100644 > --- a/package/sdl2/sdl2.mk > +++ b/package/sdl2/sdl2.mk > @@ -19,7 +19,6 @@ SDL2_CONF_OPTS += \ > --disable-dbus \ > --disable-pulseaudio \ > --disable-video-wayland \ > - --disable-video-rpi --disable-video-wayland now has a dangling backslash. > > # 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)
Hi Ryan, Yes, but to a blank line; It shouldn't break anything. I tend to leave those in, in order to reduce diff changes in the future. That said, I can avoid doing that in future submissions if that's frowned upon here. Cheers, gamaral On Jan 19, 2018 09:11, "Ryan Coe" <bluemrp9@gmail.com> wrote: Guillermo, All, On 1/18/2018 9:54 AM, Guillermo A. Amaral wrote: > Tweak build system to play well with Buildroot. > > Signed-off-by: Guillermo A. Amaral <g@maral.me> > --- > .../sdl2/0001-make-cross-compiler-friendly.patch | 167 > +++++++++++++++++++++ > package/sdl2/sdl2.mk | 8 +- > 2 files changed, 174 insertions(+), 1 deletion(-) > create mode 100644 package/sdl2/0001-make-cross-compiler-friendly.patch > > diff --git a/package/sdl2/0001-make-cross-compiler-friendly.patch > b/package/sdl2/0001-make-cross-compiler-friendly.patch > new file mode 100644 > index 000000000..10dcf7465 > --- /dev/null > +++ b/package/sdl2/0001-make-cross-compiler-friendly.patch > @@ -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/r > aspberry/*.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/v > mcs_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/v > mcs_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 > + > diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk > index 3e3ba54aa..113e1063d 100644 > --- a/package/sdl2/sdl2.mk > +++ b/package/sdl2/sdl2.mk > @@ -19,7 +19,6 @@ SDL2_CONF_OPTS += \ > --disable-dbus \ > --disable-pulseaudio \ > --disable-video-wayland \ > - --disable-video-rpi > --disable-video-wayland now has a dangling backslash. # 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) > <div dir="auto"><div dir="auto"><span style="font-family:sans-serif">Hi Ryan,</span></div><span style="font-family:sans-serif"><div dir="auto"><span style="font-family:sans-serif"><br></span></div>Yes, but to a blank line; It shouldn't break anything. I</span><span style="font-family:sans-serif"> tend to leave those in, in order to reduce diff changes in the future.</span><div dir="auto" style="font-family:sans-serif"><div dir="auto"><br></div><div dir="auto">That said, I can avoid doing that in future submissions if that's frowned upon here. </div></div><div dir="auto"><br></div>Cheers,<br><div data-smartmail="gmail_signature">gamaral</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Jan 19, 2018 09:11, "Ryan Coe" <<a href="mailto:bluemrp9@gmail.com">bluemrp9@gmail.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Guillermo, All,<div class="elided-text"><br> <br> <br> On 1/18/2018 9:54 AM, Guillermo A. Amaral wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Tweak build system to play well with Buildroot.<br> <br> Signed-off-by: Guillermo A. Amaral <<a href="mailto:g@maral.me" target="_blank">g@maral.me</a>><br> ---<br> .../sdl2/0001-make-cross-compi<wbr>ler-friendly.patch | 167 +++++++++++++++++++++<br> package/sdl2/<a href="http://sdl2.mk" rel="noreferrer" target="_blank">sdl2.mk</a> | 8 +-<br> 2 files changed, 174 insertions(+), 1 deletion(-)<br> create mode 100644 package/sdl2/0001-make-cross-c<wbr>ompiler-friendly.patch<br> <br> diff --git a/package/sdl2/0001-make-cross<wbr>-compiler-friendly.patch b/package/sdl2/0001-make-cross<wbr>-compiler-friendly.patch<br> new file mode 100644<br> index 000000000..10dcf7465<br> --- /dev/null<br> +++ b/package/sdl2/0001-make-cross<wbr>-compiler-friendly.patch<br> @@ -0,0 +1,167 @@<br> +From 4cbd2fbfcbfe94b5826907f59ee963<wbr>c69860e522 Mon Sep 17 00:00:00 2001<br> +From: "Guillermo A. Amaral" <<a href="mailto:g@maral.me" target="_blank">g@maral.me</a>><br> +Date: Thu, 18 Jan 2018 09:23:58 -0800<br> +Subject: [PATCH] Make rpi video cross-compiler friendly.<br> +<br> +* Stops using fixed path to find GLES/EGL libs.<br> +* Tries pkg-config to locate bcm_host.<br> +<br> +Signed-off-by: Guillermo A. Amaral <<a href="mailto:g@maral.me" target="_blank">g@maral.me</a>><br> +---<br> + cmake/sdlchecks.cmake | 15 ++++++++++-----<br> + configure | 48 ++++++++++++++++++++++++++++++<wbr>++++++++++++++++--<br> + <a href="http://configure.in" rel="noreferrer" target="_blank">configure.in</a> | 8 ++++++--<br> + src/video/SDL_egl.c | 12 ++++++------<br> + 4 files changed, 68 insertions(+), 15 deletions(-)<br> +<br> +diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake<br> +index e2e89a2..fc715f1 100644<br> +--- a/cmake/sdlchecks.cmake<br> ++++ b/cmake/sdlchecks.cmake<br> +@@ -1127,15 +1127,19 @@ endmacro()<br> + # - n/a<br> + macro(CheckRPI)<br> + if(VIDEO_RPI)<br> +- set(VIDEO_RPI_INCLUDE_DIRS "/opt/vc/include" "/opt/vc/include/interface/vco<wbr>s/pthreads" "/opt/vc/include/interface/vmc<wbr>s_host/linux/" )<br> +- set(VIDEO_RPI_LIBRARY_DIRS "/opt/vc/lib" )<br> +- set(VIDEO_RPI_LIBS bcm_host )<br> ++ pkg_check_modules(VIDEO_RPI bcm_host brcmegl)<br> ++ if (NOT VIDEO_RPI_FOUND)<br> ++ set(VIDEO_RPI_INCLUDE_DIRS "/opt/vc/include" "/opt/vc/include/interface/vco<wbr>s/pthreads" "/opt/vc/include/interface/vmc<wbr>s_host/linux/" )<br> ++ set(VIDEO_RPI_LIBRARY_DIRS "/opt/vc/lib" )<br> ++ set(VIDEO_RPI_LIBRARIES bcm_host )<br> ++ set(VIDEO_RPI_LDFLAGS "-Wl,-rpath,/opt/vc/lib")<br> ++ endif()<br> + listtostr(VIDEO_RPI_INCLUDE_D<wbr>IRS VIDEO_RPI_INCLUDE_FLAGS "-I")<br> + listtostr(VIDEO_RPI_LIBRARY_D<wbr>IRS VIDEO_RPI_LIBRARY_FLAGS "-L")<br> +<br> + set(ORIG_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")<br> + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}")<br> +- set(CMAKE_REQUIRED_LIBRARIES "${VIDEO_RPI_LIBS}")<br> ++ set(CMAKE_REQUIRED_LIBRARIES "${VIDEO_RPI_LIBRARIES}")<br> + check_c_source_compiles("<br> + #include <bcm_host.h><br> + int main(int argc, char **argv) {}" HAVE_VIDEO_RPI)<br> +@@ -1147,8 +1151,9 @@ macro(CheckRPI)<br> + set(SDL_VIDEO_DRIVER_RPI 1)<br> + file(GLOB VIDEO_RPI_SOURCES ${SDL2_SOURCE_DIR}/src/video/r<wbr>aspberry/*.c)<br> + set(SOURCE_FILES ${SOURCE_FILES} ${VIDEO_RPI_SOURCES})<br> +- list(APPEND EXTRA_LIBS ${VIDEO_RPI_LIBS})<br> ++ list(APPEND EXTRA_LIBS ${VIDEO_RPI_LIBRARIES})<br> + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}")<br> ++ list(APPEND EXTRA_LDFLAGS ${VIDEO_RPI_LDFLAGS})<br> + endif(SDL_VIDEO AND HAVE_VIDEO_RPI)<br> + endif(VIDEO_RPI)<br> + endmacro(CheckRPI)<br> +diff --git a/configure b/configure<br> +index b622085..d42a22a 100755<br> +--- a/configure<br> ++++ b/configure<br> +@@ -19485,12 +19485,56 @@ else<br> + fi<br> +<br> + if test x$enable_video = xyes -a x$enable_video_rpi = xyes; then<br> +- if test x$ARCH = xnetbsd; then<br> ++ # Extract the first word of "pkg-config", so it can be a program name with args.<br> ++set dummy pkg-config; ac_word=$2<br> ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5<br> ++$as_echo_n "checking for $ac_word... " >&6; }<br> ++if ${ac_cv_path_PKG_CONFIG+:} false; then :<br> ++ $as_echo_n "(cached) " >&6<br> ++else<br> ++ case $PKG_CONFIG in<br> ++ [\\/]* | ?:[\\/]*)<br> ++ ac_cv_path_PKG_CONFIG="$PKG_CO<wbr>NFIG" # Let the user override the test with a path.<br> ++ ;;<br> ++ *)<br> ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR<br> ++for as_dir in $PATH<br> ++do<br> ++ IFS=$as_save_IFS<br> ++ test -z "$as_dir" && as_dir=.<br> ++ for ac_exec_ext in '' $ac_executable_extensions; do<br> ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"<wbr>; then<br> ++ ac_cv_path_PKG_CONFIG="$as_dir<wbr>/$ac_word$ac_exec_ext"<br> ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5<br> ++ break 2<br> ++ fi<br> ++done<br> ++ done<br> ++IFS=$as_save_IFS<br> ++<br> ++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"<br> ++ ;;<br> ++esac<br> ++fi<br> ++PKG_CONFIG=$ac_cv_path_PKG_C<wbr>ONFIG<br> ++if test -n "$PKG_CONFIG"; then<br> ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5<br> ++$as_echo "$PKG_CONFIG" >&6; }<br> ++else<br> ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5<br> ++$as_echo "no" >&6; }<br> ++fi<br> ++<br> ++<br> ++ if test x$PKG_CONFIG != xno && $PKG_CONFIG --exists bcm_host; then<br> ++ RPI_CFLAGS=`$PKG_CONFIG --cflags bcm_host brcmegl`<br> ++ RPI_LDFLAGS=`$PKG_CONFIG --libs bcm_host brcmegl`<br> ++ elif test x$ARCH = xnetbsd; then<br> + RPI_CFLAGS="-I/usr/pkg/<wbr>include -I/usr/pkg/include/interface/v<wbr>cos/pthreads -I/usr/pkg/include/interface/v<wbr>mcs_host/linux"<br> + RPI_LDFLAGS="-Wl,-R/usr/pkg/l<wbr>ib -L/usr/pkg/lib -lbcm_host"<br> + else<br> + RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vc<wbr>os/pthreads -I/opt/vc/include/interface/vm<wbr>cs_host/linux"<br> +- RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host"<br> ++ RPI_LDFLAGS="-Wl,-rpath,/opt/v<wbr>c/lib -L/opt/vc/lib -lbcm_host"<br> + fi<br> +<br> + # Save the original compiler flags and libraries<br> +diff --git a/<a href="http://configure.in" rel="noreferrer" target="_blank">configure.in</a> b/<a href="http://configure.in" rel="noreferrer" target="_blank">configure.in</a><br> +index 5ac2130..450bf62 100644<br> +--- a/<a href="http://configure.in" rel="noreferrer" target="_blank">configure.in</a><br> ++++ b/<a href="http://configure.in" rel="noreferrer" target="_blank">configure.in</a><br> +@@ -1563,12 +1563,16 @@ CheckRPI()<br> + AC_HELP_STRING([--enable-video<wbr>-rpi], [use Raspberry Pi video driver [[default=yes]]]),<br> + , enable_video_rpi=yes)<br> + if test x$enable_video = xyes -a x$enable_video_rpi = xyes; then<br> +- if test x$ARCH = xnetbsd; then<br> ++ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)<br> ++ if test x$PKG_CONFIG != xno && $PKG_CONFIG --exists bcm_host; then<br> ++ RPI_CFLAGS=`$PKG_CONFIG --cflags bcm_host brcmegl`<br> ++ RPI_LDFLAGS=`$PKG_CONFIG --libs bcm_host brcmegl`<br> ++ elif test x$ARCH = xnetbsd; then<br> + RPI_CFLAGS="-I/usr/pkg/<wbr>include -I/usr/pkg/include/interface/v<wbr>cos/pthreads -I/usr/pkg/include/interface/v<wbr>mcs_host/linux"<br> + RPI_LDFLAGS="-Wl,-R/usr/pkg/l<wbr>ib -L/usr/pkg/lib -lbcm_host"<br> + else<br> + RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vc<wbr>os/pthreads -I/opt/vc/include/interface/vm<wbr>cs_host/linux"<br> +- RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host"<br> ++ RPI_LDFLAGS="-Wl,-rpath,/opt/v<wbr>c/lib -L/opt/vc/lib -lbcm_host"<br> + fi<br> +<br> + # Save the original compiler flags and libraries<br> +diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c<br> +index 9ccc2c3..23a7f2d 100644<br> +--- a/src/video/SDL_egl.c<br> ++++ b/src/video/SDL_egl.c<br> +@@ -44,12 +44,12 @@<br> +<br> + #if SDL_VIDEO_DRIVER_RPI<br> + /* Raspbian places the OpenGL ES/EGL binaries in a non standard path */<br> +-#define DEFAULT_EGL "/opt/vc/lib/libbrcmEGL.so"<br> +-#define DEFAULT_OGL_ES2 "/opt/vc/lib/libbrcmGLESv2.so"<br> +-#define ALT_EGL "/opt/vc/lib/libEGL.so"<br> +-#define ALT_OGL_ES2 "/opt/vc/lib/libGLESv2.so"<br> +-#define DEFAULT_OGL_ES_PVR "/opt/vc/lib/libGLES_CM.so"<br> +-#define DEFAULT_OGL_ES "/opt/vc/lib/libGLESv1_CM.so"<br> ++#define DEFAULT_EGL "libbrcmEGL.so"<br> ++#define DEFAULT_OGL_ES2 "libbrcmGLESv2.so"<br> ++#define ALT_EGL "libEGL.so"<br> ++#define ALT_OGL_ES2 "libGLESv2.so"<br> ++#define DEFAULT_OGL_ES_PVR "libGLES_CM.so"<br> ++#define DEFAULT_OGL_ES "libGLESv1_CM.so"<br> +<br> + #elif SDL_VIDEO_DRIVER_ANDROID || SDL_VIDEO_DRIVER_VIVANTE<br> + /* Android */<br> +--<br> +2.13.6<br> +<br> diff --git a/package/sdl2/<a href="http://sdl2.mk" rel="noreferrer" target="_blank">sdl2.mk</a> b/package/sdl2/<a href="http://sdl2.mk" rel="noreferrer" target="_blank">sdl2.mk</a><br> index 3e3ba54aa..113e1063d 100644<br> --- a/package/sdl2/<a href="http://sdl2.mk" rel="noreferrer" target="_blank">sdl2.mk</a><br> +++ b/package/sdl2/<a href="http://sdl2.mk" rel="noreferrer" target="_blank">sdl2.mk</a><br> @@ -19,7 +19,6 @@ SDL2_CONF_OPTS += \<br> --disable-dbus \<br> --disable-pulseaudio \<br> --disable-video-wayland \<br> - --disable-video-rpi<br> </blockquote></div> --disable-video-wayland now has a dangling backslash.<div class="elided-text"><br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> # We must enable static build to get compilation successful.<br> SDL2_CONF_OPTS += --enable-static<br> @@ -39,6 +38,13 @@ else<br> SDL2_CONF_OPTS += --disable-video-directfb<br> endif<br> +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y<wbr>)<br> +SDL2_DEPENDENCIES += rpi-userland<br> +SDL2_CONF_OPTS += --enable-video-rpi<br> +else<br> +SDL2_CONF_OPTS += --disable-video-rpi<br> +endif<br> +<br> # x-includes and x-libraries must be set for cross-compiling<br> # By default x_includes and x_libraries contains unsafe paths.<br> # (/usr/X11R6/include and /usr/X11R6/lib)<br> </blockquote> <br> </div></blockquote></div><br></div>
>>>>> "Guillermo" == Guillermo Amaral <g@maral.me> writes: > Hi Ryan, > Yes, but to a blank line; It shouldn't break anything. I tend to leave > those in, in order to reduce diff changes in the future. > That said, I can avoid doing that in future submissions if that's frowned > upon here. We generally do remove them, yes. Thanks.
diff --git a/package/sdl2/0001-make-cross-compiler-friendly.patch b/package/sdl2/0001-make-cross-compiler-friendly.patch new file mode 100644 index 000000000..10dcf7465 --- /dev/null +++ b/package/sdl2/0001-make-cross-compiler-friendly.patch @@ -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 + diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk index 3e3ba54aa..113e1063d 100644 --- a/package/sdl2/sdl2.mk +++ b/package/sdl2/sdl2.mk @@ -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)
Tweak build system to play well with Buildroot. Signed-off-by: Guillermo A. Amaral <g@maral.me> --- .../sdl2/0001-make-cross-compiler-friendly.patch | 167 +++++++++++++++++++++ package/sdl2/sdl2.mk | 8 +- 2 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 package/sdl2/0001-make-cross-compiler-friendly.patch