From 4313753a00cc7d156bb7522cc2d36b274c5790b4 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Sat, 22 Feb 2014 16:44:14 +0000 Subject: [PATCH 2/3] pipe-loader: wrap pipe_loader_sw_probe_xlib within HAVE_PIPE_LOADER_XLIB The above function implies using the the xlib winsys, which has additional library dependencies that should not be forced. Make the software xlib pipe loader optional thus avoid all the dependency hell. A user that wishes to use the particular pipe-loader would need to set the following within configure.ac. enable_gallium_xlib_loader=yes Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75356 Signed-off-by: Emil Velikov --- configure.ac | 7 +++++++ src/gallium/auxiliary/pipe-loader/Makefile.am | 4 ---- src/gallium/auxiliary/pipe-loader/pipe_loader.h | 4 ++-- src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 2 +- src/gallium/targets/gbm/Makefile.am | 7 +++++++ src/gallium/targets/opencl/Makefile.am | 7 +++++++ src/gallium/targets/xa/Makefile.am | 7 +++++++ src/gallium/tests/trivial/Makefile.am | 7 +++++++ 8 files changed, 38 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 08aed4e..d42803c 100644 --- a/configure.ac +++ b/configure.ac @@ -1887,6 +1887,12 @@ AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes - if test "x$enable_gallium_loader" = xyes; then GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null" + if test "x$enable_gallium_xlib_loader" = xyes; then + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" + NEED_WINSYS_XLIB="yes" + GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB" + fi + if test "x$enable_gallium_drm_loader" = xyes; then GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM" PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2], @@ -1905,6 +1911,7 @@ if test "x$enable_gallium_loader" = xyes; then AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES]) AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS]) fi +AM_CONDITIONAL(NEED_PIPE_LOADER_XLIB, test "x$enable_gallium_xlib_loader" = xyes) AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes) AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes) diff --git a/src/gallium/auxiliary/pipe-loader/Makefile.am b/src/gallium/auxiliary/pipe-loader/Makefile.am index 232fe40..ccdbea5 100644 --- a/src/gallium/auxiliary/pipe-loader/Makefile.am +++ b/src/gallium/auxiliary/pipe-loader/Makefile.am @@ -8,10 +8,6 @@ AM_CPPFLAGS = $(DEFINES) \ -I$(top_srcdir)/src/gallium/auxiliary \ -I$(top_srcdir)/src/gallium/winsys -if NEED_WINSYS_XLIB -AM_CPPFLAGS += -DHAVE_WINSYS_XLIB -endif - noinst_LTLIBRARIES = if HAVE_LOADER_GALLIUM diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader.h b/src/gallium/auxiliary/pipe-loader/pipe_loader.h index 125086d..a5e49fc 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader.h +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.h @@ -35,7 +35,7 @@ #include "pipe/p_compiler.h" -#ifdef HAVE_WINSYS_XLIB +#ifdef HAVE_PIPE_LOADER_XLIB #include #endif @@ -105,7 +105,7 @@ pipe_loader_create_screen(struct pipe_loader_device *dev, void pipe_loader_release(struct pipe_loader_device **devs, int ndev); -#ifdef HAVE_WINSYS_XLIB +#ifdef HAVE_PIPE_LOADER_XLIB /** * Initialize Xlib for an associated display. diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c index ece687b..78b465b 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c @@ -49,7 +49,7 @@ static struct sw_winsys *(*backends[])() = { null_sw_create }; -#ifdef HAVE_WINSYS_XLIB +#ifdef HAVE_PIPE_LOADER_XLIB bool pipe_loader_sw_probe_xlib(struct pipe_loader_device **devs, Display *display) { diff --git a/src/gallium/targets/gbm/Makefile.am b/src/gallium/targets/gbm/Makefile.am index c0dcd8c..ecbb9ad 100644 --- a/src/gallium/targets/gbm/Makefile.am +++ b/src/gallium/targets/gbm/Makefile.am @@ -50,6 +50,13 @@ gbm_gallium_drm_la_LIBADD = \ $(LIBDRM_LIBS) \ -lm +if NEED_PIPE_LOADER_XLIB +gbm_gallium_drm_la_LIBADD += \ + $(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la \ + -lX11 -lXext -lXfixes \ + $(LIBDRM_LIBS) +endif + gbm_gallium_drm_la_LDFLAGS = -no-undefined -avoid-version -module # FIXME: this shouldn't be needed diff --git a/src/gallium/targets/opencl/Makefile.am b/src/gallium/targets/opencl/Makefile.am index 8eec405..e82889e 100644 --- a/src/gallium/targets/opencl/Makefile.am +++ b/src/gallium/targets/opencl/Makefile.am @@ -28,6 +28,13 @@ lib@OPENCL_LIBNAME@_la_LIBADD = \ -lclangBasic \ $(LLVM_LIBS) +if NEED_PIPE_LOADER_XLIB +lib@OPENCL_LIBNAME@_la_LIBADD += \ + $(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la \ + -lX11 -lXext -lXfixes \ + $(LIBDRM_LIBS) +endif + lib@OPENCL_LIBNAME@_la_SOURCES = # Force usage of a C++ linker diff --git a/src/gallium/targets/xa/Makefile.am b/src/gallium/targets/xa/Makefile.am index e305dbf..7ab57ff 100644 --- a/src/gallium/targets/xa/Makefile.am +++ b/src/gallium/targets/xa/Makefile.am @@ -48,6 +48,13 @@ libxatracker_la_LIBADD = \ $(LIBUDEV_LIBS) \ $(LIBDRM_LIBS) +if NEED_PIPE_LOADER_XLIB +libxatracker_la_LIBADD += \ + $(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la \ + -lX11 -lXext -lXfixes \ + $(LIBDRM_LIBS) +endif + libxatracker_la_LDFLAGS = \ -no-undefined \ -version-number $(XA_MAJOR):$(XA_MINOR):$(XA_TINY) diff --git a/src/gallium/tests/trivial/Makefile.am b/src/gallium/tests/trivial/Makefile.am index 656ee64..15a81b3 100644 --- a/src/gallium/tests/trivial/Makefile.am +++ b/src/gallium/tests/trivial/Makefile.am @@ -20,6 +20,13 @@ LDADD = $(GALLIUM_PIPE_LOADER_CLIENT_LIBS) \ $(PTHREAD_LIBS) \ -lm +if NEED_PIPE_LOADER_XLIB +LDADD += \ + $(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la \ + -lX11 -lXext -lXfixes \ + $(LIBDRM_LIBS) +endif + noinst_PROGRAMS = compute tri quad-tex compute_SOURCES = compute.c -- 1.9.0