gl-drm: Fix missing link to gbm for ecore_evas_drm and clean up build script
authorGwanglim Lee <gl77.lee@samsung.com>
Thu, 28 Aug 2014 17:36:59 +0000 (13:36 -0400)
committerChris Michael <cp.michael@samsung.com>
Thu, 28 Aug 2014 17:37:28 +0000 (13:37 -0400)
@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
m4/ecore_check_module.m4
src/Makefile_Ecore_Evas.am
src/modules/ecore_evas/engines/drm/ecore_evas_drm.c

index efbefc2..55e403c 100644 (file)
@@ -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
index 5981fd7..c34a342 100644 (file)
@@ -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
index b1c8cd0..a6cf704 100644 (file)
@@ -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
index cb7fb61..13e4069 100644 (file)
@@ -15,7 +15,7 @@
 #include <Ecore_Drm.h>
 #include <Evas_Engine_Drm.h>
 
-#ifdef BUILD_ECORE_EVAS_OPENGL_DRM
+#ifdef BUILD_ECORE_EVAS_GL_DRM
 # include <Evas_Engine_GL_Drm.h>
 # include <gbm.h>
 # include <dlfcn.h>
@@ -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)
 {