diff mbox

[PATCHv2,1/4] pipe-loader: split out "client" version

Message ID 1392057261-25942-2-git-send-email-robdclark@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rob Clark Feb. 10, 2014, 6:34 p.m. UTC
From: Rob Clark <robclark@freedesktop.org>

Build two versions of pipe-loader, with only the client version linking
in x11 client side dependencies.  This will allow the XA state tracker
to use pipe-loader.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
---
 configure.ac                                       | 14 +++++++++++--
 src/gallium/auxiliary/pipe-loader/Makefile.am      | 24 ++++++++++++++++++----
 src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c |  2 ++
 src/gallium/targets/gbm/Makefile.am                |  4 ++--
 src/gallium/targets/opencl/Makefile.am             |  4 ++--
 src/gallium/tests/trivial/Makefile.am              |  4 ++--
 6 files changed, 40 insertions(+), 12 deletions(-)

Comments

Emil Velikov Feb. 11, 2014, 7:12 p.m. UTC | #1
On 10/02/14 18:34, Rob Clark wrote:
> From: Rob Clark <robclark@freedesktop.org>
> 
> Build two versions of pipe-loader, with only the client version linking
> in x11 client side dependencies.  This will allow the XA state tracker
> to use pipe-loader.
> 
Seems like you got me confused here - you're trying to get away from the
null_sw_create which is a dummy stub, on the argument of x11 dependencies.

AFAICS both are completely unrelated, and the former should be fixed by
adding the following during link stage.

$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la

x11 dependencies should not affect you and are properly resolved by the
first 5 (or so) patches in my series.

-Emil

> Signed-off-by: Rob Clark <robclark@freedesktop.org>
> ---
>  configure.ac                                       | 14 +++++++++++--
>  src/gallium/auxiliary/pipe-loader/Makefile.am      | 24 ++++++++++++++++++----
>  src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c |  2 ++
>  src/gallium/targets/gbm/Makefile.am                |  4 ++--
>  src/gallium/targets/opencl/Makefile.am             |  4 ++--
>  src/gallium/tests/trivial/Makefile.am              |  4 ++--
>  6 files changed, 40 insertions(+), 12 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index ba158e8..cba6301 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1895,6 +1895,11 @@ AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -
>                                                    "x$HAVE_GALLIUM_SOFTPIPE" = xyes \
>                                                    && test "x$MESA_LLVM" = x1)
>  
> +# NOTE: anything using xcb or other client side libs ends up in separate
> +#       _CLIENT variables.  The pipe loader is built in two variants,
> +#       one that is standalone and does not link any x client libs (for
> +#       use by XA tracker in particular, but could be used in any case
> +#       where communication with xserver is not desired).
>  if test "x$enable_gallium_loader" = xyes; then
>      GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
>  
> @@ -1903,13 +1908,18 @@ if test "x$enable_gallium_loader" = xyes; then
>          PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
>                            pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
>          if test "x$pipe_loader_have_xcb" = xyes; then
> -            GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XCB"
> -            GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
> +            GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
> +            GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
>          fi
>      fi
>  
> +    GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
> +    GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
> +
>      AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
>      AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
> +    AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
> +    AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
>  fi
>  
>  AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
> diff --git a/src/gallium/auxiliary/pipe-loader/Makefile.am b/src/gallium/auxiliary/pipe-loader/Makefile.am
> index 8e4d034..72b4798 100644
> --- a/src/gallium/auxiliary/pipe-loader/Makefile.am
> +++ b/src/gallium/auxiliary/pipe-loader/Makefile.am
> @@ -1,7 +1,6 @@
>  AUTOMAKE_OPTIONS = subdir-objects
>  
>  AM_CPPFLAGS = $(DEFINES) \
> -	$(GALLIUM_PIPE_LOADER_DEFINES) \
>  	-I$(top_srcdir)/include \
>  	-I$(top_srcdir)/src/loader \
>  	-I$(top_srcdir)/src/gallium/include \
> @@ -12,8 +11,9 @@ noinst_LTLIBRARIES =
>  
>  if HAVE_LOADER_GALLIUM
>  noinst_LTLIBRARIES += libpipe_loader.la
> +noinst_LTLIBRARIES += libpipe_loader_client.la
>  
> -libpipe_loader_la_SOURCES = \
> +COMMON_SOURCES = \
>  	pipe_loader.h \
>  	pipe_loader_priv.h \
>  	pipe_loader.c \
> @@ -22,10 +22,26 @@ libpipe_loader_la_SOURCES = \
>  if HAVE_DRM_LOADER_GALLIUM
>  AM_CFLAGS = $(LIBDRM_CFLAGS)
>  
> -libpipe_loader_la_SOURCES += pipe_loader_drm.c
> +COMMON_SOURCES += pipe_loader_drm.c
>  
> -libpipe_loader_la_LIBADD = \
> +COMMON_LIBADD = \
>  	$(top_builddir)/src/loader/libloader.la
>  
>  endif
> +
> +libpipe_loader_la_CFLAGS  = \
> +	-DSTANDALONE_LOADER \
> +	$(GALLIUM_PIPE_LOADER_DEFINES) \
> +	$(AM_CFLAGS) $(AM_CPPFLAGS)
> +libpipe_loader_la_SOURCES = $(COMMON_SOURCES)
> +libpipe_loader_la_LIBADD  = $(COMMON_LIBADD) \
> +	$(GALLIUM_PIPE_LOADER_LIBS)
> +
> +libpipe_loader_client_la_CFLAGS  = \
> +	$(GALLIUM_PIPE_LOADER_CLIENT_DEFINES) \
> +	$(AM_CFLAGS) $(AM_CPPFLAGS)
> +libpipe_loader_client_la_SOURCES = $(COMMON_SOURCES)
> +libpipe_loader_client_la_LIBADD  = $(COMMON_LIBADD) \
> +	$(GALLIUM_PIPE_LOADER_CLIENT_LIBS)
> +
>  endif
> diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> index 95a4f84..e53e8af 100644
> --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> @@ -47,7 +47,9 @@ static struct sw_winsys *(*backends[])() = {
>  #ifdef HAVE_WINSYS_XLIB
>     x11_sw_create,
>  #endif
> +#ifndef STANDALONE_LOADER
>     null_sw_create
> +#endif
>  };
>  
>  int
> diff --git a/src/gallium/targets/gbm/Makefile.am b/src/gallium/targets/gbm/Makefile.am
> index 4299d07..30a3427 100644
> --- a/src/gallium/targets/gbm/Makefile.am
> +++ b/src/gallium/targets/gbm/Makefile.am
> @@ -42,8 +42,8 @@ gbm_LTLIBRARIES = gbm_gallium_drm.la
>  gbm_gallium_drm_la_SOURCES = gbm.c
>  
>  gbm_gallium_drm_la_LIBADD = \
> -	$(GALLIUM_PIPE_LOADER_LIBS) \
> -	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
> +	$(GALLIUM_PIPE_LOADER_CLIENT_LIBS) \
> +	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_client.la \
>  	$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \
>  	$(top_builddir)/src/gallium/state_trackers/gbm/libgbm.la \
>  	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
> diff --git a/src/gallium/targets/opencl/Makefile.am b/src/gallium/targets/opencl/Makefile.am
> index 653302c..a75b49c 100644
> --- a/src/gallium/targets/opencl/Makefile.am
> +++ b/src/gallium/targets/opencl/Makefile.am
> @@ -7,11 +7,11 @@ lib@OPENCL_LIBNAME@_la_LDFLAGS = \
>  	-version-number 1:0
>  
>  lib@OPENCL_LIBNAME@_la_LIBADD = \
> -	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
> +	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_client.la \
>  	$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \
>  	$(top_builddir)/src/gallium/state_trackers/clover/libclover.la \
>  	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
> -	$(GALLIUM_PIPE_LOADER_LIBS) $(LIBUDEV_LIBS) \
> +	$(GALLIUM_PIPE_LOADER_CLIENT_LIBS) $(LIBUDEV_LIBS) \
>  	-ldl \
>  	-lclangCodeGen \
>  	-lclangFrontendTool \
> diff --git a/src/gallium/tests/trivial/Makefile.am b/src/gallium/tests/trivial/Makefile.am
> index d65eb86..65fa90d 100644
> --- a/src/gallium/tests/trivial/Makefile.am
> +++ b/src/gallium/tests/trivial/Makefile.am
> @@ -11,8 +11,8 @@ AM_CPPFLAGS = \
>  	-DPIPE_SEARCH_DIR=\"$(PIPE_SRC_DIR)/.libs\" \
>  	$(GALLIUM_PIPE_LOADER_DEFINES)
>  
> -LDADD = $(GALLIUM_PIPE_LOADER_LIBS) \
> -	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
> +LDADD = $(GALLIUM_PIPE_LOADER_CLIENT_LIBS) \
> +	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_client.la \
>  	$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \
>  	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
>  	$(LIBUDEV_LIBS) \
>
diff mbox

Patch

diff --git a/configure.ac b/configure.ac
index ba158e8..cba6301 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1895,6 +1895,11 @@  AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -
                                                   "x$HAVE_GALLIUM_SOFTPIPE" = xyes \
                                                   && test "x$MESA_LLVM" = x1)
 
+# NOTE: anything using xcb or other client side libs ends up in separate
+#       _CLIENT variables.  The pipe loader is built in two variants,
+#       one that is standalone and does not link any x client libs (for
+#       use by XA tracker in particular, but could be used in any case
+#       where communication with xserver is not desired).
 if test "x$enable_gallium_loader" = xyes; then
     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
 
@@ -1903,13 +1908,18 @@  if test "x$enable_gallium_loader" = xyes; then
         PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
                           pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
         if test "x$pipe_loader_have_xcb" = xyes; then
-            GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XCB"
-            GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
+            GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
+            GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
         fi
     fi
 
+    GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
+    GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
+
     AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
     AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
+    AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
+    AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
 fi
 
 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
diff --git a/src/gallium/auxiliary/pipe-loader/Makefile.am b/src/gallium/auxiliary/pipe-loader/Makefile.am
index 8e4d034..72b4798 100644
--- a/src/gallium/auxiliary/pipe-loader/Makefile.am
+++ b/src/gallium/auxiliary/pipe-loader/Makefile.am
@@ -1,7 +1,6 @@ 
 AUTOMAKE_OPTIONS = subdir-objects
 
 AM_CPPFLAGS = $(DEFINES) \
-	$(GALLIUM_PIPE_LOADER_DEFINES) \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/src/loader \
 	-I$(top_srcdir)/src/gallium/include \
@@ -12,8 +11,9 @@  noinst_LTLIBRARIES =
 
 if HAVE_LOADER_GALLIUM
 noinst_LTLIBRARIES += libpipe_loader.la
+noinst_LTLIBRARIES += libpipe_loader_client.la
 
-libpipe_loader_la_SOURCES = \
+COMMON_SOURCES = \
 	pipe_loader.h \
 	pipe_loader_priv.h \
 	pipe_loader.c \
@@ -22,10 +22,26 @@  libpipe_loader_la_SOURCES = \
 if HAVE_DRM_LOADER_GALLIUM
 AM_CFLAGS = $(LIBDRM_CFLAGS)
 
-libpipe_loader_la_SOURCES += pipe_loader_drm.c
+COMMON_SOURCES += pipe_loader_drm.c
 
-libpipe_loader_la_LIBADD = \
+COMMON_LIBADD = \
 	$(top_builddir)/src/loader/libloader.la
 
 endif
+
+libpipe_loader_la_CFLAGS  = \
+	-DSTANDALONE_LOADER \
+	$(GALLIUM_PIPE_LOADER_DEFINES) \
+	$(AM_CFLAGS) $(AM_CPPFLAGS)
+libpipe_loader_la_SOURCES = $(COMMON_SOURCES)
+libpipe_loader_la_LIBADD  = $(COMMON_LIBADD) \
+	$(GALLIUM_PIPE_LOADER_LIBS)
+
+libpipe_loader_client_la_CFLAGS  = \
+	$(GALLIUM_PIPE_LOADER_CLIENT_DEFINES) \
+	$(AM_CFLAGS) $(AM_CPPFLAGS)
+libpipe_loader_client_la_SOURCES = $(COMMON_SOURCES)
+libpipe_loader_client_la_LIBADD  = $(COMMON_LIBADD) \
+	$(GALLIUM_PIPE_LOADER_CLIENT_LIBS)
+
 endif
diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
index 95a4f84..e53e8af 100644
--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
+++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
@@ -47,7 +47,9 @@  static struct sw_winsys *(*backends[])() = {
 #ifdef HAVE_WINSYS_XLIB
    x11_sw_create,
 #endif
+#ifndef STANDALONE_LOADER
    null_sw_create
+#endif
 };
 
 int
diff --git a/src/gallium/targets/gbm/Makefile.am b/src/gallium/targets/gbm/Makefile.am
index 4299d07..30a3427 100644
--- a/src/gallium/targets/gbm/Makefile.am
+++ b/src/gallium/targets/gbm/Makefile.am
@@ -42,8 +42,8 @@  gbm_LTLIBRARIES = gbm_gallium_drm.la
 gbm_gallium_drm_la_SOURCES = gbm.c
 
 gbm_gallium_drm_la_LIBADD = \
-	$(GALLIUM_PIPE_LOADER_LIBS) \
-	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
+	$(GALLIUM_PIPE_LOADER_CLIENT_LIBS) \
+	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_client.la \
 	$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \
 	$(top_builddir)/src/gallium/state_trackers/gbm/libgbm.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
diff --git a/src/gallium/targets/opencl/Makefile.am b/src/gallium/targets/opencl/Makefile.am
index 653302c..a75b49c 100644
--- a/src/gallium/targets/opencl/Makefile.am
+++ b/src/gallium/targets/opencl/Makefile.am
@@ -7,11 +7,11 @@  lib@OPENCL_LIBNAME@_la_LDFLAGS = \
 	-version-number 1:0
 
 lib@OPENCL_LIBNAME@_la_LIBADD = \
-	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
+	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_client.la \
 	$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \
 	$(top_builddir)/src/gallium/state_trackers/clover/libclover.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
-	$(GALLIUM_PIPE_LOADER_LIBS) $(LIBUDEV_LIBS) \
+	$(GALLIUM_PIPE_LOADER_CLIENT_LIBS) $(LIBUDEV_LIBS) \
 	-ldl \
 	-lclangCodeGen \
 	-lclangFrontendTool \
diff --git a/src/gallium/tests/trivial/Makefile.am b/src/gallium/tests/trivial/Makefile.am
index d65eb86..65fa90d 100644
--- a/src/gallium/tests/trivial/Makefile.am
+++ b/src/gallium/tests/trivial/Makefile.am
@@ -11,8 +11,8 @@  AM_CPPFLAGS = \
 	-DPIPE_SEARCH_DIR=\"$(PIPE_SRC_DIR)/.libs\" \
 	$(GALLIUM_PIPE_LOADER_DEFINES)
 
-LDADD = $(GALLIUM_PIPE_LOADER_LIBS) \
-	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
+LDADD = $(GALLIUM_PIPE_LOADER_CLIENT_LIBS) \
+	$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_client.la \
 	$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
 	$(LIBUDEV_LIBS) \