diff mbox series

[1/1] package/sdl2: Fix Raspberry Pi support for SDL2

Message ID 20180118175415.16715-1-g@maral.me
State Accepted
Headers show
Series [1/1] package/sdl2: Fix Raspberry Pi support for SDL2 | expand

Commit Message

Guillermo A . Amaral Jan. 18, 2018, 5:54 p.m. UTC
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

Comments

Guillermo A . Amaral Jan. 18, 2018, 5:56 p.m. UTC | #1
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
Thomas Petazzoni Jan. 18, 2018, 9:17 p.m. UTC | #2
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
Guillermo A . Amaral Jan. 19, 2018, 6:25 a.m. UTC | #3
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
Ryan Coe Jan. 19, 2018, 5:11 p.m. UTC | #4
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)
Guillermo A . Amaral Jan. 19, 2018, 7:24 p.m. UTC | #5
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&#39;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&#39;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, &quot;Ryan Coe&quot; &lt;<a href="mailto:bluemrp9@gmail.com">bluemrp9@gmail.com</a>&gt; 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 &lt;<a href="mailto:g@maral.me" target="_blank">g@maral.me</a>&gt;<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: &quot;Guillermo A. Amaral&quot; &lt;<a href="mailto:g@maral.me" target="_blank">g@maral.me</a>&gt;<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 &lt;<a href="mailto:g@maral.me" target="_blank">g@maral.me</a>&gt;<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 &quot;/opt/vc/include&quot; &quot;/opt/vc/include/interface/vco<wbr>s/pthreads&quot; &quot;/opt/vc/include/interface/vmc<wbr>s_host/linux/&quot; )<br>
+-    set(VIDEO_RPI_LIBRARY_DIRS &quot;/opt/vc/lib&quot; )<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 &quot;/opt/vc/include&quot; &quot;/opt/vc/include/interface/vco<wbr>s/pthreads&quot; &quot;/opt/vc/include/interface/vmc<wbr>s_host/linux/&quot; )<br>
++      set(VIDEO_RPI_LIBRARY_DIRS &quot;/opt/vc/lib&quot; )<br>
++      set(VIDEO_RPI_LIBRARIES bcm_host )<br>
++      set(VIDEO_RPI_LDFLAGS &quot;-Wl,-rpath,/opt/vc/lib&quot;)<br>
++    endif()<br>
+     listtostr(VIDEO_RPI_INCLUDE_D<wbr>IRS VIDEO_RPI_INCLUDE_FLAGS &quot;-I&quot;)<br>
+     listtostr(VIDEO_RPI_LIBRARY_D<wbr>IRS VIDEO_RPI_LIBRARY_FLAGS &quot;-L&quot;)<br>
+<br>
+     set(ORIG_CMAKE_REQUIRED_FLAGS &quot;${CMAKE_REQUIRED_FLAGS}&quot;)<br>
+     set(CMAKE_REQUIRED_FLAGS &quot;${CMAKE_REQUIRED_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}&quot;)<br>
+-    set(CMAKE_REQUIRED_LIBRARIES &quot;${VIDEO_RPI_LIBS}&quot;)<br>
++    set(CMAKE_REQUIRED_LIBRARIES &quot;${VIDEO_RPI_LIBRARIES}&quot;)<br>
+     check_c_source_compiles(&quot;<br>
+         #include &lt;bcm_host.h&gt;<br>
+         int main(int argc, char **argv) {}&quot; 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 &quot;${CMAKE_C_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}&quot;)<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 &quot;pkg-config&quot;, so it can be a program name with args.<br>
++set dummy pkg-config; ac_word=$2<br>
++{ $as_echo &quot;$as_me:${as_lineno-$LINENO}: checking for $ac_word&quot; &gt;&amp;5<br>
++$as_echo_n &quot;checking for $ac_word... &quot; &gt;&amp;6; }<br>
++if ${ac_cv_path_PKG_CONFIG+:} false; then :<br>
++  $as_echo_n &quot;(cached) &quot; &gt;&amp;6<br>
++else<br>
++  case $PKG_CONFIG in<br>
++  [\\/]* | ?:[\\/]*)<br>
++  ac_cv_path_PKG_CONFIG=&quot;$PKG_CO<wbr>NFIG&quot; # 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 &quot;$as_dir&quot; &amp;&amp; as_dir=.<br>
++    for ac_exec_ext in &#39;&#39; $ac_executable_extensions; do<br>
++  if as_fn_executable_p &quot;$as_dir/$ac_word$ac_exec_ext&quot;<wbr>; then<br>
++    ac_cv_path_PKG_CONFIG=&quot;$as_dir<wbr>/$ac_word$ac_exec_ext&quot;<br>
++    $as_echo &quot;$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext&quot; &gt;&amp;5<br>
++    break 2<br>
++  fi<br>
++done<br>
++  done<br>
++IFS=$as_save_IFS<br>
++<br>
++  test -z &quot;$ac_cv_path_PKG_CONFIG&quot; &amp;&amp; ac_cv_path_PKG_CONFIG=&quot;no&quot;<br>
++  ;;<br>
++esac<br>
++fi<br>
++PKG_CONFIG=$ac_cv_path_PKG_C<wbr>ONFIG<br>
++if test -n &quot;$PKG_CONFIG&quot;; then<br>
++  { $as_echo &quot;$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG&quot; &gt;&amp;5<br>
++$as_echo &quot;$PKG_CONFIG&quot; &gt;&amp;6; }<br>
++else<br>
++  { $as_echo &quot;$as_me:${as_lineno-$LINENO}: result: no&quot; &gt;&amp;5<br>
++$as_echo &quot;no&quot; &gt;&amp;6; }<br>
++fi<br>
++<br>
++<br>
++        if test x$PKG_CONFIG != xno &amp;&amp; $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=&quot;-I/usr/pkg/<wbr>include -I/usr/pkg/include/interface/v<wbr>cos/pthreads -I/usr/pkg/include/interface/v<wbr>mcs_host/linux&quot;<br>
+             RPI_LDFLAGS=&quot;-Wl,-R/usr/pkg/l<wbr>ib -L/usr/pkg/lib -lbcm_host&quot;<br>
+         else<br>
+             RPI_CFLAGS=&quot;-I/opt/vc/include -I/opt/vc/include/interface/vc<wbr>os/pthreads -I/opt/vc/include/interface/vm<wbr>cs_host/linux&quot;<br>
+-            RPI_LDFLAGS=&quot;-L/opt/vc/lib -lbcm_host&quot;<br>
++            RPI_LDFLAGS=&quot;-Wl,-rpath,/opt/v<wbr>c/lib -L/opt/vc/lib -lbcm_host&quot;<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 &amp;&amp; $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=&quot;-I/usr/pkg/<wbr>include -I/usr/pkg/include/interface/v<wbr>cos/pthreads -I/usr/pkg/include/interface/v<wbr>mcs_host/linux&quot;<br>
+             RPI_LDFLAGS=&quot;-Wl,-R/usr/pkg/l<wbr>ib -L/usr/pkg/lib -lbcm_host&quot;<br>
+         else<br>
+             RPI_CFLAGS=&quot;-I/opt/vc/include -I/opt/vc/include/interface/vc<wbr>os/pthreads -I/opt/vc/include/interface/vm<wbr>cs_host/linux&quot;<br>
+-            RPI_LDFLAGS=&quot;-L/opt/vc/lib -lbcm_host&quot;<br>
++            RPI_LDFLAGS=&quot;-Wl,-rpath,/opt/v<wbr>c/lib -L/opt/vc/lib -lbcm_host&quot;<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 &quot;/opt/vc/lib/libbrcmEGL.so&quot;<br>
+-#define DEFAULT_OGL_ES2 &quot;/opt/vc/lib/libbrcmGLESv2.so&quot;<br>
+-#define ALT_EGL &quot;/opt/vc/lib/libEGL.so&quot;<br>
+-#define ALT_OGL_ES2 &quot;/opt/vc/lib/libGLESv2.so&quot;<br>
+-#define DEFAULT_OGL_ES_PVR &quot;/opt/vc/lib/libGLES_CM.so&quot;<br>
+-#define DEFAULT_OGL_ES &quot;/opt/vc/lib/libGLESv1_CM.so&quot;<br>
++#define DEFAULT_EGL &quot;libbrcmEGL.so&quot;<br>
++#define DEFAULT_OGL_ES2 &quot;libbrcmGLESv2.so&quot;<br>
++#define ALT_EGL &quot;libEGL.so&quot;<br>
++#define ALT_OGL_ES2 &quot;libGLESv2.so&quot;<br>
++#define DEFAULT_OGL_ES_PVR &quot;libGLES_CM.so&quot;<br>
++#define DEFAULT_OGL_ES &quot;libGLESv1_CM.so&quot;<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>
Peter Korsgaard Jan. 19, 2018, 9:40 p.m. UTC | #6
>>>>> "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 mbox series

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)