stefan pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=a5a27dee14839ed38b078126557cf4c20f1e6b98

commit a5a27dee14839ed38b078126557cf4c20f1e6b98
Author: Manuel Bachmann <manuel.bachm...@open.eurogiciel.org>
Date:   Wed Feb 25 09:15:41 2015 +0100

    build: allow building in pure Wayland mode (no xcb, no ecore-x)
    
    Summary:
    We should be building Enlightenement with "--enable-wayland-only"
    even if xcb, ecore-x... are not present. The Evas wayland-shm
    engine will then be a prerequisite, though.
    
    E_Alert being too much X11-oriented, let us disable it completely
    before it is ported.
    
    Also, do not require the X11 rendering engines at runtime.
    
    Reviewers: stefan, devilhorns
    
    Reviewed By: devilhorns
    
    Subscribers: stefan_schmidt, stefan
    
    Projects: #enlightenment-git
    
    Differential Revision: https://phab.enlightenment.org/D1986
---
 configure.ac        | 101 +++++++++++++++++++++++++++++-----------------------
 src/bin/Makefile.mk |  17 ++++++---
 src/bin/e_main.c    |  12 +++++++
 src/bin/e_signals.c |   8 ++---
 4 files changed, 85 insertions(+), 53 deletions(-)

diff --git a/configure.ac b/configure.ac
index 161a9ea..8d02600 100644
--- a/configure.ac
+++ b/configure.ac
@@ -444,6 +444,16 @@ test -n "$dbus_mount" && 
AC_DEFINE_UNQUOTED([HAVE_UDISKS_MOUNT], [1], [enable Ud
 AM_CONDITIONAL([HAVE_UDISKS_MOUNT], [test -n "$dbus_mount"])
 AM_CONDITIONAL([HAVE_EEZE_MOUNT], [test -n "$eeze_mount"])
 
+# verify "wayland-only" early to adapt dependencies
+
+have_wayland_only=no
+AC_ARG_ENABLE([wayland-only],
+  AS_HELP_STRING([--enable-wayland-only],[enable wayland-only version of 
enlightenment @<:@default=disabled@:>@]),
+  [e_cv_want_wayland_only=$enableval],
+  [e_cv_want_wayland_only=no])
+AC_MSG_CHECKING([whether wayland-only version is enabled])
+AC_MSG_RESULT([${e_cv_want_wayland_only}])
+
 # doxygen program for documentation building
 
 EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
@@ -523,40 +533,45 @@ PKG_CHECK_MODULES(E_SYS, [
   ecore >= ${efl_version}
 ])
 
-PKG_CHECK_MODULES(E_ALERT, [
-  xcb
-  xcb-shape
-  xcb-keysyms
-  eina >= ${efl_version}
-  ecore >= ${efl_version}
-  ecore-ipc >= ${efl_version}
-])
+if test "x${e_cv_want_wayland_only}" != "xyes"; then
+  PKG_CHECK_MODULES(E_ALERT, [
+    xcb
+    xcb-shape
+    xcb-keysyms
+    eina >= ${efl_version}
+    ecore >= ${efl_version}
+    ecore-ipc >= ${efl_version}
+  ])
+fi
 
-PKG_CHECK_MODULES(E, [
-  evas >= ${efl_version}
-  ecore >= ${efl_version}
-  ecore-x >= ${efl_version}
-  ecore-evas >= ${efl_version}
-  ecore-input >= ${efl_version}
-  ecore-input-evas >= ${efl_version}
-  ecore-con >= ${efl_version}
-  ecore-ipc >= ${efl_version}
-  ecore-file >= ${efl_version}
-  eet >= ${efl_version}
-  edje >= ${efl_version}
-  efreet >= ${efl_version}
-  efreet-mime >= ${efl_version}
-  efreet-trash >= ${efl_version}
-  eina >= ${efl_version}
-  eldbus >= ${efl_version}
-  eio >= ${efl_version}
-  eo >= ${efl_version}
-  elementary >= ${efl_version}
-  emotion >= ${efl_version}
-  $eeze_mount
-  $udisks_mount
-  $device_libs
-])
+e_requires="\
+  evas >= $efl_version \
+  ecore >= $efl_version \
+  ecore-evas >= $efl_version \
+  ecore-input >= $efl_version \
+  ecore-input-evas >= $efl_version \
+  ecore-con >= $efl_version \
+  ecore-ipc >= $efl_version \
+  ecore-file >= $efl_version \
+  eet >= $efl_version \
+  edje >= $efl_version \
+  efreet >= $efl_version \
+  efreet-mime >= $efl_version \
+  efreet-trash >= $efl_version \
+  eina >= $efl_version \
+  eldbus >= $efl_version \
+  eio >= $efl_version \
+  eo >= $efl_version \
+  elementary >= $efl_version \
+  emotion >= $efl_version \
+  $eeze_mount \
+  $udisks_mount \
+  $device_libs"
+if test "x${e_cv_want_wayland_only}" != "xyes"; then
+  e_requires="$e_requires ecore-x >= $efl_version"
+fi
+
+PKG_CHECK_MODULES(E, [$e_requires])
 requirements_e="\
 evas >= ${efl_version} \
 ecore >= ${efl_version} \
@@ -797,14 +812,6 @@ define([CHECK_MODULE_BLUEZ4],
 AC_SUBST([EBLUEZ4_CFLAGS])
 AC_SUBST([EBLUEZ4_LIBS])
 
-have_wayland_only=no
-AC_ARG_ENABLE([wayland-only],
-  AS_HELP_STRING([--enable-wayland-only],[enable wayland-only version of 
enlightenment @<:@default=disabled@:>@]),
-  [e_cv_want_wayland_only=$enableval],
-  [e_cv_want_wayland_only=no])
-AC_MSG_CHECKING([whether wayland-only version is enabled])
-AC_MSG_RESULT([${e_cv_want_wayland_only}])
-
 have_wayland_clients=no
 AC_ARG_ENABLE([wayland-clients],
   AS_HELP_STRING([--enable-wayland-clients],[enable wayland clients in 
composite module @<:@default=disabled@:>@]),
@@ -857,11 +864,15 @@ AM_CONDITIONAL([HAVE_WAYLAND_ONLY], [test 
"x${have_wayland_only}" = "xyes"])
 AM_CONDITIONAL([HAVE_WAYLAND_CLIENTS], [test "x${have_wayland_clients}" = 
"xyes"])
 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "x${have_wayland_egl}" = "xyes"])
 
-PKG_CHECK_MODULES([ECORE_X], [ecore-x >= ${efl_version}])
-if test -n "$ECORE_X_CFLAGS" ; then
-   ecore_x=true
+if test "x${have_wayland_only}" != "xyes"; then
+  PKG_CHECK_MODULES([ECORE_X], [ecore-x >= ${efl_version}])
+  if test -n "$ECORE_X_CFLAGS" ; then
+     ecore_x=true
+  else
+     ecore_x=false
+  fi
 else
-   ecore_x=false
+  ecore_x=false
 fi
 
 if test "x${ecore_x}" = "xtrue" && test -n "$WAYLAND_CFLAGS" ; then
diff --git a/src/bin/Makefile.mk b/src/bin/Makefile.mk
index e227076..8d85ba1 100644
--- a/src/bin/Makefile.mk
+++ b/src/bin/Makefile.mk
@@ -30,9 +30,12 @@ internal_bin_PROGRAMS = \
 src/bin/enlightenment_fm_op \
 src/bin/enlightenment_sys \
 src/bin/enlightenment_thumb \
-src/bin/enlightenment_alert \
 src/bin/enlightenment_static_grabber
 
+if ! HAVE_WAYLAND_ONLY
+internal_bin_PROGRAMS += src/bin/enlightenment_alert
+endif
+
 if HAVE_EEZE
 internal_bin_PROGRAMS += src/bin/enlightenment_backlight
 endif
@@ -210,7 +213,6 @@ enlightenment_src = \
 src/bin/e_about.c \
 src/bin/e_acpi.c \
 src/bin/e_actions.c \
-src/bin/e_alert.c \
 src/bin/e_atoms.c \
 src/bin/e_auth.c \
 src/bin/e_backlight.c \
@@ -364,6 +366,7 @@ $(ENLIGHTENMENTHEADERS)
 if ! HAVE_WAYLAND_ONLY
 enlightenment_src += \
 src/bin/e_comp_x.c \
+src/bin/e_alert.c \
 src/bin/e_randr2.c \
 src/bin/e_xsettings.c
 endif
@@ -376,13 +379,19 @@ src/bin/e_comp_wl_input.c \
 src/bin/e_comp_wl.c
 endif
 
-src_bin_enlightenment_CPPFLAGS = $(E_CPPFLAGS) -DEFL_BETA_API_SUPPORT 
-DEFL_EO_API_SUPPORT -DE_LOGGING=1 @WAYLAND_CFLAGS@ @WAYLAND_EGL_CFLAGS@ 
@ECORE_X_CFLAGS@ -DNEED_X=1 -DNEED_WL
+src_bin_enlightenment_CPPFLAGS = $(E_CPPFLAGS) -DEFL_BETA_API_SUPPORT 
-DEFL_EO_API_SUPPORT -DE_LOGGING=1 @WAYLAND_CFLAGS@ @WAYLAND_EGL_CFLAGS@ 
-DNEED_WL
+if ! HAVE_WAYLAND_ONLY
+src_bin_enlightenment_CPPFLAGS += @ECORE_X_CFLAGS@ -DNEED_X=1
+endif
 src_bin_enlightenment_SOURCES = \
 src/bin/e_main.c \
 $(enlightenment_src)
 
 src_bin_enlightenment_LDFLAGS = -export-dynamic
-src_bin_enlightenment_LDADD = @e_libs@ @dlopen_libs@ @cf_libs@ @VALGRIND_LIBS@ 
@WAYLAND_LIBS@ @WL_DRM_LIBS@ @WAYLAND_EGL_LIBS@ -lm @ECORE_X_LIBS@ 
@SHM_OPEN_LIBS@
+src_bin_enlightenment_LDADD = @e_libs@ @dlopen_libs@ @cf_libs@ @VALGRIND_LIBS@ 
@WAYLAND_LIBS@ @WL_DRM_LIBS@ @WAYLAND_EGL_LIBS@ -lm @SHM_OPEN_LIBS@
+if ! HAVE_WAYLAND_ONLY
+src_bin_enlightenment_LDADD += @ECORE_X_LIBS@
+endif
 
 src_bin_enlightenment_imc_SOURCES = \
 src/bin/e.h \
diff --git a/src/bin/e_main.c b/src/bin/e_main.c
index 375238f..a185887 100644
--- a/src/bin/e_main.c
+++ b/src/bin/e_main.c
@@ -454,6 +454,15 @@ main(int argc, char **argv)
    ecore_evas_app_comp_sync_set(0);
 
    TS("Ecore_Evas Engine Check");
+#ifdef HAVE_WAYLAND_ONLY
+   if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_WAYLAND_SHM))
+     {
+        e_error_message_show(_("Enlightenment found ecore_evas doesn't support 
the Wayland SHM\n"
+                               "rendering in Evas. Please check your 
installation of Evas and\n"
+                                "Ecore and check they support the Wayland SHM 
rendering engine."));
+        _e_main_shutdown(-1);
+     }
+#else
    if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_SOFTWARE_XCB))
      {
         if 
(!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_SOFTWARE_XLIB))
@@ -464,6 +473,7 @@ main(int argc, char **argv)
              _e_main_shutdown(-1);
           }
      }
+#endif
    if 
(!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_SOFTWARE_BUFFER))
      {
         e_error_message_show(_("Enlightenment found ecore_evas doesn't support 
the Software Buffer\n"
@@ -494,6 +504,7 @@ main(int argc, char **argv)
    TS("E Intl Init Done");
    _e_main_shutdown_push(e_intl_shutdown);
 
+#ifndef HAVE_WAYLAND_ONLY
    /* init white box of death alert */
    TS("E_Alert Init");
    if (!e_alert_init())
@@ -504,6 +515,7 @@ main(int argc, char **argv)
      }
    TS("E_Alert Init Done");
    _e_main_shutdown_push(e_alert_shutdown);
+#endif
 
    TS("E_Configure Init");
    e_configure_init();
diff --git a/src/bin/e_signals.c b/src/bin/e_signals.c
index db45683..5abc5d7 100644
--- a/src/bin/e_signals.c
+++ b/src/bin/e_signals.c
@@ -71,8 +71,8 @@ e_sigseg_act(int x __UNUSED__, siginfo_t *info __UNUSED__, 
void *data __UNUSED__
    ecore_x_keyboard_ungrab();
    ecore_x_ungrab();
    ecore_x_sync();
-#endif
    e_alert_show();
+#endif
 }
 
 EAPI void
@@ -102,8 +102,8 @@ e_sigfpe_act(int x __UNUSED__, siginfo_t *info __UNUSED__, 
void *data __UNUSED__
    ecore_x_keyboard_ungrab();
    ecore_x_ungrab();
    ecore_x_sync();
-#endif
    e_alert_show();
+#endif
 }
 
 EAPI void
@@ -115,8 +115,8 @@ e_sigbus_act(int x __UNUSED__, siginfo_t *info __UNUSED__, 
void *data __UNUSED__
    ecore_x_keyboard_ungrab();
    ecore_x_ungrab();
    ecore_x_sync();
-#endif
    e_alert_show();
+#endif
 }
 
 EAPI void
@@ -128,6 +128,6 @@ e_sigabrt_act(int x __UNUSED__, siginfo_t *info __UNUSED__, 
void *data __UNUSED_
    ecore_x_keyboard_ungrab();
    ecore_x_ungrab();
    ecore_x_sync();
-#endif
    e_alert_show();
+#endif
 }

-- 


Reply via email to