From patchwork Thu Jan 18 08:15:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guillermo A . Amaral" X-Patchwork-Id: 862791 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=maral.me header.i=@maral.me header.b="lZH9tjTs"; dkim-atps=neutral Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zMcH14JfSz9ryT for ; Thu, 18 Jan 2018 19:16:13 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 772DE88D35; Thu, 18 Jan 2018 08:16:11 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pseFsRRouPvj; Thu, 18 Jan 2018 08:16:05 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id 65CF588D8F; Thu, 18 Jan 2018 08:16:05 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id BBDF41BFEBB for ; Thu, 18 Jan 2018 08:16:04 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 8383429DAD for ; Thu, 18 Jan 2018 08:15:56 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9k0LgI7TpdkW for ; Thu, 18 Jan 2018 08:15:55 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by silver.osuosl.org (Postfix) with ESMTPS id 605B6246AD for ; Thu, 18 Jan 2018 08:15:55 +0000 (UTC) Received: by mail-qt0-f193.google.com with SMTP id o35so18097563qtj.13 for ; Thu, 18 Jan 2018 00:15:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maral.me; s=gamaral; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=AXlN/u7zAd2DoaHmV1jUwKEdKqjf4e4XVlWATr62CTA=; b=lZH9tjTsrHfmtJxLLDjbbE6jIU3vGrB1R+fAWBa1Ek4OtEcdAWZegZpo+ddhB3i25R iUm4KomGGjg6FDBN2c12RYDF1Vu8dihcSkaZvt54dTtFB2yVAQeUUNlMYSc1ydXWFTvt dkIniKoAGGjkJ7QBZ0DYcrYrKL4/mIlMxmzqg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=AXlN/u7zAd2DoaHmV1jUwKEdKqjf4e4XVlWATr62CTA=; b=rNsiVIfVH+S6pvsolxZyo4Qs6Nq/fnorql9w/n8pZLg0fJtKtGAbYnxQdg2CZ1aU0Q NtlLTlUgWluYIq2f47FIRnAoLixk20VgFd0Z35a92tkPv2YU16hlQWPjnzBNL6uHaorx LuDEUegfxPbng/ZUHAJKo4aXHAdtLkBiSRJEyKFPc9AjvXTx8r5tvReUKRsAEkQqKcI2 +UmJHmfeVxgZzHBTzZE+ADWTF96r/PsSG3EhLuZe1o/ez1ap+zpDYxivNMnyW9thgV30 /Tv9Vpl4IclRlDyzvfNppmo3xFs+xg/Ibf12WZuLGIK1dFizhZFIqIXVD0r7tewawuL4 EHsw== X-Gm-Message-State: AKwxytdgXfnT8+BFJkLzqs2IIVWcYeeDWunZAWHU6LY4zwSEA1pnONSD ILEGL8+0kGMXH2xCVtJclMr4VAVF1ZI= X-Google-Smtp-Source: ACJfBosPest0G2skY/T0VmbFPt2txTT847rZEw6wzf3tSRDjeWW+jkYWXFLD8Gompx6+yCbBNc34yg== X-Received: by 10.55.160.14 with SMTP id j14mr42747847qke.305.1516263353689; Thu, 18 Jan 2018 00:15:53 -0800 (PST) Received: from localhost (201.171.25.242.dsl.dyn.telnor.net. [201.171.25.242]) by smtp.gmail.com with ESMTPSA id e16sm4440948qtk.32.2018.01.18.00.15.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Jan 2018 00:15:52 -0800 (PST) From: "Guillermo A. Amaral" To: buildroot@buildroot.org Date: Thu, 18 Jan 2018 00:15:28 -0800 Message-Id: <20180118081528.16612-1-g@maral.me> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180116175054.GB28324@enterprise.starfleet> References: <20180116175054.GB28324@enterprise.starfleet> Subject: [Buildroot] [PATCH 1/1] package/sdl2: Fix Raspberry Pi support in package SDL2 X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.24 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Guillermo A. Amaral" , Guillaume Gardet MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Backported upstream patch which makes SDL2 more cross-compiler friendly. Signed-off-by: Guillermo A. Amaral --- .../sdl2/0001-make-cross-compiler-friendly.patch | 176 +++++++++++++++++++++ package/sdl2/sdl2.mk | 8 +- 2 files changed, 183 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..42d636adc --- /dev/null +++ b/package/sdl2/0001-make-cross-compiler-friendly.patch @@ -0,0 +1,176 @@ +From ca98276a3b806b06a019ba5784b075d5d371befd Mon Sep 17 00:00:00 2001 +From: "Guillermo A. Amaral" +Date: Tue, 16 Jan 2018 22:19:12 -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 +--- + cmake/sdlchecks.cmake | 13 ++++++++----- + configure | 46 +++++++++++++++++++++++++++++++++++++++++++++- + configure.in | 6 +++++- + src/video/SDL_egl.c | 29 +++++++++++++++++++++++------ + 4 files changed, 81 insertions(+), 13 deletions(-) + +diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake +index e2e89a2..5dde86c 100644 +--- a/cmake/sdlchecks.cmake ++++ b/cmake/sdlchecks.cmake +@@ -1127,15 +1127,18 @@ 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 ) ++ 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 + int main(int argc, char **argv) {}" HAVE_VIDEO_RPI) +@@ -1147,7 +1150,7 @@ 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}") + endif(SDL_VIDEO AND HAVE_VIDEO_RPI) + endif(VIDEO_RPI) +diff --git a/configure b/configure +index b622085..5e91d08 100755 +--- a/configure ++++ b/configure +@@ -19485,7 +19485,51 @@ 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 +diff --git a/configure.in b/configure.in +index 5ac2130..6a0b380 100644 +--- a/configure.in ++++ b/configure.in +@@ -1563,7 +1563,11 @@ 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 +diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c +index 9ccc2c3..08132b4 100644 +--- a/src/video/SDL_egl.c ++++ b/src/video/SDL_egl.c +@@ -44,12 +44,13 @@ + + #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" ++static const char g_rpi_opt_path[] = "/opt/vc/lib"; ++#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 */ +@@ -257,6 +258,22 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa + const char *d3dcompiler; + #endif + ++#if SDL_VIDEO_DRIVER_RPI ++ path = SDL_getenv("LD_LIBRARY_PATH"); ++ if (path) { ++ const int path_size = SDL_strlen(path) + 1 + sizeof(g_rpi_opt_path); ++ char *new_path = SDL_calloc(1, path_size); ++ strcat(new_path, path); ++ strcat(new_path, ":"); ++ strcat(new_path, g_rpi_opt_path); ++ SDL_setenv("LD_LIBRARY_PATH", new_path, 1); ++ SDL_free(new_path); ++ } else { ++ SDL_setenv("LD_LIBRARY_PATH", g_rpi_opt_path, 1); ++ } ++ path = NULL; ++#endif ++ + if (_this->egl_data) { + return SDL_SetError("OpenGL ES context already created"); + } +-- +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)