summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am4
-rw-r--r--configure.ac19
-rw-r--r--m4/evas_check_engine.m443
-rw-r--r--pc/.gitignore1
-rw-r--r--pc/evas-eglfs.pc.in3
-rw-r--r--src/Makefile_Ecore_Evas.am5
-rw-r--r--src/Makefile_Evas.am42
7 files changed, 116 insertions, 1 deletions
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