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

v2:
 - Wrap sw/xlib/xlib_sw_winsys.h to handle compilation on systems
lacking X11 headers. Spotted by Christian Prochaska.

Tested-by: Tom Stellard <thomas.stellard@amd.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75356
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
Emil Velikov 2014-02-22 16:44:14 +00:00
parent 0e7c30233f
commit 3445e8bb92
8 changed files with 41 additions and 7 deletions

View file

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

View file

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

View file

@ -35,7 +35,7 @@
#include "pipe/p_compiler.h"
#ifdef HAVE_WINSYS_XLIB
#ifdef HAVE_PIPE_LOADER_XLIB
#include <X11/Xlib.h>
#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.

View file

@ -31,7 +31,10 @@
#include "util/u_dl.h"
#include "sw/dri/dri_sw_winsys.h"
#include "sw/null/null_sw_winsys.h"
#ifdef HAVE_PIPE_LOADER_XLIB
/* Explicitly wrap the header to ease build without X11 headers */
#include "sw/xlib/xlib_sw_winsys.h"
#endif
#include "target-helpers/inline_sw_helper.h"
#include "state_tracker/drisw_api.h"
@ -49,7 +52,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)
{

View file

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

View file

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

View file

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

View file

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