On Fri, 2011-02-04 at 16:42 +0200, Rami Ylimäki wrote:

> This change makes it easier to use different compiler and linker flags
> for libX11 and libX11-xcb. Also libX11-xcb doesn't depend on libX11
> anymore, because it's not using any of its symbols.
> 
> Signed-off-by: Rami Ylimäki <[email protected]>
> ---
>  configure.ac        |    1 +
>  src/Makefile.am     |    9 +++------
>  src/Xxcbint.h       |   46 ----------------------------------------------
>  src/x11_xcb.c       |   15 ---------------
>  src/xcb/Makefile.am |   26 ++++++++++++++++++++++++++
>  src/xcb/Xxcbint.h   |   46 ++++++++++++++++++++++++++++++++++++++++++++++
>  src/xcb/x11_xcb.c   |   15 +++++++++++++++
>  7 files changed, 91 insertions(+), 67 deletions(-)
>  delete mode 100644 src/Xxcbint.h
>  delete mode 100644 src/x11_xcb.c
>  create mode 100644 src/xcb/Makefile.am
>  create mode 100644 src/xcb/Xxcbint.h
>  create mode 100644 src/xcb/x11_xcb.c
> 
> diff --git a/configure.ac b/configure.ac
> index 40d032d..a69735b 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -448,6 +448,7 @@ AC_OUTPUT([Makefile

You will need to rebase, file has changed since.

>             man/xkb/Makefile
>             src/Makefile
>             src/util/Makefile
> +        src/xcb/Makefile
>          src/xcms/Makefile
>          src/xlibi18n/Makefile
>          modules/Makefile
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 8b0953c..05c7663 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -1,9 +1,9 @@
>  if XKB
>  XKB_SUBDIRS = xkb
>  endif
> -SUBDIRS = util xcms xlibi18n $(XKB_SUBDIRS)
> +SUBDIRS = util xcms xlibi18n $(XKB_SUBDIRS) . xcb

Can you explain why libX11 must be built before xcb subdir?
The commit text says it does not use any symbols from libX11.


>  
> -lib_LTLIBRARIES = libX11.la libX11-xcb.la
> +lib_LTLIBRARIES = libX11.la
>  
>  BUILT_SOURCES=ks_tables.h
>  CLEANFILES=ks_tables.h ks_tables_h
> @@ -13,6 +13,7 @@ AM_CPPFLAGS= \
>       -I$(top_srcdir)/include/X11 \
>       -I$(top_builddir)/include \
>       -I$(top_builddir)/include/X11 \
> +     -I$(top_srcdir)/src/xcb \
>       -I$(top_srcdir)/src/xcms \
>       -I$(top_srcdir)/src/xkb \
>       -I$(top_srcdir)/src/xlibi18n \
> @@ -349,10 +350,6 @@ EXTRA_DIST = \
>       udcInf.c \
>       UIThrStubs.c 
>  
> -libX11_xcb_la_SOURCES = x11_xcb.c Xxcbint.h
> -libX11_xcb_la_LDFLAGS = -version-number 1:0:0 -no-undefined
> -libX11_xcb_la_LIBADD = libX11.la
> -
>  #
>  # Figure out which sub-libraries to link into Xlib
>  #
> diff --git a/src/Xxcbint.h b/src/Xxcbint.h
> deleted file mode 100644
> index 1fa1a4d..0000000
> --- a/src/Xxcbint.h
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett
> - * This file is licensed under the MIT license. See the file COPYING. */
> -
> -#ifndef XXCBINT_H
> -#define XXCBINT_H
> -
> -#include <assert.h>
> -#include <stdint.h>
> -#include <X11/Xlibint.h>
> -#include <X11/Xlib-xcb.h>
> -#include "locking.h"
> -
> -#define XLIB_SEQUENCE_COMPARE(a,op,b)        (((long) (a) - (long) (b)) op 0)
> -
> -typedef struct PendingRequest PendingRequest;
> -struct PendingRequest {
> -     PendingRequest *next;
> -     unsigned long sequence;
> -     unsigned reply_waiter;
> -};
> -
> -typedef struct _X11XCBPrivate {
> -     xcb_connection_t *connection;
> -     PendingRequest *pending_requests;
> -     PendingRequest *pending_requests_tail;
> -     xcb_generic_event_t *next_event;
> -     char *real_bufmax;
> -     char *reply_data;
> -     int reply_length;
> -     int reply_consumed;
> -     uint64_t last_flushed;
> -     enum XEventQueueOwner event_owner;
> -     XID next_xid;
> -
> -     /* handle simultaneous threads waiting for responses */
> -     xcondition_t event_notify;
> -     int event_waiter;
> -     xcondition_t reply_notify;
> -} _X11XCBPrivate;
> -
> -/* xcb_disp.c */
> -
> -int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp);
> -void _XFreeX11XCBStructure(Display *dpy);
> -
> -#endif /* XXCBINT_H */
> diff --git a/src/x11_xcb.c b/src/x11_xcb.c
> deleted file mode 100644
> index 3ddf403..0000000
> --- a/src/x11_xcb.c
> +++ /dev/null
> @@ -1,15 +0,0 @@
> -/* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett
> - * This file is licensed under the MIT license. See the file COPYING. */
> -
> -#include "Xlibint.h"
> -#include "Xxcbint.h"
> -
> -xcb_connection_t *XGetXCBConnection(Display *dpy)
> -{
> -     return dpy->xcb->connection;
> -}
> -
> -void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner)
> -{
> -     dpy->xcb->event_owner = owner;
> -}
> diff --git a/src/xcb/Makefile.am b/src/xcb/Makefile.am
> new file mode 100644
> index 0000000..5c68639
> --- /dev/null
> +++ b/src/xcb/Makefile.am
> @@ -0,0 +1,26 @@
> +AM_CPPFLAGS= \
> +     -I$(top_srcdir)/include/X11 \
> +     -I$(top_builddir)/include/X11 \
> +     -I$(top_srcdir)/src \
> +     -D_BSD_SOURCE

_BSD_SOURCE is not required due to AC_USE_SYSTEM_EXTENSIONS.
Notice the duplication in the gcc command.

> +
> +AM_CFLAGS= \
> +     $(X11_CFLAGS) \
> +     $(XMALLOC_ZERO_CFLAGS) \
> +     $(CWARNFLAGS)
> +
> +lib_LTLIBRARIES = libX11-xcb.la
> +
> +libX11_xcb_la_SOURCES = x11_xcb.c Xxcbint.h
> +libX11_xcb_la_LDFLAGS = -version-number 1:0:0 -no-undefined

AM_LDFLAGS would do just fine. Now that each target is separated no need
to use per-target flags.

> +
> +if LINT
> +# Check source code with tools like lint & sparse
> +
> +ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
> +             $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
> +
> +lint:
> +     $(LINT) $(ALL_LINT_FLAGS) $(libX11_xcb_la_SOURCES)
> +
> +endif LINT
> diff --git a/src/xcb/Xxcbint.h b/src/xcb/Xxcbint.h
> new file mode 100644
> index 0000000..1fa1a4d
> --- /dev/null
> +++ b/src/xcb/Xxcbint.h
> @@ -0,0 +1,46 @@
> +/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett
> + * This file is licensed under the MIT license. See the file COPYING. */
> +
> +#ifndef XXCBINT_H
> +#define XXCBINT_H
> +
> +#include <assert.h>
> +#include <stdint.h>
> +#include <X11/Xlibint.h>
> +#include <X11/Xlib-xcb.h>
> +#include "locking.h"
> +
> +#define XLIB_SEQUENCE_COMPARE(a,op,b)        (((long) (a) - (long) (b)) op 0)
> +
> +typedef struct PendingRequest PendingRequest;
> +struct PendingRequest {
> +     PendingRequest *next;
> +     unsigned long sequence;
> +     unsigned reply_waiter;
> +};
> +
> +typedef struct _X11XCBPrivate {
> +     xcb_connection_t *connection;
> +     PendingRequest *pending_requests;
> +     PendingRequest *pending_requests_tail;
> +     xcb_generic_event_t *next_event;
> +     char *real_bufmax;
> +     char *reply_data;
> +     int reply_length;
> +     int reply_consumed;
> +     uint64_t last_flushed;
> +     enum XEventQueueOwner event_owner;
> +     XID next_xid;
> +
> +     /* handle simultaneous threads waiting for responses */
> +     xcondition_t event_notify;
> +     int event_waiter;
> +     xcondition_t reply_notify;
> +} _X11XCBPrivate;
> +
> +/* xcb_disp.c */
> +
> +int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp);
> +void _XFreeX11XCBStructure(Display *dpy);
> +
> +#endif /* XXCBINT_H */
> diff --git a/src/xcb/x11_xcb.c b/src/xcb/x11_xcb.c
> new file mode 100644
> index 0000000..3ddf403
> --- /dev/null
> +++ b/src/xcb/x11_xcb.c
> @@ -0,0 +1,15 @@
> +/* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett
> + * This file is licensed under the MIT license. See the file COPYING. */
> +
> +#include "Xlibint.h"
> +#include "Xxcbint.h"
> +
> +xcb_connection_t *XGetXCBConnection(Display *dpy)
> +{
> +     return dpy->xcb->connection;
> +}
> +
> +void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner)
> +{
> +     dpy->xcb->event_owner = owner;
> +}


Thanks!

Reviewed-by: Gaetan Nadon <[email protected]>

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to