1dnl --------------------------------------------------------------------------
2dnl GStreamer OpenGL library checks (gst-libs/gst/gl)
3dnl --------------------------------------------------------------------------
4AC_DEFUN([AG_GST_GL_CHECKS],
5[
6dnl define an ERROR_OBJCFLAGS Makefile variable
7dnl FIXME: make check conditional on Apple OS?
8AG_GST_SET_ERROR_OBJCFLAGS($FATAL_WARNINGS, [
9    -Wmissing-declarations -Wredundant-decls
10    -Wwrite-strings -Wformat-nonliteral -Wformat-security
11    -Winit-self -Wmissing-include-dirs -Wno-multichar $NO_WARNINGS])
12
13AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
14
15AM_CONDITIONAL(HAVE_IOS, test "x$HAVE_IOS" = "xyes")
16if test "x$HAVE_IOS" = "xyes"; then
17  AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
18fi
19
20dnl *** opengl ***
21AC_ARG_ENABLE([opengl],
22     [  --enable-opengl         Enable Desktop OpenGL support @<:@default=auto@:>@],
23     [case "${enableval}" in
24       yes)  NEED_GL=yes ;;
25       no)   NEED_GL=no ;;
26       auto) NEED_GL=auto ;;
27       *) AC_MSG_ERROR([bad value ${enableval} for --enable-opengl]) ;;
28     esac],[NEED_GL=auto])
29
30AC_ARG_WITH([opengl-module-name],
31  AS_HELP_STRING([--with-opengl-module-name],[library module name for OpenGL (default: libGL)]))
32if test x$with_opengl_module_name != x; then
33  AC_DEFINE_UNQUOTED(GST_GL_LIBGL_MODULE_NAME, "$with_opengl_module_name", [OpenGL module name])
34fi
35
36AC_ARG_ENABLE([gles2],
37     [  --enable-gles2          Enable OpenGL|ES 2.0 support @<:@default=auto@:>@],
38     [case "${enableval}" in
39       yes)  NEED_GLES2=yes ;;
40       no)   NEED_GLES2=no ;;
41       auto) NEED_GLES2=auto ;;
42       *) AC_MSG_ERROR([bad value ${enableval} for --enable-gles2]) ;;
43     esac],[NEED_GLES2=auto])
44
45AC_ARG_WITH([gles2-module-name],
46  AS_HELP_STRING([--with-gles2-module-name],[library module name for GLES2 (default: libGLESv2)]))
47if test x$with_gles2_module_name != x; then
48  AC_DEFINE_UNQUOTED(GST_GL_LIBGLESV2_MODULE_NAME, "$with_gles2_module_name", [GLES2 module name])
49fi
50
51AC_ARG_ENABLE([egl],
52     [  --enable-egl            Enable EGL support @<:@default=auto@:>@],
53     [case "${enableval}" in
54       yes)  NEED_EGL=yes ;;
55       no)   NEED_EGL=no ;;
56       auto) NEED_EGL=auto ;;
57       *) AC_MSG_ERROR([bad value ${enableval} for --enable-egl]) ;;
58     esac],[NEED_EGL=auto])
59
60AC_ARG_WITH([egl-module-name],
61  AS_HELP_STRING([--with-egl-module-name],[library module name for EGL (default: libEGL)]))
62if test x$with_egl_module_name != x; then
63  AC_DEFINE_UNQUOTED(GST_GL_LIBEGL_MODULE_NAME, "$with_egl_module_name", [EGL module name])
64fi
65
66AC_ARG_ENABLE([wgl],
67     [  --enable-wgl            Enable WGL support @<:@default=auto@:>@],
68     [case "${enableval}" in
69       yes)  NEED_WGL=yes ;;
70       no)   NEED_WGL=no ;;
71       auto) NEED_WGL=auto ;;
72       *) AC_MSG_ERROR([bad value ${enableval} for --enable-wgl]) ;;
73     esac],[NEED_WGL=auto])
74
75AC_ARG_ENABLE([glx],
76     [  --enable-glx            Enable GLX support @<:@default=auto@:>@],
77     [case "${enableval}" in
78       yes)  NEED_GLX=yes ;;
79       no)   NEED_GLX=no ;;
80       auto) NEED_GLX=auto ;;
81       *) AC_MSG_ERROR([bad value ${enableval} for --enable-glx]) ;;
82     esac],[NEED_GLX=auto])
83
84AC_ARG_ENABLE([cocoa],
85     [  --enable-cocoa          Enable Cocoa support @<:@default=auto@:>@],
86     [case "${enableval}" in
87       yes)  NEED_COCOA=yes ;;
88       no)   NEED_COCOA=no ;;
89       auto) NEED_COCOA=auto ;;
90       *) AC_MSG_ERROR([bad value ${enableval} for --enable-cocoa]) ;;
91     esac],[NEED_COCOA=auto])
92
93AC_ARG_ENABLE([x11],
94     [  --enable-x11            Enable x11 support @<:@default=auto@:>@],
95     [case "${enableval}" in
96       yes)  NEED_X11=yes ;;
97       no)   NEED_X11=no ;;
98       auto) NEED_X11=auto ;;
99       *) AC_MSG_ERROR([bad value ${enableval} for --enable-x11]) ;;
100     esac],[NEED_X11=auto])
101
102AC_ARG_ENABLE([wayland],
103     [  --enable-wayland        Enable Wayland support (requires EGL) @<:@default=auto@:>@],
104     [case "${enableval}" in
105       yes)  NEED_WAYLAND_EGL=yes ;;
106       no)   NEED_WAYLAND_EGL=no ;;
107       auto) NEED_WAYLAND_EGL=auto ;;
108       *) AC_MSG_ERROR([bad value ${enableval} for --enable-wayland]) ;;
109     esac],[NEED_WAYLAND_EGL=auto])
110
111AC_ARG_ENABLE([dispmanx],
112     [  --enable-dispmanx        Enable Dispmanx support (requires EGL) @<:@default=auto@:>@],
113     [case "${enableval}" in
114       yes)  NEED_DISPMANX=yes ;;
115       no)   NEED_DISPMANX=no ;;
116       auto) NEED_DISPMANX=auto ;;
117       *) AC_MSG_ERROR([bad value ${enableval} for --enable-dispmanx]) ;;
118     esac],[NEED_DISPMANX=auto])
119
120AC_ARG_ENABLE([gbm],
121     [  --enable-gbm        Enable Mesa3D GBM support (requires EGL) @<:@default=auto@:>@],
122     [case "${enableval}" in
123       yes)  NEED_GBM=yes ;;
124       no)   NEED_GBM=no ;;
125       auto) NEED_GBM=auto ;;
126       *) AC_MSG_ERROR([bad value ${enableval} for --enable-gbm]) ;;
127     esac],[NEED_GBM=auto])
128
129AC_ARG_ENABLE([png],
130     [  --enable-png        Enable libpng support @<:@default=auto@:>@],
131     [case "${enableval}" in
132       yes)  NEED_PNG=yes ;;
133       no)   NEED_PNG=no ;;
134       auto) NEED_PNG=auto ;;
135       *) AC_MSG_ERROR([bad value ${enableval} for --enable-png]) ;;
136     esac],[NEED_PNG=auto])
137
138AC_ARG_ENABLE([jpeg],
139     [  --enable-jpeg        Enable libjpeg support @<:@default=auto@:>@],
140     [case "${enableval}" in
141       yes)  NEED_JPEG=yes ;;
142       no)   NEED_JPEG=no ;;
143       auto) NEED_JPEG=auto ;;
144       *) AC_MSG_ERROR([bad value ${enableval} for --enable-jpeg]) ;;
145     esac],[NEED_JPEG=auto])
146
147AG_GST_PKG_CHECK_MODULES(X11_XCB, x11-xcb)
148save_CPPFLAGS="$CPPFLAGS"
149save_LIBS="$LIBS"
150
151HAVE_GL=no
152HAVE_GLES2=no
153HAVE_GLES3_H=no
154HAVE_WAYLAND_EGL=no
155HAVE_VIV_FB_EGL=no
156HAVE_GBM_EGL=no
157HAVE_EGL_RPI=no
158
159case $host in
160  *-mingw32* )
161    LIBS="$LIBS -lgdi32"
162    AG_GST_CHECK_LIBHEADER(GL, opengl32, glTexImage2D,, GL/gl.h)
163    AC_CHECK_HEADER(GL/wglext.h, HAVE_WGLEXT="yes", HAVE_WGLEXT="no", [#include <GL/gl.h>])
164    if test "x$HAVE_WGLEXT" = "xyes"; then
165      HAVE_WGL=yes
166      HAVE_GL=yes
167    fi
168  ;;
169  *)
170    if test "x$NEED_GL" != "xno"; then
171      AG_GST_PKG_CHECK_MODULES(GL, gl)
172      if test "x$HAVE_GL" != "xyes"; then
173        AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h)
174      fi
175    fi
176    if test "x$NEED_GLES2" != "xno"; then
177      AG_GST_PKG_CHECK_MODULES(GLES2, glesv2)
178      if test "x$HAVE_GLES2" != "xyes"; then
179        AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
180      fi
181      AC_CHECK_HEADER([GLES3/gl3.h], [HAVE_GLES3_H=yes])
182      AS_IF([test "x$HAVE_GLES3_H" == "xyes"],
183            [
184             AC_CHECK_HEADER([GLES3/gl3ext.h], [HAVE_GLES3EXT3_H=yes], [HAVE_GLES3EXT3_H=no], [#include <GLES3/gl3.h>])
185            ])
186    fi
187    if test "x$NEED_EGL" != "xno"; then
188      AG_GST_PKG_CHECK_MODULES(EGL, egl)
189      if test "x$HAVE_EGL" != "xyes"; then
190        AG_GST_CHECK_LIBHEADER(EGL, EGL, eglGetError,, EGL/egl.h)
191      fi
192    fi
193
194    old_LIBS=$LIBS
195    old_CFLAGS=$CFLAGS
196
197    dnl imx6 / Vivante specifics
198    if test "x$HAVE_EGL" = "xyes"; then
199        AC_CHECK_LIB([EGL], [fbGetDisplay], [HAVE_VIV_FB_EGL=yes])
200    fi
201
202    if test "x$NEED_GBM" != "xno"; then
203      if test "x$HAVE_EGL" = "xyes"; then
204        PKG_CHECK_MODULES(DRM, libdrm >= 2.4.55, HAVE_DRM=yes, HAVE_DRM=no)
205        AC_SUBST(DRM_CFLAGS)
206        AC_SUBST(DRM_LIBS)
207        if test "x$NEED_GBM" = "xyes"; then
208          if test "x$HAVE_DRM" = "xno"; then
209            AC_MSG_ERROR([GBM support requested but libdrm is not available])
210          fi
211          if test "x$HAVE_GUDEV" = "xno"; then
212            AC_MSG_ERROR([GBM support requested but gudev is not available])
213          fi
214        fi
215        if test "x$HAVE_DRM" = "xyes" -a "x$HAVE_GUDEV" = "xyes"; then
216          PKG_CHECK_MODULES(GBM, gbm, HAVE_GBM_EGL=yes, HAVE_GBM_EGL=no)
217          if test "x$HAVE_GBM_EGL" = "xno" -a "x$NEED_GBM" = "xyes"; then
218            AC_MSG_ERROR([GBM support requested but gbm library is not available])
219          fi
220          AC_SUBST(GBM_CFLAGS)
221          AC_SUBST(GBM_LIBS)
222        fi
223      elif test "x$NEED_GBM" = "xyes"; then
224        AC_MSG_ERROR([GBM support requested but EGL is not available])
225      else
226        AC_MSG_NOTICE([GBM support requested but EGL is not available; not enabling GBM support])
227      fi
228    fi
229
230    dnl FIXME: Mali EGL depends on GLESv1 or GLESv2
231    AC_CHECK_HEADER([EGL/fbdev_window.h],
232      [
233        LIBS="$LIBS -lUMP"
234        AC_CHECK_LIB([Mali], [mali_image_create],
235          [
236            LIBS="$LIBS -lMali"
237            AC_CHECK_LIB([GLESv2], [glEnable],
238              [
239                AC_CHECK_HEADER([GLES2/gl2.h],
240                  [
241                    AC_CHECK_LIB([EGL], [eglGetProcAddress],
242                      [
243                        AC_CHECK_HEADER([EGL/egl.h],
244                          [
245                            HAVE_EGL=yes
246                            HAVE_GLES2=yes
247                            EGL_LIBS="-lMali -lUMP"
248                            EGL_CFLAGS=""
249                            AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL platform])
250                          ])
251                      ])
252                  ])
253              ])
254          ])
255      ])
256
257    dnl FIXME: EGL of RPi depends on GLESv1 or GLESv2
258    dnl FIXME: GLESv2 of RPi depends on EGL... WTF!
259    LIBS="$LIBS -lvcos -lvchiq_arm"
260    AC_CHECK_LIB([bcm_host], [bcm_host_init],
261      [
262        LIBS="$LIBS -lbcm_host"
263        AC_CHECK_HEADER(bcm_host.h,
264          [
265            LIBS="$LIBS -lGLESv2"
266            AC_CHECK_LIB([EGL], [eglGetProcAddress],
267              [
268                LIBS="$LIBS -lEGL"
269                AC_CHECK_HEADER([EGL/egl.h],
270                  [
271                    AC_CHECK_LIB([GLESv2], [glEnable],
272                      [
273                        AC_CHECK_HEADER([GLES2/gl2.h],
274                          [
275                            HAVE_EGL=yes
276                            HAVE_GLES2=yes
277                            HAVE_EGL_RPI=yes
278                            EGL_LIBS="-lbcm_host -lvcos -lvchiq_arm"
279                            EGL_CFLAGS=""
280                            AC_DEFINE(USE_EGL_RPI, [1], [Use RPi platform])
281                          ])
282                      ])
283                  ])
284              ])
285          ])
286      ])
287
288    LIBS=$old_LIBS
289    CFLAGS=$old_CFLAGS
290
291    PKG_CHECK_MODULES(WAYLAND_EGL, wayland-client >= 1.0 wayland-cursor >= 1.0 wayland-egl >= 9.0 wayland-protocols >= 1.15, HAVE_WAYLAND_EGL=yes, HAVE_WAYLAND_EGL=no)
292    AC_CHECK_PROGS(WAYLAND_SCANNER, wayland-scanner)
293    if test x"$HAVE_WAYLAND_EGL" == xyes ; then
294      if test x"$WAYLAND_SCANNER" == x ; then
295        AC_MSG_ERROR([Found Wayland libraries, but couldn't find wayland-scanner binary.])
296      fi
297
298      WAYLAND_PROTOCOLS_DATADIR="`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`"
299      AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $WAYLAND_PROTOCOLS_DATADIR)
300    fi
301
302    # OS X and iOS always have GL available
303    case $host in
304      *-darwin*)
305        if test "x$HAVE_IOS" = "xyes"; then
306          HAVE_GLES2=yes
307        else
308          HAVE_GL=yes
309        fi
310      ;;
311    esac
312  ;;
313esac
314
315CPPFLAGS="$save_CPPFLAGS"
316LIBS="$save_LIBS"
317
318USE_OPENGL=no
319USE_GLES2=no
320USE_GLX=no
321USE_COCOA=no
322USE_WGL=no
323USE_X11=no
324USE_EAGL=no
325GL_LIBS=
326GL_CFLAGS=
327GL_OBJCFLAGS=
328
329dnl Check for what the user asked for and what we could find
330if test "x$HAVE_EGL" = "xno"; then
331  if test "x$NEED_EGL" = "xyes"; then
332    AC_MSG_ERROR([Could not find the required EGL libraries])
333  fi
334fi
335
336if test "x$HAVE_GL" = "xno"; then
337  if test "x$NEED_GL" = "xyes"; then
338    AC_MSG_ERROR([Could not find the required OpenGL libraries])
339  fi
340fi
341
342if test "x$HAVE_GLES2" = "xno"; then
343  if test "x$NEED_GLES2" = "xyes"; then
344    AC_MSG_ERROR([Could not find the required OpenGL|ES 2.0 libraries])
345  fi
346fi
347
348dnl X, GLX and OpenGL
349if test "x$HAVE_X11_XCB" = "xno"; then
350  if test "x$NEED_GLX" = "xyes"; then
351    AC_MSG_ERROR([Building the GLX backend without X11 is unsupported])
352  fi
353  if test "x$NEED_X11" = "xyes"; then
354    AC_MSG_ERROR([Could not find X11 development libraries])
355  fi
356else
357  if test "x$NEED_GL" != "xno"; then
358    if test "x$HAVE_GL" = "xno"; then
359      if test "x$NEED_GLX" = "xyes"; then
360        AC_MSG_ERROR([Building the GLX backend without the OpenGL backend is unsupported])
361      fi
362    else dnl HAVE_GL=yes
363      USE_OPENGL=yes
364      if test "x$NEED_GLX" != "xno"; then
365        USE_GLX=yes
366      fi
367    fi
368  fi
369fi
370
371dnl check for DMABUF support
372HAVE_DRM_FOURCC_HEADER=no
373AC_CHECK_HEADER(libdrm/drm_fourcc.h,
374  HAVE_DRM_FOURCC_HEADER=yes, )
375
376GST_GL_HAVE_DMABUF=0
377if test "x$HAVE_DRM_FOURCC_HEADER" = "xyes" -a \
378        "x$HAVE_EGL" = "xyes"; then
379          GST_GL_HAVE_DMABUF=1
380fi
381
382dnl check for Vivante DirectVIV support
383AC_CHECK_LIB(GLESv2, glTexDirectVIV, [HAVE_VIV_DIRECTVIV=yes], [HAVE_VIV_DIRECTVIV=no])
384
385GST_GL_HAVE_VIV_DIRECTVIV=0
386if test "x$HAVE_VIV_DIRECTVIV" = "xyes"; then
387          GST_GL_HAVE_VIV_DIRECTVIV=1
388fi
389
390dnl check if we can include both GL and GLES2 at the same time
391if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
392  GLES3_H_DEFINE=0
393  GLES3EXT3_H_DEFINE=0
394  if test "x$HAVE_GLES3_H" == "xyes"; then
395    GLES3_H_DEFINE=1
396  fi
397  if test "x$HAVE_GLES3EXT3_H" == "xyes"; then
398    GLES3EXT3_H_DEFINE=1
399  fi
400  GL_INCLUDES="
401#ifdef __GNUC__
402#  pragma GCC diagnostic push
403#  pragma GCC diagnostic ignored \"-Wredundant-decls\"
404#endif
405#ifndef GL_GLEXT_PROTOTYPES
406#define GL_GLEXT_PROTOTYPES 1
407#endif
408# ifdef HAVE_IOS
409#  include <OpenGLES/ES2/gl.h>
410#  include <OpenGLES/ES2/glext.h>
411# else
412#  if $GLES3_H_DEFINE
413#   include <GLES3/gl3.h>
414#   if $GLES3EXT3_H_DEFINE
415#     include <GLES3/gl3ext.h>
416#   endif
417#   include <GLES2/gl2ext.h>
418#  else
419#   include <GLES2/gl2.h>
420#   include <GLES2/gl2ext.h>
421#  endif
422# endif
423# ifdef __APPLE__
424#  include <OpenGL/OpenGL.h>
425#  include <OpenGL/gl.h>
426#  if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
427#   define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
428#   include <OpenGL/gl3.h>
429#  endif
430# else
431#  include <GL/gl.h>
432#  if __WIN32__ || _WIN32
433#   include <GL/glext.h>
434#  endif
435# endif
436int main (int argc, char **argv) { return 0; }
437"
438  AC_MSG_CHECKING([whether it is possible to include both GL and GLES2 headers])
439  save_CFLAGS="$CFLAGS"
440  CFLAGS="$CFLAGS $GL_CFLAGS $GLES2_CFLAGS $WARNING_CFLAGS $ERROR_CFLAGS"
441  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[$GL_INCLUDES]], [[
442    #if !defined(GL_FALSE)
443    #error Failed to include GL headers
444    #endif
445    ]])],[ AC_MSG_RESULT(yes)
446    ],[AC_MSG_RESULT(no)
447    if test "x$NEED_GLES2" = "xyes"; then
448      if test "x$NEED_GL" = "xyes"; then
449        AC_MSG_ERROR([Cannot seem to include both GL and GLES2 headers. Try disabling one API])
450      fi
451      AC_MSG_WARN([Disabling Desktop GL support])
452      HAVE_GL=no
453      USE_OPENGL=no
454    else
455      AC_MSG_WARN([Disabling GL|ES 2.0 support])
456      HAVE_GLES2=no
457      HAVE_GLES3_H=no
458    fi
459  ])
460  CFLAGS="$save_CFLAGS"
461fi
462
463#dnl Check for OpenGL
464echo host is $host
465case $host in
466  *-android*)
467    if test "x$NEED_WGL" = "xyes"; then
468      AC_MSG_ERROR([WGL is not available on Android])
469    fi
470    if test "x$NEED_GLX" = "xyes"; then
471      AC_MSG_ERROR([GLX is not available on Android])
472    fi
473    if test "x$NEED_GL" = "xyes"; then
474      AC_MSG_ERROR([GL is not available on Android])
475    fi
476    if test "x$NEED_X11" = "xyes"; then
477      AC_MSG_ERROR([X11 is not available on Android])
478    fi
479    if test "x$NEED_COCOA" = "xyes"; then
480      AC_MSG_ERROR([Cocoa is not available on Android])
481    fi
482
483    dnl OpenGL|ES 2.0
484    if test "x$HAVE_GLES2" = "xyes"; then
485      if test "x$NEED_GLES2" != "xno"; then
486        GL_LIBS="$GL_LIBS -lGLESv2"
487        USE_GLES2=yes
488      fi
489    fi
490
491    dnl EGL
492    if test "x$HAVE_EGL" = "xyes"; then
493      if test "x$NEED_EGL" != "xno"; then
494        GL_LIBS="$GL_LIBS -lEGL"
495        USE_EGL=yes
496      fi
497    fi
498
499    if test "x$USE_EGL" != "xyes"; then
500      AC_MSG_ERROR([Need EGL on Android])
501    fi
502
503    if test "x$USE_GLES2" != "xyes"; then
504      AC_MSG_ERROR([Need OpenGL|ES 2.0 on Android])
505    fi
506
507    HAVE_WINDOW_ANDROID=yes
508    ;;
509  *-linux* | *-cygwin* | *-solaris* | *-netbsd* | *-freebsd* | *-openbsd* | *-kfreebsd* | *-dragonflybsd* | *-gnu* )
510    if test "x$NEED_WGL" = "xyes"; then
511      AC_MSG_ERROR([WGL is not available on unix])
512    fi
513
514    if test "x$HAVE_X11_XCB" = "xno"; then
515      if test "x$HAVE_WAYLAND_EGL" = "xno"; then
516        AC_MSG_WARN([X or Wayland is required for OpenGL support])
517      fi
518    fi
519
520    dnl check Desktop OpenGL
521    if test "x$HAVE_GL" = "xyes"; then
522      if test "x$NEED_GL" != "xno"; then
523        GL_LIBS="$GL_LIBS -lGL"
524      fi
525    fi
526
527    dnl OpenGL|ES 2.0
528    if test "x$HAVE_GLES2" = "xyes"; then
529      if test "x$NEED_GLES2" != "xno"; then
530        GL_LIBS="$GL_LIBS -lGLESv2"
531        USE_GLES2=yes
532      fi
533    fi
534
535    if test "x$HAVE_GBM_EGL" = "xyes"; then
536      if test "x$NEED_EGL" = "xno" -o "x$HAVE_EGL" = "xno"; then
537        AC_MSG_WARN([EGL is required by the Mesa GBM EGL backend])
538      else
539        HAVE_WINDOW_GBM=yes
540        GL_CFLAGS="$GL_CFLAGS $DRM_CFLAGS $GBM_CFLAGS"
541      fi
542    fi
543
544    if test "x$HAVE_X11_XCB" = "xyes" -a "x$HAVE_EGL_RPI" = "xno"; then
545      if test "x$NEED_X11" != "xno"; then
546        GL_LIBS="$GL_LIBS $X11_XCB_LIBS"
547        GL_CFLAGS="$GL_CFLAGS $X11_XCB_CFLAGS"
548        HAVE_WINDOW_X11=yes
549      fi
550    fi
551
552    if test "x$HAVE_WAYLAND_EGL" = "xyes"; then
553      if test "x$NEED_EGL" = "xno" -o "x$HAVE_EGL" = "xno"; then
554        AC_MSG_WARN([EGL is required by the Wayland backend for OpenGL support])
555      else
556        if test "x$NEED_WAYLAND_EGL" != "xno"; then
557          HAVE_WINDOW_WAYLAND=yes
558          GL_LIBS="$GL_LIBS $WAYLAND_EGL_LIBS"
559          GL_CFLAGS="$GL_CFLAGS $WAYLAND_EGL_CFLAGS"
560        fi
561      fi
562    fi
563
564    if test "x$HAVE_VIV_FB_EGL" = "xyes"; then
565      if test "x$NEED_EGL" = "xno" -o "x$HAVE_EGL" = "xno"; then
566        AC_MSG_WARN([EGL is required by the Vivante EGL FB backend])
567      else
568        HAVE_WINDOW_VIV_FB=yes
569        GL_LIBS="$GL_LIBS"
570        GL_CFLAGS="$GL_CFLAGS"
571      fi
572    fi
573
574    if test "x$HAVE_EGL_RPI" = "xyes"; then
575      if test "x$NEED_DISPMANX" != "xno"; then
576        HAVE_WINDOW_DISPMANX=yes
577        USE_EGL=yes
578      fi
579    fi
580
581    dnl EGL
582    if test "x$HAVE_EGL" = "xno"; then
583      if test "x$HAVE_GL" = "xno"; then
584        AC_MSG_WARN([Building requires either EGL or GLX for OpenGL support])
585      fi
586    else
587      if test "x$NEED_EGL" != "xno"; then
588        if test "x$HAVE_WINDOW_WAYLAND" = "xyes" -o "x$HAVE_WINDOW_X11" = "xyes" -o "x$HAVE_WINDOW_DISPMANX" = "xyes" -o "x$HAVE_WINDOW_VIV_FB" = "xyes" -o "x$HAVE_WINDOW_GBM" = "xyes"; then
589          GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
590          GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
591          USE_EGL=yes
592        fi
593      fi
594    fi
595    ;;
596  *-darwin*)
597    if test "x$HAVE_IOS" = "xyes"; then
598      if test "x$NEED_WGL" = "xyes"; then
599        AC_MSG_ERROR([WGL is not available on iOS])
600      fi
601      if test "x$NEED_GLX" = "xyes"; then
602        AC_MSG_ERROR([GLX is not available on iOS])
603      fi
604      if test "x$NEED_GL" = "xyes"; then
605        AC_MSG_ERROR([GL is not available on iOS])
606      fi
607      if test "x$NEED_X11" = "xyes"; then
608        AC_MSG_ERROR([X11 is not available on iOS])
609      fi
610      if test "x$NEED_COCOA" = "xyes"; then
611        AC_MSG_ERROR([Cocoa is not available on iOS])
612      fi
613      if test "x$NEED_EGL" = "xyes"; then
614        AC_MSG_ERROR([EGL is not available on iOS])
615      fi
616
617      GL_LIBS="$LIBS -framework OpenGLES -framework QuartzCore -framework UIKit -framework CoreGraphics -framework CoreFoundation -framework Foundation"
618      GL_CFLAGS="$GL_CFLAGS"
619      USE_GLES2=yes
620      USE_EAGL=yes
621      HAVE_WINDOW_EAGL=yes
622
623      ac_cv_type_GLsizeiptr=yes
624      ac_cv_type_GLintptr=yes
625      ac_cv_type_GLchar=yes
626    else
627      dnl Only osx supports cocoa.
628      if test "x$NEED_WGL" = "xyes"; then
629        AC_MSG_ERROR([WGL is not available on Mac OS X])
630      fi
631
632      if test "x$NEED_COCOA" != "xno"; then
633        GL_LIBS="$LIBS -framework OpenGL -framework Cocoa -framework QuartzCore -framework CoreFoundation"
634        GL_CFLAGS="$GL_CFLAGS"
635        USE_COCOA=yes
636        HAVE_WINDOW_COCOA=yes
637        USE_OPENGL=yes
638      fi
639
640      if test "x$USE_GLX" = "xyes"; then
641        if test "x$HAVE_X11_XCB" = "xyes"; then
642          if test "x$NEED_X11" != "xno"; then
643            GL_LIBS="$GL_LIBS $X11_XCB_LIBS"
644            GL_CFLAGS="$GL_CFLAGS $X11_XCB_CFLAGS"
645            HAVE_WINDOW_X11=yes
646          fi
647        fi
648
649        if test "x$HAVE_GL" = "xyes"; then
650          if test "x$NEED_GL" != "xno"; then
651            GL_LIBS="$GL_LIBS -lGL"
652          fi
653          USE_OPENGL=yes
654        fi
655      fi
656
657      if test "x$HAVE_EGL" = "xyes"; then
658        if test "x$NEED_EGL" != "xno"; then
659          if test "x$HAVE_WINDOW_X11" = "xyes"; then
660            GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
661            GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
662            USE_EGL=yes
663          fi
664        fi
665      fi
666
667      dnl OpenGL|ES 2.0
668      if test "x$HAVE_GLES2" = "xyes"; then
669        if test "x$NEED_GLES2" != "xno"; then
670          GL_LIBS="$GL_LIBS -lGLESv2"
671          USE_GLES2=yes
672        fi
673      fi
674    fi
675    ;;
676  *-mingw32*)
677    if test "x$NEED_GLX" = "xyes"; then
678      AC_MSG_ERROR([GLX is not available on Windows])
679    fi
680    if test "x$NEED_GLES2" = "xyes"; then
681      AC_MSG_ERROR([OpenGL|ES 2.0 is not supported on your platform yet])
682    fi
683
684    if test "x$HAVE_GL" = "xyes"; then
685      if test "x$NEED_GL" != "xno"; then
686        if test "x$HAVE_WGL" = "xyes"; then
687          if test "$NEED_WGL" != "xno"; then
688            GL_LIBS="$GL_LIBS -lgdi32 -lopengl32"
689            HAVE_WINDOW_WIN32=yes
690            USE_OPENGL=yes
691            USE_WGL=yes
692          fi
693        fi
694      fi
695    fi
696    ;;
697  *)
698    AC_MSG_WARN([Don't know how to check for OpenGL on your platform.])
699    ;;
700esac
701
702GL_PLATFORMS=
703GL_WINDOWS=
704GL_APIS=
705GL_CONFIG_DEFINES=
706
707dnl APIs
708
709GST_GL_HAVE_OPENGL=0
710GST_GL_HAVE_GLES2=0
711GST_GL_HAVE_GLES3=0
712GST_GL_HAVE_GLES3EXT3_H=0
713
714if test "x$USE_OPENGL" = "xyes"; then
715  GL_APIS="gl $GL_APIS"
716  GST_GL_HAVE_OPENGL=1
717fi
718if test "x$USE_GLES2" = "xyes"; then
719  GL_APIS="gles2 $GL_APIS"
720  GST_GL_HAVE_GLES2=1
721  if test "x$HAVE_GLES3_H" = "xyes"; then
722    GST_GL_HAVE_GLES3=1
723    if test "x$HAVE_GLES3EXT3_H" = "xyes"; then
724      GST_GL_HAVE_GLES3EXT3_H=1
725    fi
726  fi
727fi
728
729GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
730#define GST_GL_HAVE_OPENGL $GST_GL_HAVE_OPENGL
731#define GST_GL_HAVE_GLES2 $GST_GL_HAVE_GLES2
732#define GST_GL_HAVE_GLES3 $GST_GL_HAVE_GLES3
733#define GST_GL_HAVE_GLES3EXT3_H $GST_GL_HAVE_GLES3EXT3_H
734"
735
736dnl WINDOW's
737
738GST_GL_HAVE_WINDOW_X11=0
739GST_GL_HAVE_WINDOW_COCOA=0
740GST_GL_HAVE_WINDOW_WIN32=0
741GST_GL_HAVE_WINDOW_WAYLAND=0
742GST_GL_HAVE_WINDOW_ANDROID=0
743GST_GL_HAVE_WINDOW_DISPMANX=0
744GST_GL_HAVE_WINDOW_EAGL=0
745GST_GL_HAVE_WINDOW_VIV_FB=0
746GST_GL_HAVE_WINDOW_GBM=0
747
748if test "x$HAVE_WINDOW_X11" = "xyes"; then
749  GL_WINDOWS="x11 $GL_WINDOWS"
750  GST_GL_HAVE_WINDOW_X11=1
751fi
752if test "x$HAVE_WINDOW_COCOA" = "xyes"; then
753  GL_WINDOWS="cocoa $GL_WINDOWS"
754  GST_GL_HAVE_WINDOW_COCOA=1
755fi
756if test "x$HAVE_WINDOW_WIN32" = "xyes"; then
757  GL_WINDOWS="win32 $GL_WINDOWS"
758  GST_GL_HAVE_WINDOW_WIN32=1
759fi
760if test "x$HAVE_WINDOW_WAYLAND" = "xyes"; then
761  GL_WINDOWS="wayland $GL_WINDOWS"
762  GST_GL_HAVE_WINDOW_WAYLAND=1
763fi
764if test "x$HAVE_WINDOW_ANDROID" = "xyes"; then
765  GL_WINDOWS="android $GL_WINDOWS"
766  GST_GL_HAVE_WINDOW_ANDROID=1
767fi
768if test "x$HAVE_WINDOW_DISPMANX" = "xyes"; then
769  GL_WINDOWS="dispmanx $GL_WINDOWS"
770  GST_GL_HAVE_WINDOW_DISPMANX=1
771fi
772if test "x$HAVE_WINDOW_EAGL" = "xyes"; then
773  GL_WINDOWS="eagl $GL_WINDOWS"
774  GST_GL_HAVE_WINDOW_EAGL=1
775fi
776if test "x$HAVE_WINDOW_VIV_FB" = "xyes"; then
777  GL_WINDOWS="viv-fb $GL_WINDOWS"
778  GST_GL_HAVE_WINDOW_VIV_FB=1
779fi
780if test "x$HAVE_WINDOW_GBM" = "xyes"; then
781  GL_WINDOWS="gbm $GL_WINDOWS"
782  GST_GL_HAVE_WINDOW_GBM=1
783fi
784
785GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
786#define GST_GL_HAVE_WINDOW_X11 $GST_GL_HAVE_WINDOW_X11
787#define GST_GL_HAVE_WINDOW_COCOA $GST_GL_HAVE_WINDOW_COCOA
788#define GST_GL_HAVE_WINDOW_WIN32 $GST_GL_HAVE_WINDOW_WIN32
789#define GST_GL_HAVE_WINDOW_WAYLAND $GST_GL_HAVE_WINDOW_WAYLAND
790#define GST_GL_HAVE_WINDOW_ANDROID $GST_GL_HAVE_WINDOW_ANDROID
791#define GST_GL_HAVE_WINDOW_DISPMANX $GST_GL_HAVE_WINDOW_DISPMANX
792#define GST_GL_HAVE_WINDOW_EAGL $GST_GL_HAVE_WINDOW_EAGL
793#define GST_GL_HAVE_WINDOW_VIV_FB $GST_GL_HAVE_WINDOW_VIV_FB
794#define GST_GL_HAVE_WINDOW_GBM $GST_GL_HAVE_WINDOW_GBM
795"
796
797dnl PLATFORM's
798
799GST_GL_HAVE_PLATFORM_EGL=0
800GST_GL_HAVE_PLATFORM_GLX=0
801GST_GL_HAVE_PLATFORM_WGL=0
802GST_GL_HAVE_PLATFORM_CGL=0
803GST_GL_HAVE_PLATFORM_EAGL=0
804
805if test "x$USE_EGL" = "xyes"; then
806  GL_PLATFORMS="egl $GL_PLATFORMS"
807  GST_GL_HAVE_PLATFORM_EGL=1
808fi
809if test "x$USE_GLX" = "xyes"; then
810  GL_PLATFORMS="glx $GL_PLATFORMS"
811  GST_GL_HAVE_PLATFORM_GLX=1
812fi
813if test "x$USE_WGL" = "xyes"; then
814  GL_PLATFORMS="wgl $GL_PLATFORMS"
815  GST_GL_HAVE_PLATFORM_WGL=1
816fi
817if test "x$USE_COCOA" = "xyes"; then
818  GL_PLATFORMS="cgl $GL_PLATFORMS"
819  GST_GL_HAVE_PLATFORM_CGL=1
820fi
821if test "x$USE_EAGL" = "xyes"; then
822  GL_PLATFORMS="eagl $GL_PLATFORMS"
823  GST_GL_HAVE_PLATFORM_EAGL=1
824fi
825
826GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
827#define GST_GL_HAVE_PLATFORM_EGL $GST_GL_HAVE_PLATFORM_EGL
828#define GST_GL_HAVE_PLATFORM_GLX $GST_GL_HAVE_PLATFORM_GLX
829#define GST_GL_HAVE_PLATFORM_WGL $GST_GL_HAVE_PLATFORM_WGL
830#define GST_GL_HAVE_PLATFORM_CGL $GST_GL_HAVE_PLATFORM_CGL
831#define GST_GL_HAVE_PLATFORM_EAGL $GST_GL_HAVE_PLATFORM_EAGL
832"
833
834GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
835#define GST_GL_HAVE_DMABUF $GST_GL_HAVE_DMABUF
836#define GST_GL_HAVE_VIV_DIRECTVIV $GST_GL_HAVE_VIV_DIRECTVIV
837"
838
839dnl Check for no platforms/window systems
840if test "x$GL_APIS" = "x"; then
841  AC_MSG_WARN([Either OpenGL or OpenGL|ES is required for OpenGL support])
842fi
843if test "x$GL_PLATFORMS" = "x"; then
844  AC_MSG_WARN([Could not find any OpenGL platforms to use such as CGL, WGL or GLX])
845fi
846if test "x$GL_WINDOWS" = "x"; then
847  AC_MSG_WARN([Could not find any window systems to use such as Cocoa, Win32API or X11])
848fi
849
850if test "x$GL_APIS" = "x" -o "x$GL_PLATFORMS" = "x" -o "x$GL_WINDOWS" = "x"; then
851  GL_LIBS=
852  GL_CFLAGS=
853  GL_OBJCFLAGS=
854  USE_OPENGL=no
855  USE_GLES2=no
856  USE_GLX=no
857  USE_EGL=no
858  USE_WGL=no
859  USE_COCOA=no
860  USE_EGL_MALI=no
861  USE_EGL_RPI=no
862  USE_EAGL=no
863
864  HAVE_WINDOW_X11=no
865  HAVE_WINDOW_WIN32=no
866  HAVE_WINDOW_DISPMANX=no
867  HAVE_WINDOW_WAYLAND=no
868  HAVE_WINDOW_ANDROID=no
869  HAVE_WINDOW_COCOA=no
870  HAVE_WINDOW_EAGL=no
871  HAVE_WINDOW_VIV_FB=no
872  HAVE_WINDOW_GBM=no
873fi
874
875AC_SUBST(GL_APIS)
876AC_SUBST(GL_PLATFORMS)
877AC_SUBST(GL_WINDOWS)
878AC_SUBST(GL_LIBS)
879AC_SUBST(GL_CFLAGS)
880AC_SUBST(GL_OBJCFLAGS)
881AC_SUBST(USE_OPENGL)
882AC_SUBST(USE_GLES2)
883
884AM_CONDITIONAL(HAVE_WINDOW_X11, test "x$HAVE_WINDOW_X11" = "xyes")
885AM_CONDITIONAL(HAVE_WINDOW_COCOA, test "x$HAVE_WINDOW_COCOA" = "xyes")
886AM_CONDITIONAL(HAVE_WINDOW_WIN32, test "x$HAVE_WINDOW_WIN32" = "xyes")
887AM_CONDITIONAL(HAVE_WINDOW_DISPMANX, test "x$HAVE_WINDOW_DISPMANX" = "xyes")
888AM_CONDITIONAL(HAVE_WINDOW_WAYLAND, test "x$HAVE_WINDOW_WAYLAND" = "xyes")
889AM_CONDITIONAL(HAVE_WINDOW_ANDROID, test "x$HAVE_WINDOW_ANDROID" = "xyes")
890AM_CONDITIONAL(HAVE_WINDOW_EAGL, test "x$HAVE_WINDOW_EAGL" = "xyes")
891AM_CONDITIONAL(HAVE_WINDOW_VIV_FB, test "x$HAVE_WINDOW_VIV_FB" = "xyes")
892AM_CONDITIONAL(HAVE_WINDOW_GBM, test "x$HAVE_WINDOW_GBM" = "xyes")
893
894AM_CONDITIONAL(USE_OPENGL, test "x$USE_OPENGL" = "xyes")
895AM_CONDITIONAL(USE_GLES2, test "x$USE_GLES2" = "xyes")
896AM_CONDITIONAL(USE_GLX, test "x$USE_GLX" = "xyes")
897AM_CONDITIONAL(USE_EGL, test "x$USE_EGL" = "xyes")
898AM_CONDITIONAL(USE_WGL, test "x$USE_WGL" = "xyes")
899AM_CONDITIONAL(USE_COCOA, test "x$USE_COCOA" = "xyes")
900AM_CONDITIONAL(USE_EGL_MALI, test "x$USE_EGL_MALI" = "xyes")
901AM_CONDITIONAL(USE_EGL_RPI, test "x$USE_EGL_RPI" = "xyes")
902AM_CONDITIONAL(USE_EAGL, test "x$USE_EAGL" = "xyes")
903
904AM_CONDITIONAL(HAVE_GST_GL, test "x$USE_OPENGL" = "xyes" -o "x$USE_GLES2" = "xyes")
905
906dnl Check for some types that are not always present
907GL_INCLUDES=""
908if test "x$USE_GLES2" = "xyes"; then
909  GL_INCLUDES="$GL_INCLUDES
910#ifndef GL_GLEXT_PROTOTYPES
911#define GL_GLEXT_PROTOTYPES 1
912#endif
913# ifdef HAVE_IOS
914#  include <OpenGLES/ES2/gl.h>
915#  include <OpenGLES/ES2/glext.h>
916# else
917#  if $GST_GL_HAVE_GLES3
918#   include <GLES3/gl3.h>
919#   if $GST_GL_HAVE_GLES3EXT3_H
920#    include <GLES3/gl3ext.h>
921#   endif
922#   include <GLES2/gl2ext.h>
923#  else
924#   include <GLES2/gl2.h>
925#   include <GLES2/gl2ext.h>
926#  endif
927# endif
928"
929fi
930
931if test "x$USE_OPENGL" = "xyes"; then
932  GL_INCLUDES="$GL_INCLUDES
933# ifdef __APPLE__
934#  include <OpenGL/OpenGL.h>
935#  include <OpenGL/gl.h>
936# else
937#  include <GL/gl.h>
938#  if __WIN32__ || _WIN32
939#   include <GL/glext.h>
940#  endif
941# endif
942"
943fi
944
945GST_GL_HAVE_GLEGLIMAGEOES=0
946GST_GL_HAVE_GLCHAR=0
947GST_GL_HAVE_GLSIZEIPTR=0
948GST_GL_HAVE_GLINTPTR=0
949GST_GL_HAVE_GLSYNC=0
950GST_GL_HAVE_GLUINT64=0
951GST_GL_HAVE_GLINT64=0
952GST_GL_HAVE_EGLATTRIB=0
953GST_GL_HAVE_EGLUINT64KHR=0
954
955old_CFLAGS=$CFLAGS
956CFLAGS="$GL_CFLAGS $CFLAGS"
957
958AC_CHECK_TYPES(GLeglImageOES, [], [], [[$GL_INCLUDES]])
959if test "x$ac_cv_type_GLeglImageOES" = "xyes"; then
960  GST_GL_HAVE_GLEGLIMAGEOES=1
961fi
962
963AC_CHECK_TYPES(GLchar, [], [], [[$GL_INCLUDES]])
964if test "x$ac_cv_type_GLchar" = "xyes"; then
965  GST_GL_HAVE_GLCHAR=1
966fi
967
968AC_CHECK_TYPES(GLsizeiptr, [], [], [[$GL_INCLUDES]])
969if test "x$ac_cv_type_GLsizeiptr" = "xyes"; then
970  GST_GL_HAVE_GLSIZEIPTR=1
971fi
972
973AC_CHECK_TYPES(GLintptr, [], [], [[$GL_INCLUDES]])
974if test "x$ac_cv_type_GLintptr" = "xyes"; then
975  GST_GL_HAVE_GLINTPTR=1
976fi
977
978AC_CHECK_TYPES(GLsync, [], [], [[$GL_INCLUDES]])
979if test "x$ac_cv_type_GLsync" = "xyes"; then
980  GST_GL_HAVE_GLSYNC=1
981fi
982
983AC_CHECK_TYPES(GLuint64, [], [], [[$GL_INCLUDES]])
984if test "x$ac_cv_type_GLuint64" = "xyes"; then
985  GST_GL_HAVE_GLUINT64=1
986fi
987
988AC_CHECK_TYPES(GLint64, [], [], [[$GL_INCLUDES]])
989if test "x$ac_cv_type_GLint64" = "xyes"; then
990  GST_GL_HAVE_GLINT64=1
991fi
992
993if test "x$USE_EGL" = "xyes"; then
994  EGL_INCLUDES="$GL_INCLUDES
995  #include <EGL/egl.h>
996  #include <EGL/eglext.h>
997  "
998  AC_CHECK_TYPES(EGLAttrib, [], [], [[$EGL_INCLUDES]])
999  if test "x$ac_cv_type_EGLAttrib" = "xyes"; then
1000    GST_GL_HAVE_EGLATTRIB=1
1001  fi
1002
1003  AC_CHECK_TYPES(EGLuint64KHR, [], [], [[$EGL_INCLUDES]])
1004  if test "x$ac_cv_type_EGLuint64KHR" = "xyes"; then
1005    GST_GL_HAVE_EGLUINT64KHR=1
1006  fi
1007fi
1008
1009CFLAGS=$old_CFLAGS
1010
1011GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1012#define GST_GL_HAVE_GLEGLIMAGEOES $GST_GL_HAVE_GLEGLIMAGEOES
1013#define GST_GL_HAVE_GLCHAR $GST_GL_HAVE_GLCHAR
1014#define GST_GL_HAVE_GLSIZEIPTR $GST_GL_HAVE_GLSIZEIPTR
1015#define GST_GL_HAVE_GLINTPTR $GST_GL_HAVE_GLINTPTR
1016#define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
1017#define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
1018#define GST_GL_HAVE_GLINT64 $GST_GL_HAVE_GLINT64
1019#define GST_GL_HAVE_EGLATTRIB $GST_GL_HAVE_EGLATTRIB
1020#define GST_GL_HAVE_EGLUINT64KHR $GST_GL_HAVE_EGLUINT64KHR
1021"
1022
1023AC_CONFIG_COMMANDS([gst-libs/gst/gl/gstglconfig.h], [
1024	outfile=gstglconfig.h-tmp
1025	cat > $outfile <<\_______EOF
1026/* gstglconfig.h
1027 *
1028 * This is a generated file.  Please modify `configure.ac'
1029 */
1030
1031#ifndef __GST_GL_CONFIG_H__
1032#define __GST_GL_CONFIG_H__
1033
1034#include <gst/gst.h>
1035
1036G_BEGIN_DECLS
1037
1038_______EOF
1039
1040	cat >>$outfile <<_______EOF
1041$gl_config_defines
1042_______EOF
1043
1044	cat >>$outfile <<_______EOF
1045
1046G_END_DECLS
1047
1048#endif  /* __GST_GL_CONFIG_H__ */
1049_______EOF
1050
1051
1052	if cmp -s $outfile gst-libs/gst/gl/gstglconfig.h; then
1053          AC_MSG_NOTICE([gst-libs/gst/gl/gstglconfig.h is unchanged])
1054	  rm -f $outfile
1055	else
1056	  mv $outfile gst-libs/gst/gl/gstglconfig.h
1057	fi
1058],[
1059gl_config_defines='$GL_CONFIG_DEFINES'
1060])
1061
1062])
1063
1064dnl --------------------------------------------------------------------------
1065dnl GStreamer OpenGL plugin-related checks (ext/opengl)
1066dnl --------------------------------------------------------------------------
1067dnl FIXME: make these checks conditional to the opengl plugin being enabled
1068
1069AC_DEFUN([AG_GST_GL_PLUGIN_CHECKS],
1070[
1071
1072dnl graphene-1.0 is optional and used in gltransformation
1073HAVE_GRAPHENE=NO
1074PKG_CHECK_MODULES(GRAPHENE, graphene-1.0 >= 1.4.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
1075if test "x$HAVE_GRAPHENE" = "xyes"; then
1076  AC_DEFINE(HAVE_GRAPHENE, [1] , [Use graphene])
1077fi
1078AC_SUBST(HAVE_GRAPHENE)
1079AC_SUBST(GRAPHENE_LIBS)
1080AC_SUBST(GRAPHENE_CFLAGS)
1081
1082dnl Needed by plugins that use g_module_*() API
1083PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0)
1084
1085dnl libpng is optional
1086if test "x$NEED_PNG" != "xno"; then
1087  PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no)
1088  if test "x$HAVE_PNG" = "xyes"; then
1089    AC_DEFINE(HAVE_PNG, [1] , [Use libpng])
1090  elif test "x$NEED_PNG" = "xyes"; then
1091    AC_MSG_ERROR([libpng support requested but libpng is not available])
1092  fi
1093fi
1094AC_SUBST(HAVE_PNG)
1095AC_SUBST(LIBPNG_LIBS)
1096AC_SUBST(LIBPNG_CFLAGS)
1097
1098dnl libjpeg is optional
1099AC_ARG_WITH(jpeg-mmx, [  --with-jpeg-mmx, path to MMX'ified JPEG library])
1100if test "x$NEED_JPEG" != "xno"; then
1101  OLD_LIBS="$LIBS"
1102  if test x$with_jpeg_mmx != x; then
1103    LIBS="$LIBS -L$with_jpeg_mmx"
1104  fi
1105  AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1106  JPEG_LIBS="$LIBS -ljpeg-mmx"
1107  LIBS="$OLD_LIBS"
1108  if test x$HAVE_JPEG != xyes; then
1109    JPEG_LIBS="-ljpeg"
1110    AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1111  fi
1112
1113  if test x$HAVE_JPEG = xyes; then
1114    AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg])
1115  elif test "x$NEED_JPEG" = "xyes"; then
1116    AC_MSG_ERROR([libjpeg support requested but libjpeg is not available])
1117  else
1118    JPEG_LIBS=
1119  fi
1120  AC_SUBST(JPEG_LIBS)
1121  AC_SUBST(HAVE_JPEG)
1122fi
1123])
1124
1125dnl --------------------------------------------------------------------------
1126dnl GStreamer OpenGL examples-related checks (tests/examples/gl)
1127dnl --------------------------------------------------------------------------
1128
1129AC_DEFUN([AG_GST_GL_EXAMPLES_CHECKS],
1130[
1131
1132dnl sdl is optional and used in examples
1133HAVE_SDL=NO
1134if test "x$BUILD_EXAMPLES" = "xyes"; then
1135  PKG_CHECK_MODULES(SDL, sdl >= 1.2.0, HAVE_SDL=yes, HAVE_SDL=no)
1136  AC_SUBST(SDL_LIBS)
1137  AC_SUBST(SDL_CFLAGS)
1138fi
1139AM_CONDITIONAL(HAVE_SDL, test "x$HAVE_SDL" = "xyes")
1140
1141])
1142