From 3b2074aa710a095c2379702334bfa125bcc1990a Mon Sep 17 00:00:00 2001 From: Florent Revest Date: Wed, 22 Jul 2015 18:50:13 +0200 Subject: [PATCH] Adds support of the eglfs module in the autotools config --- Makefile.am | 4 ++++ configure.ac | 19 +++++++++++++++++ m4/evas_check_engine.m4 | 43 ++++++++++++++++++++++++++++++++++++++ pc/.gitignore | 1 + pc/evas-eglfs.pc.in | 3 +++ src/Makefile_Ecore_Evas.am | 5 ++++- src/Makefile_Evas.am | 42 +++++++++++++++++++++++++++++++++++++ 7 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 pc/evas-eglfs.pc.in diff --git a/Makefile.am b/Makefile.am index 56c298cb0b..0c9b634bb9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -179,6 +179,10 @@ if BUILD_ENGINE_FB pkgconfig_DATA += pc/evas-fb.pc endif +if BUILD_ENGINE_EGLFS +pkgconfig_DATA += pc/evas-eglfs.pc +endif + if BUILD_ENGINE_BUFFER pkgconfig_DATA += pc/evas-software-buffer.pc endif diff --git a/configure.ac b/configure.ac index 7975e55755..b1e3896e23 100644 --- a/configure.ac +++ b/configure.ac @@ -1415,6 +1415,19 @@ AC_ARG_ENABLE([fb], ], [want_fb="no"]) +# Eglfs +AC_ARG_ENABLE([eglfs], + [AS_HELP_STRING([--enable-eglfs],[enable hardware accelerated framebuffer access. @<:@default=disabled@:>@])], + [ + if test "x${enableval}" = "xyes" ; then + want_eglfs="yes" + want_fb="yes" + else + want_eglfs="no" + fi + ], + [want_eglfs="no"]) + # SDL AC_ARG_ENABLE([sdl], [AS_HELP_STRING([--enable-sdl],[enable SDL support. @<:@default=disabled@:>@])], @@ -1851,6 +1864,7 @@ EVAS_CHECK_ENGINE([wayland-egl], [${want_evas_engine_wayland_egl}], [no], [Wayla EVAS_CHECK_ENGINE([wayland-shm], [${want_wayland}], [no], [Wayland Shm]) EVAS_CHECK_ENGINE([drm], [${want_drm}], [no], [Drm]) EVAS_CHECK_ENGINE([gl-drm], [${want_gl_drm}], [no], [OpenGL Drm]) +EVAS_CHECK_ENGINE([eglfs], [${want_eglfs}], [no], [OpenGL Fb]) # Software XCB @@ -2007,6 +2021,7 @@ if test "x$have_evas_engine_gl_xlib" = "xyes" || \ test "x$have_evas_engine_gl_sdl" = "xyes" || \ test "x$have_evas_engine_gl_cocoa" = "xyes" || \ test "x$have_evas_engine_gl_drm" = "xyes" || \ + test "x$have_evas_engine_eglfs" = "xyes" || \ test "x$have_evas_engine_wayland_egl" = "xyes"; then have_evas_engine_gl_common="yes" fi @@ -2015,6 +2030,7 @@ if test "x$have_evas_engine_gl_xlib" = "xstatic" || \ test "x$have_evas_engine_gl_sdl" = "xstatic" || \ test "x$have_evas_engine_gl_cocoa" = "xstatic" || \ test "x$have_evas_engine_gl_drm" = "xstatic" || \ + test "x$have_evas_engine_eglfs" = "xstatic" || \ test "x$have_evas_engine_wayland_egl" = "xstatic"; then have_evas_engine_gl_common="yes" have_static_evas_engine_gl_common="yes" @@ -3890,6 +3906,7 @@ want_ecore_evas_gl_cocoa="${have_evas_engine_gl_cocoa}" want_ecore_evas_wayland_egl="${have_evas_engine_wayland_egl}" want_ecore_evas_extn="yes" want_ecore_evas_drm="${have_evas_engine_drm}" +want_ecore_evas_eglfs="${have_evas_engine_eglfs}" if test "x${have_ecore_ipc}" = "xno" || \ test "x${efl_func_shm_open}" = "xno" || \ @@ -3917,6 +3934,7 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_EVAS], [emile]) ECORE_EVAS_MODULE([extn], [${want_ecore_evas_extn}]) ECORE_EVAS_MODULE([ews], [yes]) ECORE_EVAS_MODULE([fb], [${want_fb}]) +ECORE_EVAS_MODULE([eglfs], [${want_eglfs}]) ECORE_EVAS_MODULE([drm], [${want_drm}], [EFL_OPTIONAL_INTERNAL_DEPEND_PKG([ECORE_EVAS], [${want_drm}], [ecore-drm])]) ECORE_EVAS_MODULE([gl-drm], [${want_gl_drm}], @@ -4701,6 +4719,7 @@ pc/eolian-cxx.pc pc/efl.pc pc/efl-cxx.pc pc/evas-fb.pc +pc/evas-eglfs.pc pc/evas-opengl-x11.pc pc/evas-opengl-sdl.pc pc/evas-opengl-cocoa.pc diff --git a/m4/evas_check_engine.m4 b/m4/evas_check_engine.m4 index 8165aa2344..504d9f30d7 100644 --- a/m4/evas_check_engine.m4 +++ b/m4/evas_check_engine.m4 @@ -661,6 +661,49 @@ AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5]) ]) +dnl use: EVAS_CHECK_ENGINE_DEP_EGLFS(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) + +AC_DEFUN([EVAS_CHECK_ENGINE_DEP_EGLFS], +[ + +requirement="" +have_dep="no" +have_hw_dep="no" +evas_engine_[]$1[]_cflags="" +evas_engine_[]$1[]_libs="" + +if test "x${with_opengl}" = "xes" ; then + gl_library="glesv2" +else + AC_MSG_ERROR([We do not support Eglfs without OpenGL ES. Please consider OpenGL ES if you want to use it.]) +fi + +PKG_CHECK_EXISTS([egl >= 7.10 ${gl_library}], + [ + have_dep="yes" + requirement="egl >= 7.10 ${gl_library}" + ], + [have_dep="no"]) + +if test "x${have_dep}" = "xyes" ; then + if test "x$3" = "xstatic" ; then + requirements_pc_evas="${requirement} ${requirements_pc_evas}" + requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}" + else + PKG_CHECK_MODULES([EGLFS], [${requirement}]) + evas_engine_[]$1[]_cflags="${EGLFS_CFLAGS}" + evas_engine_[]$1[]_libs="${EGLFS_LIBS}" + evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGLESv2 -lm -lEGL" + fi +fi + +AC_SUBST([evas_engine_$1_cflags]) +AC_SUBST([evas_engine_$1_libs]) + +AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5]) + +]) + dnl use: EVAS_ENGINE(name, want_engine, [DEPENDENCY-CHECK-CODE]) dnl diff --git a/pc/.gitignore b/pc/.gitignore index 5aadf61079..95739273e2 100644 --- a/pc/.gitignore +++ b/pc/.gitignore @@ -41,6 +41,7 @@ /ethumb_client.pc /evas-drm.pc /evas-fb.pc +/evas-eglfs.pc /evas-opengl-cocoa.pc /evas-opengl-sdl.pc /evas-opengl-x11.pc diff --git a/pc/evas-eglfs.pc.in b/pc/evas-eglfs.pc.in new file mode 100644 index 0000000000..c8dfc5c8c3 --- /dev/null +++ b/pc/evas-eglfs.pc.in @@ -0,0 +1,3 @@ +Name: evas-eglfs +Description: Evas eglfs engine +Version: @VERSION@ diff --git a/src/Makefile_Ecore_Evas.am b/src/Makefile_Ecore_Evas.am index 1be87466e9..e7ce68d703 100644 --- a/src/Makefile_Ecore_Evas.am +++ b/src/Makefile_Ecore_Evas.am @@ -132,9 +132,12 @@ modules_ecore_evas_engines_fb_module_la_SOURCES = $(FBSOURCES) modules_ecore_evas_engines_fb_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ @ECORE_EVAS_CFLAGS@ \ @ECORE_FB_CFLAGS@ \ --I$(top_srcdir)/src/modules/evas/engines/fb +-I$(top_srcdir)/src/modules/evas/engines/fb \ +-I$(top_srcdir)/src/modules/evas/engines/eglfs \ +@ecore_evas_engines_eglfs_cflags@ modules_ecore_evas_engines_fb_module_la_LIBADD = \ @USE_ECORE_EVAS_LIBS@ \ +@ecore_evas_engines_eglfs_libs@ \ @USE_ECORE_FB_LIBS@ modules_ecore_evas_engines_fb_module_la_DEPENDENCIES = \ @USE_ECORE_EVAS_INTERNAL_LIBS@ \ diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index a6277138c5..7bc03dc793 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -787,6 +787,9 @@ endif if BUILD_ENGINE_GL_DRM modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_gl_drm_cflags@ endif +if BUILD_ENGINE_EGLFS +modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_eglfs_cflags@ +endif modules_evas_engines_gl_common_libevas_engine_gl_common_la_LIBADD = @USE_EVAS_LIBS@ modules_evas_engines_gl_common_libevas_engine_gl_common_la_DEPENDENCIES = @USE_EVAS_INTERNAL_LIBS@ modules_evas_engines_gl_common_libevas_engine_gl_common_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ @@ -1242,6 +1245,45 @@ modules_evas_engines_gl_drm_module_la_LIBTOOLFLAGS = --tag=disable-static endif endif +if BUILD_ENGINE_EGLFS +dist_installed_evasmainheaders_DATA += modules/evas/engines/eglfs/Evas_Engine_Eglfs.h +EGLFS_SOURCES = \ +modules/evas/engines/eglfs/evas_outbuf.c \ +modules/evas/engines/eglfs/evas_engine.c \ +modules/evas/engines/eglfs/evas_engine.h \ +modules/evas/engines/eglfs/Evas_Engine_Eglfs.h +if EVAS_STATIC_BUILD_EGLFS +lib_evas_libevas_la_SOURCES += $(EGLFS_SOURCES) +lib_evas_libevas_la_CPPFLAGS += @evas_engine_eglfs_cflags@ +lib_evas_libevas_la_LIBADD += @evas_engine_eglfs_libs@ +else +engineeglfspkgdir = $(libdir)/evas/modules/engines/eglfs/$(MODULE_ARCH) +engineeglfspkg_LTLIBRARIES = modules/evas/engines/eglfs/module.la + +# Workaround for broken parallel install support in automake (relink issue) +# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328 +install_engineeglfspkgLTLIBRARIES = install-engineeglfspkgLTLIBRARIES +$(install_engineeglfspkgLTLIBRARIES): install-libLTLIBRARIES + +modules_evas_engines_eglfs_module_la_SOURCES = $(EGLFS_SOURCES) +modules_evas_engines_eglfs_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ +-I$(top_srcdir)/src/lib/evas/include \ +-I$(top_srcdir)/src/lib/evas/cserve2 \ +-I$(top_srcdir)/src/modules/evas/engines/eglfs \ +@EVAS_CFLAGS@ \ +@ECORE_DRM_CFLAGS@ \ +@evas_engine_eglfs_cflags@ +modules_evas_engines_eglfs_module_la_LIBADD = \ +@USE_EVAS_LIBS@ \ +@USE_ECORE_DRM_LIBS@ \ +@evas_engine_eglfs_libs@ \ +@USE_EEZE_INTERNAL_LIBS@ +modules_evas_engines_eglfs_module_la_DEPENDENCIES = @USE_EVAS_INTERNAL_LIBS@ @USE_EEZE_INTERNAL_LIBS@ @USE_ECORE_DRM_INTERNAL_LIBS@ +modules_evas_engines_eglfs_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ +modules_evas_engines_eglfs_module_la_LIBTOOLFLAGS = --tag=disable-static +endif +endif + ### Cserve2 binary if EVAS_CSERVE2