configure: Backport improved EGL configure checks
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 21 Mar 2013 09:26:35 +0000 (10:26 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 21 Mar 2013 09:26:35 +0000 (10:26 +0100)
configure.ac
ext/eglgles/Makefile.am

index 8ae130885b3f1d5f827b9fdef8e7abf6d44877e8..b25522da2ee106362628316b7eea57e59444e111 100644 (file)
@@ -159,6 +159,158 @@ if test "x$HAVE_PTHREAD_H" != "xyes"; then
   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/dccp//`
 fi
 
+dnl check for EGL
+AC_ARG_WITH([egl-window-system],
+              AS_HELP_STRING([--with-egl-window-system],[EGL window system to use (x11, mali-fb, rpi, none)]),
+              [EGL_WINDOW_SYSTEM="$withval"],
+              [EGL_WINDOW_SYSTEM="auto"])
+
+if test x"$EGL_WINDOW_SYSTEM" = x"auto"; then
+  dnl Mali
+  old_LIBS=$LIBS
+  old_CFLAGS=$CFLAGS
+  LIBS="$LIBS -lUMP $EGL_LIBS"
+  CFLAGS="$CFLAGS $EGL_CFLAGS"
+  AC_CHECK_LIB([Mali], [mali_image_create], [EGL_WINDOW_SYSTEM="mali-fb"], [EGL_WINDOW_SYSTEM="auto"])
+  LIBS=$old_LIBS
+  CFLAGS=$old_CFLAGS
+
+  dnl RPi
+  if test x"$EGL_WINDOW_SYSTEM" = x"auto"; then
+      old_LIBS=$LIBS
+      old_CFLAGS=$CFLAGS
+      LIBS="$LIBS -lvcos -lvchiq_arm"
+      CFLAGS="$CFLAGS"
+      AC_CHECK_LIB([bcm_host], [bcm_host_init],
+        [
+          LIBS="$LIBS -lbcm_host"
+          AC_CHECK_HEADER([bcm_host.h], [EGL_WINDOW_SYSTEM="rpi"], [EGL_WINDOW_SYSTEM="auto"])
+      ])
+      LIBS=$old_LIBS
+      CFLAGS=$old_CFLAGS
+  fi
+
+  if test x"$EGL_WINDOW_SYSTEM" = x"auto"; then
+      if test x"$HAVE_X11" = x"yes"; then
+        EGL_WINDOW_SYSTEM="x11"
+      fi
+  fi
+
+  if test x"$EGL_WINDOW_SYSTEM" = x"auto"; then
+    EGL_WINDOW_SYSTEM="none"
+  fi
+fi
+
+case "$EGL_WINDOW_SYSTEM" in
+  x11|none)
+    PKG_CHECK_MODULES(EGL, egl, HAVE_EGL="yes", [
+      HAVE_EGL="no"
+      old_LIBS=$LIBS
+      old_CFLAGS=$CFLAGS
+      
+      AC_CHECK_LIB([EGL], [eglGetProcAddress],
+        [
+          AC_CHECK_HEADER([EGL/egl.h],
+            [
+              HAVE_EGL="yes"
+              EGL_LIBS="-lEGL"
+              EGL_CFLAGS=""
+            ]
+          )
+        ]
+      )
+      
+      LIBS=$old_LIBS
+      CFLAGS=$old_CFLAGS
+    ])
+      
+    if test x"$HAVE_EGL" = x"yes" -a x"$EGL_WINDOW_SYSTEM" = x"x11"; then
+      if test x"$HAVE_X11" != x"yes"; then
+        AC_MSG_ERROR([libX11 not found and is required for EGL X11 window system])
+      else
+        AC_DEFINE(USE_EGL_X11, [1], [Use X11 EGL window system])
+        EGL_CFLAGS="$EGL_CFLAGS $X11_CFLAGS"
+        EGL_LIBS="$EGL_LIBS $X11_LIBS"
+      fi
+    fi
+    ;;
+  mali-fb)
+    dnl FIXME: Mali EGL depends on GLESv1 or GLESv2
+    HAVE_EGL="no"
+    old_LIBS=$LIBS
+    old_CFLAGS=$CFLAGS
+    AC_CHECK_HEADER([EGL/fbdev_window.h],
+      [
+        LIBS="$LIBS -lUMP"
+        AC_CHECK_LIB([Mali], [mali_image_create],
+          [
+            LIBS="$LIBS -lMali"
+            AC_CHECK_LIB([GLESv2], [glEnable],
+              [
+                AC_CHECK_HEADER([GLES2/gl2.h],
+                  [
+                    AC_CHECK_LIB([EGL], [eglGetProcAddress],
+                      [
+                        AC_CHECK_HEADER([EGL/egl.h],
+                          [
+                            HAVE_EGL="yes"
+                            EGL_LIBS="-lGLESv2 -lEGL -lMali -lUMP"
+                            EGL_CFLAGS=""
+                            AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL window system])
+                          ])
+                      ])
+                  ])
+              ])
+          ])
+      ])
+    LIBS=$old_LIBS
+    CFLAGS=$old_CFLAGS
+    ;;
+  rpi)
+    old_LIBS=$LIBS
+    old_CFLAGS=$CFLAGS
+
+    dnl FIXME: EGL of RPi depends on GLESv1 or GLESv2
+    dnl FIXME: GLESv2 of RPi depends on EGL... WTF!
+    LIBS="$LIBS -lvcos -lvchiq_arm"
+    AC_CHECK_LIB([bcm_host], [bcm_host_init],
+      [
+        LIBS="$LIBS -lbcm_host"
+        AC_CHECK_HEADER(bcm_host.h,
+          [
+            LIBS="$LIBS -lGLESv2"
+            AC_CHECK_LIB([EGL], [eglGetProcAddress],
+              [
+                LIBS="$LIBS -lEGL"
+                AC_CHECK_HEADER([EGL/egl.h],
+                  [
+                    AC_CHECK_LIB([GLESv2], [glEnable],
+                      [
+                        AC_CHECK_HEADER([GLES2/gl2.h],
+                          [
+                            HAVE_EGL="yes"
+                            EGL_LIBS="-lGLESv2 -lEGL -lbcm_host -lvcos -lvchiq_arm"
+                            EGL_CFLAGS=""
+                            AC_DEFINE(USE_EGL_RPI, [1], [Use RPi EGL window system])
+                        ])
+                    ])
+                ])
+            ])
+        ])
+    ])
+
+    LIBS=$old_LIBS
+    CFLAGS=$old_CFLAGS
+    ;;
+  *)
+    AC_MSG_ERROR([invalid EGL window system specified])
+    ;;
+esac
+
+AC_SUBST(EGL_LIBS)
+AC_SUBST(EGL_CFLAGS)
+AM_CONDITIONAL(HAVE_EGL, test x"$HAVE_EGL" = x"yes")
+
 dnl *** checks for types/defines ***
 
 dnl Check for FIONREAD ioctl declaration
@@ -1532,99 +1684,31 @@ AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
 ])
 
 dnl *** eglgles ***
-AC_ARG_WITH([egl-window-system],
-              AS_HELP_STRING([--with-egl-window-system],[EGL window system to use (x11, mali-fb, rpi, none)]),
-              [EGL_WINDOW_SYSTEM="$withval"],
-              [EGL_WINDOW_SYSTEM="none"])
-
 translit(dnm, m, l) AM_CONDITIONAL(USE_EGLGLES, true)
 AG_GST_CHECK_FEATURE(EGLGLES, [eglgles sink], eglgles, [
   HAVE_EGLGLES="no"
 
-  case "$EGL_WINDOW_SYSTEM" in
-    x11|none)
+  if test x"$HAVE_EGL" = x"yes"; then
       PKG_CHECK_MODULES(EGLGLES, egl glesv2, HAVE_EGLGLES="yes", [
         HAVE_EGLGLES="no"
         old_LIBS=$LIBS
         old_CFLAGS=$CFLAGS
+
+        LIBS="$LIBS $EGL_LIBS"
+        CFLAGS="$CFLAGS $EGL_CFLAGS"
         AC_CHECK_LIB([GLESv2], [glEnable],
           [
             AC_CHECK_HEADER([GLES2/gl2.h],
               [
-                AC_CHECK_LIB([EGL], [eglGetProcAddress],
-                  [
-                    AC_CHECK_HEADER([EGL/egl.h],
-                      [
-                        HAVE_EGLGLES="yes"
-                        EGLGLES_LIBS="-lGLESv2 -lEGL"
-                        EGLGLES_CFLAGS=""
-                      ])
-                  ])
+                 HAVE_EGLGLES="yes"
+                 EGLGLES_LIBS="-lGLESv2"
+                 EGLGLES_CFLAGS=""
               ])
           ])
         LIBS=$old_LIBS
         CFLAGS=$old_CFLAGS
       ])
-      
-      if test x"$HAVE_EGLGLES" = x"yes" -a x"$EGL_WINDOW_SYSTEM" = x"x11"; then
-        if test x"$HAVE_X11" != x"yes"; then
-          AC_MSG_ERROR([libX11 not found and is required for EGL X11 window system])
-        else
-          AC_DEFINE(USE_EGL_X11, [1], [Use X11 EGL window system])
-          EGLGLES_CFLAGS="$EGLGLES_CFLAGS $X11_CFLAGS"
-          EGLGLES_LIBS="$EGLGLES_LIBS $X11_LIBS"
-        fi
-      fi
-      ;;
-    mali-fb)
-      HAVE_EGLGLES="no"
-      AC_CHECK_HEADER([EGL/fbdev_window.h],
-        [
-          old_LIBS=$LIBS
-          old_CFLAGS=$CFLAGS
-
-          LIBS="$LIBS -lUMP"
-          AC_CHECK_LIB([Mali], [mali_image_create],
-            [
-              LIBS="$LIBS -lMali"
-              AC_CHECK_LIB([GLESv2], [glEnable],
-                [
-                  AC_CHECK_HEADER([GLES2/gl2.h],
-                    [
-                      AC_CHECK_LIB([EGL], [eglGetProcAddress],
-                        [
-                          AC_CHECK_HEADER([EGL/egl.h],
-                            [
-                              HAVE_EGLGLES="yes"
-                              EGLGLES_LIBS="-lGLESv2 -lEGL -lMali -lUMP"
-                              EGLGLES_CFLAGS=""
-                              AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL window system])
-                            ])
-                        ])
-                    ])
-                ])
-            ])
-
-          LIBS=$old_LIBS
-          CFLAGS=$old_CFLAGS
-        ])
-      ;;
-    rpi)
-      old_LIBS=$LIBS
-      old_CFLAGS=$CFLAGS
-
-      AC_CHECK_HEADER(bcm_host.h, [
-        HAVE_EGLGLES="yes"
-        EGLGLES_LIBS="-lGLESv2 -lEGL -lbcm_host"
-        AC_DEFINE(USE_EGL_RPI, [1], [Use RPi EGL window system])
-        LIBS=$old_LIBS
-        CFLAGS=$old_CFLAGS
-      ])
-      ;;
-    *)
-      AC_MSG_ERROR([invalid EGL window system specified])
-      ;;
-  esac
+  fi
 
   AC_SUBST(EGLGLES_CFLAGS)
   AC_SUBST(EGLGLES_LIBS)
index dc1e8b82ed8bff483150b722c9247349cef2cd30..3e4cc3e51ab8b08fcf63a03afcd5efb38fc42932 100644 (file)
@@ -5,10 +5,11 @@ libgsteglglessink_la_SOURCES = gsteglglessink.c video_platform_wrapper.c
 libgsteglglessink_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
                               $(GST_BASE_CFLAGS) \
                               $(GST_CFLAGS) \
+                             $(EGL_CFLAGS) \
                               $(EGLGLES_CFLAGS)
 
 libgsteglglessink_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) \
-       $(GST_PLUGINS_BASE_LIBS) $(EGLGLES_LIBS) \
+       $(GST_PLUGINS_BASE_LIBS) $(EGL_LIBS) $(EGLGLES_LIBS) \
        -lgstvideo-$(GST_API_VERSION)
 
 libgsteglglessink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)