From 00382bb6a6e73c021ecfda3c90598777d7f7b084 Mon Sep 17 00:00:00 2001 From: Gwanglim Lee Date: Thu, 28 Aug 2014 13:36:59 -0400 Subject: [PATCH] gl-drm: Fix missing link to gbm for ecore_evas_drm and clean up build script @fix Summary: This fixes following build script problems for ecore_evas_drm engine module. 1. Missing link to gbm for ecore_evas_drm if '--enable-gl-drm' option is given. ecore_evas_drm engine is using gbm function if it builds with that config option. To be more exact, ecore_evas_gl_drm_new_internal function needs gbm. Thus we need to add gbm library linking '-lgbm' to ecore_evas_drm engine module if '--enable-gl-drm' option is given. I've added this build script to m4/ecore_check_module.m4 file. 2. Wrong gbm dependency check code in configure.ac EFL_OPTIONAL_INTERNAL_DEPEND_PKG m4 macro function is designed for checking dependency of efl internal libraries. Thus we should remove gbm pkg name when configuring ecore_evas_drm engine module. It would be better to move dependency check for gbm to m4/ecore_check_module.m4 file. And one more thing want_drm value has to be changed to want_gl_drm in ECORE_EVAS_MODULE([gl-drm]...). 3. BUILD_ECORE_EVAS_OPENGL_DRM macro is always defined in configure.ac. This kind of macro, BUILD_EFL_MODULE_NAME, has to be defined only if given module is enabled. But this macro value was just defined with no test. And it is even useless, we can use BUILD_ECORE_EVAS_GL_DRM macro which is defined by ECORE_EVAS_MODULE([gl-drm], [${want_gl_drm}],...) function. So I've removed that from configure.ac. Test Plan: 1. Configure with --enable-gl-drm: $ ./autogen.sh --enable-drm --enable-gl-drm 2. Build: $ make && make install 3. Check module.so of ecore_evas_drm engine whether it has a library dependency with gbm: $ readelf -a $EFL_GIT/src/modules/ecore_evas/engines/drm/.libs/module.so | grep NEEDED Reviewers: raster, stefan_schmidt, devilhorns Reviewed By: devilhorns Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D1379 --- configure.ac | 6 ++---- m4/ecore_check_module.m4 | 13 +++++++++++++ src/Makefile_Ecore_Evas.am | 6 ++++-- src/modules/ecore_evas/engines/drm/ecore_evas_drm.c | 6 +++--- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index efbefc2306..55e403caab 100644 --- a/configure.ac +++ b/configure.ac @@ -3693,9 +3693,9 @@ ECORE_EVAS_MODULE([extn], [${want_ecore_evas_extn}]) ECORE_EVAS_MODULE([ews], [yes]) ECORE_EVAS_MODULE([fb], [${want_fb}]) ECORE_EVAS_MODULE([drm], [${want_drm}], - [EFL_OPTIONAL_INTERNAL_DEPEND_PKG([ECORE_EVAS], [${want_drm}], [ecore-drm],[gbm])]) + [EFL_OPTIONAL_INTERNAL_DEPEND_PKG([ECORE_EVAS], [${want_drm}], [ecore-drm])]) ECORE_EVAS_MODULE([gl-drm], [${want_gl_drm}], - [EFL_OPTIONAL_INTERNAL_DEPEND_PKG([ECORE_EVAS], [${want_drm}], [ecore-drm],[gbm])]) + [EFL_OPTIONAL_INTERNAL_DEPEND_PKG([ECORE_EVAS], [${want_gl_drm}], [ecore-drm])]) ECORE_EVAS_MODULE([psl1ght], [${have_ps3}]) ECORE_EVAS_MODULE([opengl-cocoa], [${want_ecore_evas_gl_cocoa}]) @@ -3802,8 +3802,6 @@ if test "x$have_ecore_evas_software_x11" = "xyes" || \ fi AM_CONDITIONAL([BUILD_ECORE_EVAS_X11], [test "${build_ecore_evas_x11}" = "yes"]) -AC_DEFINE([BUILD_ECORE_EVAS_OPENGL_DRM], [1], [Build support for DRM based OpenGL]) - EFL_EVAL_PKGS([ECORE_EVAS]) ### Checks for header files diff --git a/m4/ecore_check_module.m4 b/m4/ecore_check_module.m4 index 5981fd7f3a..c34a342899 100644 --- a/m4/ecore_check_module.m4 +++ b/m4/ecore_check_module.m4 @@ -7,12 +7,25 @@ m4_pushdef([DOWN], m4_translit([[$1]], [-A-Z], [_a-z]))dnl have_ecore_evas_[]m4_defn([DOWN])="no" want_module="$2" +ecore_evas_engines_[]m4_defn([DOWN])[]_cflags="" +ecore_evas_engines_[]m4_defn([DOWN])[]_libs="" + if test "x$want_module" = "xyes" || test "x$want_module" = "xstatic"; then $3 AC_DEFINE([BUILD_ECORE_EVAS_]m4_defn([UP]), [1], [Support for $1 Engine in Ecore_Evas]) have_ecore_evas_[]m4_defn([DOWN])="yes" + + if test "x$1" = "xgl-drm"; then + PKG_CHECK_MODULES([GBM], [gbm]) + ecore_evas_engines_[]m4_defn([DOWN])[]_cflags="${GBM_CFLAGS}" + ecore_evas_engines_[]m4_defn([DOWN])[]_libs="${GBM_LIBS}" + fi fi + +AC_SUBST([ecore_evas_engines_]m4_defn([DOWN])[_cflags]) +AC_SUBST([ecore_evas_engines_]m4_defn([DOWN])[_libs]) + EFL_ADD_FEATURE([ECORE_EVAS], [$1], [${want_module}])dnl AM_CONDITIONAL([BUILD_ECORE_EVAS_]UP, [test "x$have_ecore_evas_]m4_defn([DOWN])[" = "xyes"])dnl m4_popdef([UP])dnl diff --git a/src/Makefile_Ecore_Evas.am b/src/Makefile_Ecore_Evas.am index b1c8cd0161..a6cf704121 100644 --- a/src/Makefile_Ecore_Evas.am +++ b/src/Makefile_Ecore_Evas.am @@ -215,8 +215,10 @@ modules_ecore_evas_engines_drm_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/ef @ECORE_EVAS_CFLAGS@ \ @ECORE_DRM_CFLAGS@ \ -I$(top_srcdir)/src/modules/evas/engines/drm \ --I$(top_srcdir)/src/modules/evas/engines/gl_drm -modules_ecore_evas_engines_drm_module_la_LIBADD = @USE_ECORE_EVAS_LIBS@ +-I$(top_srcdir)/src/modules/evas/engines/gl_drm \ +@ecore_evas_engines_gl_drm_cflags@ +modules_ecore_evas_engines_drm_module_la_LIBADD = @USE_ECORE_EVAS_LIBS@ \ +@ecore_evas_engines_gl_drm_libs@ modules_ecore_evas_engines_drm_module_la_DEPENDENCIES = @USE_ECORE_EVAS_INTERNAL_LIBS@ modules_ecore_evas_engines_drm_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ modules_ecore_evas_engines_drm_module_la_LIBTOOLFLAGS = --tag=disable-static diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c index cb7fb615a9..13e4069351 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c @@ -15,7 +15,7 @@ #include #include -#ifdef BUILD_ECORE_EVAS_OPENGL_DRM +#ifdef BUILD_ECORE_EVAS_GL_DRM # include # include # include @@ -276,7 +276,7 @@ ee_err: return NULL; } -#ifdef BUILD_ECORE_EVAS_OPENGL_DRM +#ifdef BUILD_ECORE_EVAS_GL_DRM EAPI Ecore_Evas * ecore_evas_gl_drm_new_internal(const char *device, unsigned int parent EINA_UNUSED, int x, int y, int w, int h) { @@ -531,7 +531,7 @@ _ecore_evas_drm_shutdown(void) return _ecore_evas_init_count; } -#ifdef BUILD_ECORE_EVAS_OPENGL_DRM +#ifdef BUILD_ECORE_EVAS_GL_DRM static Ecore_Evas_Interface_Drm * _ecore_evas_drm_interface_new(void) {