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
This commit is contained in:
Manuel Bachmann 2015-02-25 09:15:41 +01:00 committed by Stefan Schmidt
parent 6097f06b26
commit a5a27dee14
4 changed files with 85 additions and 53 deletions

View File

@ -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

View File

@ -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 \

View File

@ -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();

View File

@ -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
}