summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Bachmann <manuel.bachmann@open.eurogiciel.org>2015-02-25 09:15:41 +0100
committerStefan Schmidt <s.schmidt@samsung.com>2015-02-25 09:33:40 +0100
commita5a27dee14839ed38b078126557cf4c20f1e6b98 (patch)
treeb7f44b6aa27c452abbad826c1233b2e441a2ea8c
parent6097f06b26c023e99dc405f0f019ce9d76b773d7 (diff)
downloadenlightenment-a5a27dee14839ed38b078126557cf4c20f1e6b98.tar.gz
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
-rw-r--r--configure.ac101
-rw-r--r--src/bin/Makefile.mk17
-rw-r--r--src/bin/e_main.c12
-rw-r--r--src/bin/e_signals.c8
4 files changed, 85 insertions, 53 deletions
diff --git a/configure.ac b/configure.ac
index 161a9eab85..8d02600457 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 e227076c7d..8d85ba16cd 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 375238ffb1..a185887cd4 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 db45683713..5abc5d7378 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
}