vlc | branch: master | Alexandre Janniaux <[email protected]> | Mon Jun 29 13:17:30 2020 +0200| [da1853b2c2db853f337dc95dbf0164922d050a1b] | committer: Alexandre Janniaux
opengl: split into convenience library Create a libvlc_opengl and libvlc_opengles library that are built only if one other target is needing it, avoiding to compile the OpenGL code once per module using it and removing the need for OPENGL_COMMON* vars. As the fact we're using OpenGL or OpenGL ES is defined at compile time, the clients must use the correct variant depending on what they use. In addition, this patch refactor the glesv2 detection in order to enable both the gles2 display plugin and the libvlc_opengles.la target which must not be built on Windows target for example. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=da1853b2c2db853f337dc95dbf0164922d050a1b --- configure.ac | 9 +++++++- modules/video_output/Makefile.am | 24 ++++++++++----------- modules/video_output/opengl/Makefile.am | 38 ++++++++++++++++++++++++++------- 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/configure.ac b/configure.ac index e6fb7da932..7739761783 100644 --- a/configure.ac +++ b/configure.ac @@ -3311,7 +3311,14 @@ AS_IF([test "${have_gl}" = "yes"], [ ]) dnl OpenGL ES 2: depends on EGL 1.1 -PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled]) +have_gles2="no" +AC_ARG_ENABLE(gles2, + [AS_HELP_STRING([--enable-gles2], + [enable GLES2 support (default disabled)])]) +AS_IF([test "$enable_gles2" = "yes"], [ + PKG_CHECK_MODULES([GLES2], [glesv2], [have_gles2="yes"], []) + ]) +AM_CONDITIONAL([HAVE_GLES2], [test "${have_gles2}" = "yes"]) dnl dnl Vulkan diff --git a/modules/video_output/Makefile.am b/modules/video_output/Makefile.am index f7f3196a98..83fc2bf96a 100644 --- a/modules/video_output/Makefile.am +++ b/modules/video_output/Makefile.am @@ -27,15 +27,15 @@ libglinterop_cvpx_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' \ -Wl,-framework,Foundation,-framework,CoreVideo if HAVE_OSX -libvout_macosx_plugin_la_SOURCES = video_output/macosx.m $(OPENGL_COMMONSOURCES) -libvout_macosx_plugin_la_CFLAGS = $(AM_CFLAGS) $(OPENGL_COMMONCFLAGS) -DHAVE_GL_CORE_SYMBOLS -libvout_macosx_plugin_la_LIBADD = $(OPENGL_COMMONLIBS) +libvout_macosx_plugin_la_SOURCES = video_output/macosx.m +libvout_macosx_plugin_la_CFLAGS = $(AM_CFLAGS) -DHAVE_GL_CORE_SYMBOLS +libvout_macosx_plugin_la_LIBADD = libvlc_opengl.la libvout_macosx_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' \ -Wl,-framework,OpenGL,-framework,Cocoa -libcaopengllayer_plugin_la_SOURCES = video_output/caopengllayer.m $(OPENGL_COMMONSOURCES) -libcaopengllayer_plugin_la_CFLAGS = $(AM_CFLAGS) $(OPENGL_COMMONCFLAGS) -DHAVE_GL_CORE_SYMBOLS -libcaopengllayer_plugin_la_LIBADD = $(OPENGL_COMMONLIBS) +libcaopengllayer_plugin_la_SOURCES = video_output/caopengllayer.m +libcaopengllayer_plugin_la_CFLAGS = $(AM_CFLAGS) -DHAVE_GL_CORE_SYMBOLS +libcaopengllayer_plugin_la_LIBADD = libvlc_opengl.la libcaopengllayer_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' \ -Wl,-framework,OpenGL,-framework,Cocoa,-framework,QuartzCore @@ -47,9 +47,9 @@ if HAVE_IOS libglinterop_cvpx_plugin_la_CFLAGS = $(AM_CFLAGS) -DUSE_OPENGL_ES2 endif -libvout_ios_plugin_la_SOURCES = video_output/ios.m $(OPENGL_COMMONSOURCES) +libvout_ios_plugin_la_SOURCES = video_output/ios.m libvout_ios_plugin_la_CFLAGS = $(AM_CFLAGS) $(OPENGL_COMMONCFLAGS) -DUSE_OPENGL_ES2 -libvout_ios_plugin_la_LIBADD = $(OPENGL_COMMONLIBS) +libvout_ios_plugin_la_LIBADD = libvlc_opengles.la libvout_ios_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' \ -Wl,-framework,Foundation,-framework,OpenGLES,-framework,QuartzCore,-framework,UIKit if HAVE_IOS @@ -137,19 +137,19 @@ libdirect3d11_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' vout_LTLIBRARIES += $(LTLIBdirect3d11) EXTRA_LTLIBRARIES += libdirect3d11_plugin.la -libglwin32_plugin_la_SOURCES = $(OPENGL_COMMONSOURCES) \ +libglwin32_plugin_la_SOURCES = \ video_output/win32/glwin32.c \ video_output/win32/common.c video_output/win32/common.h \ video_output/win32/events.c video_output/win32/events.h \ video_output/win32/sensors.cpp \ video_output/win32/win32touch.c video_output/win32/win32touch.h -libwgl_plugin_la_SOURCES = video_output/win32/wgl.c $(OPENGL_COMMONSOURCES) +libwgl_plugin_la_SOURCES = video_output/win32/wgl.c libglwin32_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) \ -DMODULE_NAME_IS_glwin32 -libglwin32_plugin_la_LIBADD = libchroma_copy.la -lopengl32 -lgdi32 $(LIBCOM) -luuid $(OPENGL_COMMONLIBS) -libwgl_plugin_la_LIBADD = -lopengl32 -lgdi32 $(OPENGL_COMMONLIBS) +libglwin32_plugin_la_LIBADD = libchroma_copy.la -lopengl32 -lgdi32 $(LIBCOM) -luuid libvlc_opengl.la +libwgl_plugin_la_LIBADD = -lopengl32 -lgdi32 libvlc_opengl.la libglwin32_plugin_la_CFLAGS = $(AM_CFLAGS) $(OPENGL_COMMONCFLAGS) -DHAVE_GL_CORE_SYMBOLS libwgl_plugin_la_CFLAGS = $(AM_CFLAGS) $(OPENGL_COMMONCFLAGS) diff --git a/modules/video_output/opengl/Makefile.am b/modules/video_output/opengl/Makefile.am index c06195bbca..a11bcdf3ee 100644 --- a/modules/video_output/opengl/Makefile.am +++ b/modules/video_output/opengl/Makefile.am @@ -22,18 +22,40 @@ endif OPENGL_COMMONCFLAGS = $(LIBPLACEBO_CFLAGS) OPENGL_COMMONLIBS = $(LIBPLACEBO_LIBS) +# Convenience library for OpenGL components -- OpenGL only +libvlc_opengl_la_SOURCES = $(OPENGL_COMMONSOURCES) +libvlc_opengl_la_CFLAGS = $(OPENGL_COMMONCFLAGS) +libvlc_opengl_la_LIBADD = $(OPENGL_COMMONLIBS) $(LIBM) +libvlc_opengl_la_LDFLAGS = -static -no-undefined + +if HAVE_GL +noinst_LTLIBRARIES += libvlc_opengl.la +endif + +# Convenience library for OpenGL components -- OpenGL ES only +libvlc_opengles_la_SOURCES = $(OPENGL_COMMONSOURCES) +libvlc_opengles_la_CFLAGS = $(OPENGL_COMMONCFLAGS) -DUSE_OPENGL_ES2 +libvlc_opengles_la_LIBADD = $(OPENGL_COMMONLIBS) $(LIBM) +libvlc_opengles_la_LDFLAGS = -static -no-undefined + +libvlc_opengles_la_CFLAGS += $(GLES2_CFLAGS) +libvlc_opengles_la_LIBADD += $(GLES2_LIBS) +if HAVE_GLES2 +noinst_LTLIBRARIES += libvlc_opengles.la +endif + ### OpenGL ### -libgles2_plugin_la_SOURCES = $(OPENGL_COMMONSOURCES) video_output/opengl/display.c -libgles2_plugin_la_CFLAGS = $(AM_CFLAGS) $(GLES2_CFLAGS) -DUSE_OPENGL_ES2 $(OPENGL_COMMONCFLAGS) -libgles2_plugin_la_LIBADD = $(GLES2_LIBS) $(LIBM) $(OPENGL_COMMONLIBS) +libgles2_plugin_la_SOURCES = video_output/opengl/display.c +libgles2_plugin_la_CFLAGS = $(AM_CFLAGS) $(GLES2_CFLAGS) -DUSE_OPENGL_ES2 +libgles2_plugin_la_LIBADD = $(GLES2_LIBS) libvlc_opengles.la libgles2_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' +if HAVE_GLES2 +vout_LTLIBRARIES += libgles2_plugin.la +endif -EXTRA_LTLIBRARIES += libgles2_plugin.la -vout_LTLIBRARIES += $(LTLIBgles2) - -libgl_plugin_la_SOURCES = $(OPENGL_COMMONSOURCES) video_output/opengl/display.c +libgl_plugin_la_SOURCES = video_output/opengl/display.c libgl_plugin_la_CFLAGS = $(AM_CFLAGS) $(GL_CFLAGS) $(OPENGL_COMMONCFLAGS) -libgl_plugin_la_LIBADD = $(LIBM) $(OPENGL_COMMONLIBS) +libgl_plugin_la_LIBADD = libvlc_opengl.la if HAVE_WIN32 libgl_plugin_la_CFLAGS += -DHAVE_GL_CORE_SYMBOLS libgl_plugin_la_LIBADD += $(GL_LIBS) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
