Introduce --disable-egl switch for configure to disable EGL/GLESv2 support.
Signed-off-by: Vasily Khoruzhick <[email protected]> --- configure.ac | 40 ++++++++++++++++++++++------------- src/Makefile.am | 6 +++++- src/compositor-x11.c | 4 ++-- src/gl-renderer.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+), 18 deletions(-) diff --git a/configure.ac b/configure.ac index 8cff8dc..cc3256d 100644 --- a/configure.ac +++ b/configure.ac @@ -33,9 +33,17 @@ AC_CHECK_HEADERS([execinfo.h]) AC_CHECK_FUNCS([mkostemp strchrnul]) -PKG_CHECK_MODULES(COMPOSITOR, - [wayland-server egl >= 7.10 glesv2 xkbcommon pixman-1]) +COMPOSITOR_MODULES="wayland-server xkbcommon pixman-1" + +AC_ARG_ENABLE(egl, [ --disable-egl],, + enable_egl=yes) +AM_CONDITIONAL(ENABLE_EGL, test x$enable_egl = xyes) +if test x$enable_egl = xyes; then + AC_DEFINE([ENABLE_EGL], [1], [Build Weston with EGL support]) + COMPOSITOR_MODULES="$COMPOSITOR_MODULES egl >= 7.10 glesv2" +fi +PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES]) AC_ARG_ENABLE(setuid-install, [ --enable-setuid-install],, enable_setuid_install=yes) @@ -94,8 +102,8 @@ fi AC_ARG_ENABLE(drm-compositor, [ --enable-drm-compositor],, enable_drm_compositor=yes) -AM_CONDITIONAL(ENABLE_DRM_COMPOSITOR, test x$enable_drm_compositor = xyes) -if test x$enable_drm_compositor = xyes; then +AM_CONDITIONAL(ENABLE_DRM_COMPOSITOR, test x$enable_drm_compositor = xyes -a x$enable_egl = xyes) +if test x$enable_drm_compositor = xyes -a x$enable_egl = xyes; then AC_DEFINE([BUILD_DRM_COMPOSITOR], [1], [Build the DRM compositor]) PKG_CHECK_MODULES(DRM_COMPOSITOR, [libudev >= 136 libdrm >= 2.4.30 gbm mtdev >= 1.1.0]) fi @@ -104,8 +112,8 @@ fi AC_ARG_ENABLE(wayland-compositor, [ --enable-wayland-compositor],, enable_wayland_compositor=yes) AM_CONDITIONAL(ENABLE_WAYLAND_COMPOSITOR, - test x$enable_wayland_compositor = xyes) -if test x$enable_wayland_compositor = xyes; then + test x$enable_wayland_compositor = xyes -a x$enable_egl = xyes) +if test x$enable_wayland_compositor = xyes -a x$enable_egl = xyes; then AC_DEFINE([BUILD_WAYLAND_COMPOSITOR], [1], [Build the Wayland (nested) compositor]) PKG_CHECK_MODULES(WAYLAND_COMPOSITOR, [wayland-client wayland-egl]) @@ -122,8 +130,8 @@ AC_ARG_ENABLE(android-compositor, AS_HELP_STRING([--disable-android-compositor], [do not build-test the Android 4.0 backend]),, enable_android_compositor=yes) -AM_CONDITIONAL(ENABLE_ANDROID_COMPOSITOR, test x$enable_android_compositor = xyes) -if test x$enable_android_compositor = xyes; then +AM_CONDITIONAL(ENABLE_ANDROID_COMPOSITOR, test x$enable_android_compositor = xyes -a x$enable_egl = xyes) +if test x$enable_android_compositor = xyes -a x$enable_egl = xyes; then AC_DEFINE([BUILD_ANDROID_COMPOSITOR], [1], [Build the compositor for Android 4.0]) PKG_CHECK_MODULES(ANDROID_COMPOSITOR, [mtdev >= 1.1.0]) fi @@ -133,9 +141,9 @@ AC_ARG_ENABLE(rpi-compositor, AS_HELP_STRING([--disable-rpi-compositor], [do not build the Raspberry Pi backend]),, enable_rpi_compositor=yes) -AM_CONDITIONAL(ENABLE_RPI_COMPOSITOR, test "x$enable_rpi_compositor" = "xyes") +AM_CONDITIONAL(ENABLE_RPI_COMPOSITOR, test "x$enable_rpi_compositor" = "xyes" -a "x$enable_egl" = "xyes") have_bcm_host="no" -if test x$enable_rpi_compositor = xyes; then +if test x$enable_rpi_compositor = xyes -a x$enable_egl = xyes; then AC_DEFINE([BUILD_RPI_COMPOSITOR], [1], [Build the compositor for Raspberry Pi]) PKG_CHECK_MODULES(RPI_COMPOSITOR, [libudev >= 136 mtdev >= 1.1.0]) PKG_CHECK_MODULES(RPI_BCM_HOST, [bcm_host], @@ -185,8 +193,8 @@ AC_ARG_ENABLE(simple-egl-clients, AS_HELP_STRING([--disable-simple-egl-clients], [do not build the simple EGL clients]),, enable_simple_egl_clients=yes) -AM_CONDITIONAL(BUILD_SIMPLE_EGL_CLIENTS, test "x$enable_simple_egl_clients" = "xyes") -if test x$enable_simple_egl_clients = xyes; then +AM_CONDITIONAL(BUILD_SIMPLE_EGL_CLIENTS, test "x$enable_simple_egl_clients" = "xyes" -a "x$enable_egl" = "xyes") +if test x$enable_simple_egl_clients = xyes -a x$enable_egl = xyes; then PKG_CHECK_MODULES(SIMPLE_EGL_CLIENT, [egl >= 7.10 glesv2 wayland-client wayland-egl wayland-cursor]) fi @@ -224,14 +232,16 @@ if test x$enable_weston_launch == xyes; then WESTON_LAUNCH_LIBS="$WESTON_LAUNCH_LIBS -lpam" fi -PKG_CHECK_MODULES(GLU, [glu], [have_glu=yes], [have_glu=no]) -AM_CONDITIONAL(HAVE_GLU, test "x$have_glu" = "xyes") +AM_CONDITIONAL(HAVE_GLU, test "x$have_glu" = "xyes" -a "$xenable_egl" = "xyes") +if test x$enable_egl = xyes; then + PKG_CHECK_MODULES(GLU, [glu], [have_glu=yes], [have_glu=no]) +fi AM_CONDITIONAL(HAVE_POPPLER, test "x$have_poppler" = "xyes") AM_CONDITIONAL(BUILD_FULL_GL_CLIENTS, - test x$cairo_modules = "xcairo-gl" -a "x$have_cairo_egl" = "xyes") + test x$cairo_modules = "xcairo-gl" -a "x$have_cairo_egl" = "xyes" -a "x$enable_egl" = "xyes") AM_CONDITIONAL(ENABLE_DESKTOP_SHELL, true) diff --git a/src/Makefile.am b/src/Makefile.am index e4bb862..cbfa911 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -34,7 +34,6 @@ weston_SOURCES = \ workspaces-server-protocol.h \ util.c \ gl-renderer.h \ - gl-renderer.c \ noop-renderer.c \ pixman-renderer.c \ pixman-renderer.h \ @@ -43,6 +42,11 @@ weston_SOURCES = \ weston-launch.h \ weston-egl-ext.h +if ENABLE_EGL +weston_SOURCES += \ + gl-renderer.c +endif + git-version.h : .FORCE $(AM_V_GEN)(echo "#define BUILD_ID \"$(shell git --work-tree=$(top_srcdir) describe --always --dirty) $(shell git --work-tree=$(top_srcdir) log -1 --format='%s (%ci)')\"" > $@-new; \ cmp -s $@ $@-new || cp $@-new $@; \ diff --git a/src/compositor-x11.c b/src/compositor-x11.c index c5c4248..7ae2b75 100644 --- a/src/compositor-x11.c +++ b/src/compositor-x11.c @@ -884,7 +884,7 @@ x11_compositor_create_output(struct x11_compositor *c, int x, int y, return NULL; } } else { - if (gl_renderer_output_create(&output->base, output->window) < 0) + if (gl_renderer_output_create(&output->base, (EGLNativeWindowType)output->window) < 0) return NULL; } @@ -1474,7 +1474,7 @@ x11_compositor_create(struct wl_display *display, goto err_xdisplay; } else { - if (gl_renderer_create(&c->base, c->dpy, gl_renderer_opaque_attribs, + if (gl_renderer_create(&c->base, (EGLNativeDisplayType)c->dpy, gl_renderer_opaque_attribs, NULL) < 0) goto err_xdisplay; } diff --git a/src/gl-renderer.h b/src/gl-renderer.h index 1186348..81735e6 100644 --- a/src/gl-renderer.h +++ b/src/gl-renderer.h @@ -20,8 +20,13 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif #include "compositor.h" +#ifdef ENABLE_EGL + #include <EGL/egl.h> extern const EGLint gl_renderer_opaque_attribs[]; @@ -45,3 +50,57 @@ gl_renderer_set_border(struct weston_compositor *ec, int32_t width, int32_t heig void gl_renderer_print_egl_error_state(void); +#else + +typedef int EGLint; +typedef int EGLDisplay; +typedef int EGLSurface; +typedef long int EGLNativeDisplayType; +typedef long int EGLNativeWindowType; + +static const EGLint gl_renderer_opaque_attribs[]; +static const EGLint gl_renderer_alpha_attribs[]; + +inline static int +gl_renderer_create(struct weston_compositor *ec, EGLNativeDisplayType display, + const EGLint *attribs, const EGLint *visual_id) +{ + return -1; +} + +inline static EGLDisplay +gl_renderer_display(struct weston_compositor *ec) +{ + return 0; +} + +inline static int +gl_renderer_output_create(struct weston_output *output, + EGLNativeWindowType window) +{ + return -1; +} + +inline static void +gl_renderer_output_destroy(struct weston_output *output) +{ +} + +inline static EGLSurface +gl_renderer_output_surface(struct weston_output *output) +{ + return 0; +} + +inline static void +gl_renderer_set_border(struct weston_compositor *ec, int32_t width, int32_t height, void *data, + int32_t *edges) +{ +} + +inline static void +gl_renderer_print_egl_error_state(void) +{ +} + +#endif -- 1.8.1 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
