diff mbox

[Xen-devel,v2] Move xenstore and libxc public headers to include subdir

Message ID 1405090093-29601-1-git-send-email-stefano.stabellini@eu.citrix.com
State New
Headers show

Commit Message

Stefano Stabellini July 11, 2014, 2:48 p.m. UTC
Also moves xc_dom.h to include as it is used often by other xen tools.
Use the new include subdirectories to build Xen tools and qemu-xen.

Add the old libxc include path to the programs that need it to build,
on a case by case basis and commeting that they shouldn't require
internal libxc headers to build.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---

Changes in v2:

- squash the patches together to retain bisectibility;
- use the new include subdirectories to build xen tools, do not add the
old libxc include path to CFLAGS_libxenctrl and the old xenstore include
path to CFLAGS_libxenstore.

---
 tools/Makefile                               |    6 +++---
 tools/Rules.mk                               |    6 +++---
 tools/blktap2/drivers/Makefile               |    2 ++
 tools/libxc/Makefile                         |    6 +++---
 tools/libxc/{ => include}/xc_dom.h           |    0
 tools/libxc/{ => include}/xenctrl.h          |    0
 tools/libxc/{ => include}/xenctrlosdep.h     |    0
 tools/libxc/{ => include}/xenguest.h         |    0
 tools/libxc/{ => include}/xentoollog.h       |    0
 tools/misc/Makefile                          |    2 ++
 tools/python/setup.py                        |    4 ++--
 tools/xcutils/Makefile                       |    3 ++-
 tools/xenpaging/Makefile                     |    3 ++-
 tools/xenstore/Makefile                      |    9 +++++----
 tools/xenstore/{ => include}/compat/xs.h     |    0
 tools/xenstore/{ => include}/compat/xs_lib.h |    0
 tools/xenstore/{ => include}/xenstore.h      |    0
 tools/xenstore/{ => include}/xenstore_lib.h  |    0
 18 files changed, 24 insertions(+), 17 deletions(-)
 rename tools/libxc/{ => include}/xc_dom.h (100%)
 rename tools/libxc/{ => include}/xenctrl.h (100%)
 rename tools/libxc/{ => include}/xenctrlosdep.h (100%)
 rename tools/libxc/{ => include}/xenguest.h (100%)
 rename tools/libxc/{ => include}/xentoollog.h (100%)
 rename tools/xenstore/{ => include}/compat/xs.h (100%)
 rename tools/xenstore/{ => include}/compat/xs_lib.h (100%)
 rename tools/xenstore/{ => include}/xenstore.h (100%)
 rename tools/xenstore/{ => include}/xenstore_lib.h (100%)

diff --git a/tools/xenstore/compat/xs.h b/tools/xenstore/include/compat/xs.h
similarity index 100%
rename from tools/xenstore/compat/xs.h
rename to tools/xenstore/include/compat/xs.h
diff --git a/tools/xenstore/compat/xs_lib.h b/tools/xenstore/include/compat/xs_lib.h
similarity index 100%
rename from tools/xenstore/compat/xs_lib.h
rename to tools/xenstore/include/compat/xs_lib.h
diff --git a/tools/xenstore/xenstore.h b/tools/xenstore/include/xenstore.h
similarity index 100%
rename from tools/xenstore/xenstore.h
rename to tools/xenstore/include/xenstore.h
diff --git a/tools/xenstore/xenstore_lib.h b/tools/xenstore/include/xenstore_lib.h
similarity index 100%
rename from tools/xenstore/xenstore_lib.h
rename to tools/xenstore/include/xenstore_lib.h

Comments

Andrew Cooper July 11, 2014, 3:20 p.m. UTC | #1
On 11/07/14 15:48, Stefano Stabellini wrote:
> Also moves xc_dom.h to include as it is used often by other xen tools.
> Use the new include subdirectories to build Xen tools and qemu-xen.
>
> Add the old libxc include path to the programs that need it to build,
> on a case by case basis and commeting that they shouldn't require
> internal libxc headers to build.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> ---
>
> Changes in v2:
>
> - squash the patches together to retain bisectibility;
> - use the new include subdirectories to build xen tools, do not add the
> old libxc include path to CFLAGS_libxenctrl and the old xenstore include
> path to CFLAGS_libxenstore.
>
> ---
>  tools/Makefile                               |    6 +++---
>  tools/Rules.mk                               |    6 +++---
>  tools/blktap2/drivers/Makefile               |    2 ++
>  tools/libxc/Makefile                         |    6 +++---
>  tools/libxc/{ => include}/xc_dom.h           |    0
>  tools/libxc/{ => include}/xenctrl.h          |    0
>  tools/libxc/{ => include}/xenctrlosdep.h     |    0
>  tools/libxc/{ => include}/xenguest.h         |    0
>  tools/libxc/{ => include}/xentoollog.h       |    0
>  tools/misc/Makefile                          |    2 ++
>  tools/python/setup.py                        |    4 ++--
>  tools/xcutils/Makefile                       |    3 ++-
>  tools/xenpaging/Makefile                     |    3 ++-
>  tools/xenstore/Makefile                      |    9 +++++----
>  tools/xenstore/{ => include}/compat/xs.h     |    0
>  tools/xenstore/{ => include}/compat/xs_lib.h |    0
>  tools/xenstore/{ => include}/xenstore.h      |    0
>  tools/xenstore/{ => include}/xenstore_lib.h  |    0
>  18 files changed, 24 insertions(+), 17 deletions(-)
>  rename tools/libxc/{ => include}/xc_dom.h (100%)
>  rename tools/libxc/{ => include}/xenctrl.h (100%)
>  rename tools/libxc/{ => include}/xenctrlosdep.h (100%)
>  rename tools/libxc/{ => include}/xenguest.h (100%)
>  rename tools/libxc/{ => include}/xentoollog.h (100%)
>  rename tools/xenstore/{ => include}/compat/xs.h (100%)
>  rename tools/xenstore/{ => include}/compat/xs_lib.h (100%)
>  rename tools/xenstore/{ => include}/xenstore.h (100%)
>  rename tools/xenstore/{ => include}/xenstore_lib.h (100%)
>
> diff --git a/tools/Makefile b/tools/Makefile
> index f4aa200..5f32dcc 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -188,9 +188,9 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-find
>  		--includedir=$(PREFIX)/lib/xen/include \
>  		--source-path=$$source \
>  		--extra-cflags="-I$(XEN_ROOT)/tools/include \
> -		-I$(XEN_ROOT)/tools/libxc \
> -		-I$(XEN_ROOT)/tools/xenstore \
> -		-I$(XEN_ROOT)/tools/xenstore/compat \
> +		-I$(XEN_ROOT)/tools/libxc/include \
> +		-I$(XEN_ROOT)/tools/xenstore/include \
> +		-I$(XEN_ROOT)/tools/xenstore/compat/include \

Not directly related to your patch but...

andrewcoop@andrewcoop:/local/xen.git/tools/qemu-xen-dir-remote$ git grep
"xs\.h"
configure:#include <xs.h>
configure:#include <xs.h>
configure:#include <xs.h>
configure:#include <xs.h>
include/hw/xen/xen_common.h:#  include <xs.h>

Isn't it time we got code like this off using the legacy xs.h?

>  		$(EXTRA_CFLAGS_QEMU_XEN)" \
>  		--extra-ldflags="-L$(XEN_ROOT)/tools/libxc \
>  		-L$(XEN_ROOT)/tools/xenstore \
> diff --git a/tools/Rules.mk b/tools/Rules.mk
> index 13d8fc1..53f51a8 100644
> --- a/tools/Rules.mk
> +++ b/tools/Rules.mk
> @@ -19,15 +19,15 @@ XEN_LIBVCHAN       = $(XEN_ROOT)/tools/libvchan
>  
>  CFLAGS_xeninclude = -I$(XEN_INCLUDE)
>  
> -CFLAGS_libxenctrl = -I$(XEN_LIBXC) $(CFLAGS_xeninclude)
> +CFLAGS_libxenctrl = -I$(XEN_LIBXC)/include $(CFLAGS_xeninclude)
>  LDLIBS_libxenctrl = $(XEN_LIBXC)/libxenctrl.so
>  SHLIB_libxenctrl  = -Wl,-rpath-link=$(XEN_LIBXC)
>  
> -CFLAGS_libxenguest = -I$(XEN_LIBXC) $(CFLAGS_xeninclude)
> +CFLAGS_libxenguest = -I$(XEN_LIBXC)/include $(CFLAGS_xeninclude)
>  LDLIBS_libxenguest = $(XEN_LIBXC)/libxenguest.so
>  SHLIB_libxenguest  = -Wl,-rpath-link=L$(XEN_LIBXC)
>  
> -CFLAGS_libxenstore = -I$(XEN_XENSTORE) $(CFLAGS_xeninclude)
> +CFLAGS_libxenstore = -I$(XEN_XENSTORE)/include $(CFLAGS_xeninclude)
>  LDLIBS_libxenstore = $(XEN_XENSTORE)/libxenstore.so
>  SHLIB_libxenstore  = -Wl,-rpath-link=$(XEN_XENSTORE)
>  
> diff --git a/tools/blktap2/drivers/Makefile b/tools/blktap2/drivers/Makefile
> index 1129ca1..7df9bc4 100644
> --- a/tools/blktap2/drivers/Makefile
> +++ b/tools/blktap2/drivers/Makefile
> @@ -16,6 +16,8 @@ CFLAGS    += -I$(BLKTAP_ROOT)/include -I$(BLKTAP_ROOT)/drivers
>  CFLAGS    += $(CFLAGS_libxenctrl)
>  CFLAGS    += -D_GNU_SOURCE
>  CFLAGS    += -DUSE_NFS_LOCKS
> +# drivers/block-log.c incorrectly uses libxc internals
> +CFLAGS    += -I$(XEN_ROOT)/tools/libxc
>  
>  ifeq ($(CONFIG_X86_64),y)
>  CFLAGS            += -fPIC
> diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile
> index f77677c..da59e10 100644
> --- a/tools/libxc/Makefile
> +++ b/tools/libxc/Makefile
> @@ -89,7 +89,7 @@ OSDEP_SRCS-y                 += xenctrl_osdep_ENOSYS.c
>  -include $(XEN_TARGET_ARCH)/Makefile
>  
>  CFLAGS   += -Werror -Wmissing-prototypes
> -CFLAGS   += -I. $(CFLAGS_xeninclude)
> +CFLAGS   += -I. -I./include $(CFLAGS_xeninclude)
>  
>  # Needed for posix_fadvise64() in xc_linux.c
>  CFLAGS-$(CONFIG_Linux) += -D_GNU_SOURCE
> @@ -140,12 +140,12 @@ install: build
>  	$(INSTALL_DATA) libxenctrl.a $(DESTDIR)$(LIBDIR)
>  	ln -sf libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenctrl.so.$(MAJOR)
>  	ln -sf libxenctrl.so.$(MAJOR) $(DESTDIR)$(LIBDIR)/libxenctrl.so
> -	$(INSTALL_DATA) xenctrl.h xenctrlosdep.h xentoollog.h $(DESTDIR)$(INCLUDEDIR)
> +	$(INSTALL_DATA) include/xenctrl.h include/xenctrlosdep.h include/xentoollog.h $(DESTDIR)$(INCLUDEDIR)
>  	$(INSTALL_PROG) libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)
>  	$(INSTALL_DATA) libxenguest.a $(DESTDIR)$(LIBDIR)
>  	ln -sf libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenguest.so.$(MAJOR)
>  	ln -sf libxenguest.so.$(MAJOR) $(DESTDIR)$(LIBDIR)/libxenguest.so
> -	$(INSTALL_DATA) xenguest.h $(DESTDIR)$(INCLUDEDIR)
> +	$(INSTALL_DATA) include/xenguest.h $(DESTDIR)$(INCLUDEDIR)
>  
>  .PHONY: TAGS
>  TAGS:
> diff --git a/tools/libxc/xc_dom.h b/tools/libxc/include/xc_dom.h
> similarity index 100%
> rename from tools/libxc/xc_dom.h
> rename to tools/libxc/include/xc_dom.h
> diff --git a/tools/libxc/xenctrl.h b/tools/libxc/include/xenctrl.h
> similarity index 100%
> rename from tools/libxc/xenctrl.h
> rename to tools/libxc/include/xenctrl.h
> diff --git a/tools/libxc/xenctrlosdep.h b/tools/libxc/include/xenctrlosdep.h
> similarity index 100%
> rename from tools/libxc/xenctrlosdep.h
> rename to tools/libxc/include/xenctrlosdep.h
> diff --git a/tools/libxc/xenguest.h b/tools/libxc/include/xenguest.h
> similarity index 100%
> rename from tools/libxc/xenguest.h
> rename to tools/libxc/include/xenguest.h
> diff --git a/tools/libxc/xentoollog.h b/tools/libxc/include/xentoollog.h
> similarity index 100%
> rename from tools/libxc/xentoollog.h
> rename to tools/libxc/include/xentoollog.h
> diff --git a/tools/misc/Makefile b/tools/misc/Makefile
> index 69b1817..266fd16 100644
> --- a/tools/misc/Makefile
> +++ b/tools/misc/Makefile
> @@ -6,6 +6,8 @@ CFLAGS += -Werror
>  CFLAGS += $(CFLAGS_libxenctrl)
>  CFLAGS += $(CFLAGS_xeninclude)
>  CFLAGS += $(CFLAGS_libxenstore)
> +# xen-hptool.c and xen-mfndump.c incorrectly use libxc internals
> +CFLAGS += -I$(XEN_ROOT)/tools/libxc
>  
>  HDRS     = $(wildcard *.h)
>  
> diff --git a/tools/python/setup.py b/tools/python/setup.py
> index 17ebb4a..a9cb9ad 100644
> --- a/tools/python/setup.py
> +++ b/tools/python/setup.py
> @@ -7,9 +7,9 @@ XEN_ROOT = "../.."
>  extra_compile_args  = [ "-fno-strict-aliasing", "-Werror" ]
>  
>  PATH_XEN      = XEN_ROOT + "/tools/include"
> -PATH_LIBXC    = XEN_ROOT + "/tools/libxc"
> +PATH_LIBXC    = XEN_ROOT + "/tools/libxc/include"
>  PATH_LIBXL    = XEN_ROOT + "/tools/libxl"
> -PATH_XENSTORE = XEN_ROOT + "/tools/xenstore"
> +PATH_XENSTORE = XEN_ROOT + "/tools/xenstore/include"

This breaks the .so references lower down, which will cause the python
bits to fail to link.

You should use PATH_$FOO + "/include" in the include_dir lists only.

~Andrew

>  
>  xc = Extension("xc",
>                 extra_compile_args = extra_compile_args,
> diff --git a/tools/xcutils/Makefile b/tools/xcutils/Makefile
> index 98706bf..f71703d 100644
> --- a/tools/xcutils/Makefile
> +++ b/tools/xcutils/Makefile
> @@ -15,7 +15,8 @@ PROGRAMS = readnotes lsevtchn
>  
>  CFLAGS += -Werror
>  
> -CFLAGS_readnotes.o  := $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest)
> +# incorrectly uses libxc internals
> +CFLAGS_readnotes.o  := $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) -I$(XEN_ROOT)/tools/libxc
>  CFLAGS_lsevtchn.o   := $(CFLAGS_libxenctrl)
>  
>  .PHONY: all
> diff --git a/tools/xenpaging/Makefile b/tools/xenpaging/Makefile
> index 548d9dd..054562d 100644
> --- a/tools/xenpaging/Makefile
> +++ b/tools/xenpaging/Makefile
> @@ -1,7 +1,8 @@
>  XEN_ROOT=$(CURDIR)/../..
>  include $(XEN_ROOT)/tools/Rules.mk
>  
> -CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenstore) $(PTHREAD_CFLAGS)
> +# xenpaging.c and file_ops.c incorrectly use libxc internals
> +CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenstore) $(PTHREAD_CFLAGS) -I$(XEN_ROOT)/tools/libxc
>  LDLIBS += $(LDLIBS_libxenctrl) $(LDLIBS_libxenstore) $(PTHREAD_LIBS)
>  LDFLAGS += $(PTHREAD_LDFLAGS)
>  
> diff --git a/tools/xenstore/Makefile b/tools/xenstore/Makefile
> index e34bd41..2947d3e 100644
> --- a/tools/xenstore/Makefile
> +++ b/tools/xenstore/Makefile
> @@ -6,6 +6,7 @@ MINOR = 3
>  
>  CFLAGS += -Werror
>  CFLAGS += -I.
> +CFLAGS += -I./include
>  CFLAGS += $(CFLAGS_libxenctrl)
>  
>  CLIENTS := xenstore-exists xenstore-list xenstore-read xenstore-rm xenstore-chmod
> @@ -126,10 +127,10 @@ install: all
>  	ln -sf libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenstore.so.$(MAJOR)
>  	ln -sf libxenstore.so.$(MAJOR) $(DESTDIR)$(LIBDIR)/libxenstore.so
>  	$(INSTALL_DATA) libxenstore.a $(DESTDIR)$(LIBDIR)
> -	$(INSTALL_DATA) xenstore.h $(DESTDIR)$(INCLUDEDIR)
> -	$(INSTALL_DATA) xenstore_lib.h $(DESTDIR)$(INCLUDEDIR)
> -	$(INSTALL_DATA) compat/xs.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs.h
> -	$(INSTALL_DATA) compat/xs_lib.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs_lib.h
> +	$(INSTALL_DATA) include/xenstore.h $(DESTDIR)$(INCLUDEDIR)
> +	$(INSTALL_DATA) include/xenstore_lib.h $(DESTDIR)$(INCLUDEDIR)
> +	$(INSTALL_DATA) include/compat/xs.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs.h
> +	$(INSTALL_DATA) include/compat/xs_lib.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs_lib.h
>  	ln -sf xenstore-compat/xs.h  $(DESTDIR)$(INCLUDEDIR)/xs.h
>  	ln -sf xenstore-compat/xs_lib.h $(DESTDIR)$(INCLUDEDIR)/xs_lib.h
>  
> diff --git a/tools/xenstore/compat/xs.h b/tools/xenstore/include/compat/xs.h
> similarity index 100%
> rename from tools/xenstore/compat/xs.h
> rename to tools/xenstore/include/compat/xs.h
> diff --git a/tools/xenstore/compat/xs_lib.h b/tools/xenstore/include/compat/xs_lib.h
> similarity index 100%
> rename from tools/xenstore/compat/xs_lib.h
> rename to tools/xenstore/include/compat/xs_lib.h
> diff --git a/tools/xenstore/xenstore.h b/tools/xenstore/include/xenstore.h
> similarity index 100%
> rename from tools/xenstore/xenstore.h
> rename to tools/xenstore/include/xenstore.h
> diff --git a/tools/xenstore/xenstore_lib.h b/tools/xenstore/include/xenstore_lib.h
> similarity index 100%
> rename from tools/xenstore/xenstore_lib.h
> rename to tools/xenstore/include/xenstore_lib.h
Ian Campbell July 11, 2014, 3:21 p.m. UTC | #2
On Fri, 2014-07-11 at 16:20 +0100, Andrew Cooper wrote:

> Not directly related to your patch but...
> 
> andrewcoop@andrewcoop:/local/xen.git/tools/qemu-xen-dir-remote$ git grep
> "xs\.h"
> configure:#include <xs.h>
> configure:#include <xs.h>
> configure:#include <xs.h>
> configure:#include <xs.h>
> include/hw/xen/xen_common.h:#  include <xs.h>
> 
> Isn't it time we got code like this off using the legacy xs.h?

So long as that code also wants to build against older Xen we should
tolerate them preferring the older headers.
Ian Campbell July 11, 2014, 3:24 p.m. UTC | #3
On Fri, 2014-07-11 at 15:48 +0100, Stefano Stabellini wrote:
> Also moves xc_dom.h to include as it is used often by other xen tools.

I think you could say here "expected to be used by other in-tree xen
tools despite not currently being installed" or something to make it
clear that this isn't one of the many bad cases.

> Use the new include subdirectories to build Xen tools and qemu-xen.
> 
> Add the old libxc include path to the programs that need it to build,
> on a case by case basis and commeting that they shouldn't require

"commenting"

> internal libxc headers to build.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

This looks good to me, but ISTR you saying something about a qemu-trad
update which needed to be synchronised?

Ian.
Andrew Cooper July 11, 2014, 3:29 p.m. UTC | #4
On 11/07/14 16:21, Ian Campbell wrote:
> On Fri, 2014-07-11 at 16:20 +0100, Andrew Cooper wrote:
>
>> Not directly related to your patch but...
>>
>> andrewcoop@andrewcoop:/local/xen.git/tools/qemu-xen-dir-remote$ git grep
>> "xs\.h"
>> configure:#include <xs.h>
>> configure:#include <xs.h>
>> configure:#include <xs.h>
>> configure:#include <xs.h>
>> include/hw/xen/xen_common.h:#  include <xs.h>
>>
>> Isn't it time we got code like this off using the legacy xs.h?
> So long as that code also wants to build against older Xen we should
> tolerate them preferring the older headers.
>
>
>

The whole purpose of configure is to try and hide that stuff away. 
Surely it should try looking for xenstore.h and, failing that, look for
xs.h and fill in some variable?

We know for certain whether the version of qemu pointed to by xen.git
need the legacy headers still.

~Andrew
Ian Campbell July 11, 2014, 3:41 p.m. UTC | #5
On Fri, 2014-07-11 at 16:29 +0100, Andrew Cooper wrote:
> On 11/07/14 16:21, Ian Campbell wrote:
> > On Fri, 2014-07-11 at 16:20 +0100, Andrew Cooper wrote:
> >
> >> Not directly related to your patch but...
> >>
> >> andrewcoop@andrewcoop:/local/xen.git/tools/qemu-xen-dir-remote$ git grep
> >> "xs\.h"
> >> configure:#include <xs.h>
> >> configure:#include <xs.h>
> >> configure:#include <xs.h>
> >> configure:#include <xs.h>
> >> include/hw/xen/xen_common.h:#  include <xs.h>
> >>
> >> Isn't it time we got code like this off using the legacy xs.h?
> > So long as that code also wants to build against older Xen we should
> > tolerate them preferring the older headers.
> >
> >
> >
> 
> The whole purpose of configure is to try and hide that stuff away. 
> Surely it should try looking for xenstore.h and, failing that, look for
> xs.h and fill in some variable?

Qemu's ./configure is not autoconf.

In any case while it could do what you suggest I don't think these spare
headers are causing us such grief that we need to make waves about
getting rid of them.

> 
> We know for certain whether the version of qemu pointed to by xen.git
> need the legacy headers still.
> 
> ~Andrew
Stefano Stabellini July 11, 2014, 4:58 p.m. UTC | #6
On Fri, 11 Jul 2014, Ian Campbell wrote:
> On Fri, 2014-07-11 at 15:48 +0100, Stefano Stabellini wrote:
> > Also moves xc_dom.h to include as it is used often by other xen tools.
> 
> I think you could say here "expected to be used by other in-tree xen
> tools despite not currently being installed" or something to make it
> clear that this isn't one of the many bad cases.
> 
> > Use the new include subdirectories to build Xen tools and qemu-xen.
> > 
> > Add the old libxc include path to the programs that need it to build,
> > on a case by case basis and commeting that they shouldn't require
> 
> "commenting"
> 
> > internal libxc headers to build.
> > 
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> 
> This looks good to me, but ISTR you saying something about a qemu-trad
> update which needed to be synchronised?

Yes, the qemu-xen-traditional patch is:

http://marc.info/?l=xen-devel&m=140500949902568

It has no comments yet, so I didn't send it again.
Stefano Stabellini July 11, 2014, 5:04 p.m. UTC | #7
On Fri, 11 Jul 2014, Andrew Cooper wrote:
> > diff --git a/tools/python/setup.py b/tools/python/setup.py
> > index 17ebb4a..a9cb9ad 100644
> > --- a/tools/python/setup.py
> > +++ b/tools/python/setup.py
> > @@ -7,9 +7,9 @@ XEN_ROOT = "../.."
> >  extra_compile_args  = [ "-fno-strict-aliasing", "-Werror" ]
> >  
> >  PATH_XEN      = XEN_ROOT + "/tools/include"
> > -PATH_LIBXC    = XEN_ROOT + "/tools/libxc"
> > +PATH_LIBXC    = XEN_ROOT + "/tools/libxc/include"
> >  PATH_LIBXL    = XEN_ROOT + "/tools/libxl"
> > -PATH_XENSTORE = XEN_ROOT + "/tools/xenstore"
> > +PATH_XENSTORE = XEN_ROOT + "/tools/xenstore/include"
> 
> This breaks the .so references lower down, which will cause the python
> bits to fail to link.
> 
> You should use PATH_$FOO + "/include" in the include_dir lists only.

Yes, you are right. I'll make the change.
Ian Campbell July 14, 2014, 8:58 a.m. UTC | #8
On Fri, 2014-07-11 at 17:58 +0100, Stefano Stabellini wrote:
> On Fri, 11 Jul 2014, Ian Campbell wrote:
> > On Fri, 2014-07-11 at 15:48 +0100, Stefano Stabellini wrote:
> > > Also moves xc_dom.h to include as it is used often by other xen tools.
> > 
> > I think you could say here "expected to be used by other in-tree xen
> > tools despite not currently being installed" or something to make it
> > clear that this isn't one of the many bad cases.
> > 
> > > Use the new include subdirectories to build Xen tools and qemu-xen.
> > > 
> > > Add the old libxc include path to the programs that need it to build,
> > > on a case by case basis and commeting that they shouldn't require
> > 
> > "commenting"
> > 
> > > internal libxc headers to build.
> > > 
> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > 
> > This looks good to me, but ISTR you saying something about a qemu-trad
> > update which needed to be synchronised?
> 
> Yes, the qemu-xen-traditional patch is:
> 
> http://marc.info/?l=xen-devel&m=140500949902568
> 
> It has no comments yet, so I didn't send it again.

Ah, your reply to Andrew confusingly implied that it was a WIP patch
against xen.git so I ignored it in favour of this patch. Please tag such
patches appropriate in the subject line.

In any case the reliance on that qemu patch really should have been
described here somewhere or you risk a committer who wasn't party to
previous conversations (or who hasn't made the link) committing it (or
wasting time trying).

Ian.
diff mbox

Patch

diff --git a/tools/Makefile b/tools/Makefile
index f4aa200..5f32dcc 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -188,9 +188,9 @@  subdir-all-qemu-xen-dir: qemu-xen-dir-find
 		--includedir=$(PREFIX)/lib/xen/include \
 		--source-path=$$source \
 		--extra-cflags="-I$(XEN_ROOT)/tools/include \
-		-I$(XEN_ROOT)/tools/libxc \
-		-I$(XEN_ROOT)/tools/xenstore \
-		-I$(XEN_ROOT)/tools/xenstore/compat \
+		-I$(XEN_ROOT)/tools/libxc/include \
+		-I$(XEN_ROOT)/tools/xenstore/include \
+		-I$(XEN_ROOT)/tools/xenstore/compat/include \
 		$(EXTRA_CFLAGS_QEMU_XEN)" \
 		--extra-ldflags="-L$(XEN_ROOT)/tools/libxc \
 		-L$(XEN_ROOT)/tools/xenstore \
diff --git a/tools/Rules.mk b/tools/Rules.mk
index 13d8fc1..53f51a8 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -19,15 +19,15 @@  XEN_LIBVCHAN       = $(XEN_ROOT)/tools/libvchan
 
 CFLAGS_xeninclude = -I$(XEN_INCLUDE)
 
-CFLAGS_libxenctrl = -I$(XEN_LIBXC) $(CFLAGS_xeninclude)
+CFLAGS_libxenctrl = -I$(XEN_LIBXC)/include $(CFLAGS_xeninclude)
 LDLIBS_libxenctrl = $(XEN_LIBXC)/libxenctrl.so
 SHLIB_libxenctrl  = -Wl,-rpath-link=$(XEN_LIBXC)
 
-CFLAGS_libxenguest = -I$(XEN_LIBXC) $(CFLAGS_xeninclude)
+CFLAGS_libxenguest = -I$(XEN_LIBXC)/include $(CFLAGS_xeninclude)
 LDLIBS_libxenguest = $(XEN_LIBXC)/libxenguest.so
 SHLIB_libxenguest  = -Wl,-rpath-link=L$(XEN_LIBXC)
 
-CFLAGS_libxenstore = -I$(XEN_XENSTORE) $(CFLAGS_xeninclude)
+CFLAGS_libxenstore = -I$(XEN_XENSTORE)/include $(CFLAGS_xeninclude)
 LDLIBS_libxenstore = $(XEN_XENSTORE)/libxenstore.so
 SHLIB_libxenstore  = -Wl,-rpath-link=$(XEN_XENSTORE)
 
diff --git a/tools/blktap2/drivers/Makefile b/tools/blktap2/drivers/Makefile
index 1129ca1..7df9bc4 100644
--- a/tools/blktap2/drivers/Makefile
+++ b/tools/blktap2/drivers/Makefile
@@ -16,6 +16,8 @@  CFLAGS    += -I$(BLKTAP_ROOT)/include -I$(BLKTAP_ROOT)/drivers
 CFLAGS    += $(CFLAGS_libxenctrl)
 CFLAGS    += -D_GNU_SOURCE
 CFLAGS    += -DUSE_NFS_LOCKS
+# drivers/block-log.c incorrectly uses libxc internals
+CFLAGS    += -I$(XEN_ROOT)/tools/libxc
 
 ifeq ($(CONFIG_X86_64),y)
 CFLAGS            += -fPIC
diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile
index f77677c..da59e10 100644
--- a/tools/libxc/Makefile
+++ b/tools/libxc/Makefile
@@ -89,7 +89,7 @@  OSDEP_SRCS-y                 += xenctrl_osdep_ENOSYS.c
 -include $(XEN_TARGET_ARCH)/Makefile
 
 CFLAGS   += -Werror -Wmissing-prototypes
-CFLAGS   += -I. $(CFLAGS_xeninclude)
+CFLAGS   += -I. -I./include $(CFLAGS_xeninclude)
 
 # Needed for posix_fadvise64() in xc_linux.c
 CFLAGS-$(CONFIG_Linux) += -D_GNU_SOURCE
@@ -140,12 +140,12 @@  install: build
 	$(INSTALL_DATA) libxenctrl.a $(DESTDIR)$(LIBDIR)
 	ln -sf libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenctrl.so.$(MAJOR)
 	ln -sf libxenctrl.so.$(MAJOR) $(DESTDIR)$(LIBDIR)/libxenctrl.so
-	$(INSTALL_DATA) xenctrl.h xenctrlosdep.h xentoollog.h $(DESTDIR)$(INCLUDEDIR)
+	$(INSTALL_DATA) include/xenctrl.h include/xenctrlosdep.h include/xentoollog.h $(DESTDIR)$(INCLUDEDIR)
 	$(INSTALL_PROG) libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)
 	$(INSTALL_DATA) libxenguest.a $(DESTDIR)$(LIBDIR)
 	ln -sf libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenguest.so.$(MAJOR)
 	ln -sf libxenguest.so.$(MAJOR) $(DESTDIR)$(LIBDIR)/libxenguest.so
-	$(INSTALL_DATA) xenguest.h $(DESTDIR)$(INCLUDEDIR)
+	$(INSTALL_DATA) include/xenguest.h $(DESTDIR)$(INCLUDEDIR)
 
 .PHONY: TAGS
 TAGS:
diff --git a/tools/libxc/xc_dom.h b/tools/libxc/include/xc_dom.h
similarity index 100%
rename from tools/libxc/xc_dom.h
rename to tools/libxc/include/xc_dom.h
diff --git a/tools/libxc/xenctrl.h b/tools/libxc/include/xenctrl.h
similarity index 100%
rename from tools/libxc/xenctrl.h
rename to tools/libxc/include/xenctrl.h
diff --git a/tools/libxc/xenctrlosdep.h b/tools/libxc/include/xenctrlosdep.h
similarity index 100%
rename from tools/libxc/xenctrlosdep.h
rename to tools/libxc/include/xenctrlosdep.h
diff --git a/tools/libxc/xenguest.h b/tools/libxc/include/xenguest.h
similarity index 100%
rename from tools/libxc/xenguest.h
rename to tools/libxc/include/xenguest.h
diff --git a/tools/libxc/xentoollog.h b/tools/libxc/include/xentoollog.h
similarity index 100%
rename from tools/libxc/xentoollog.h
rename to tools/libxc/include/xentoollog.h
diff --git a/tools/misc/Makefile b/tools/misc/Makefile
index 69b1817..266fd16 100644
--- a/tools/misc/Makefile
+++ b/tools/misc/Makefile
@@ -6,6 +6,8 @@  CFLAGS += -Werror
 CFLAGS += $(CFLAGS_libxenctrl)
 CFLAGS += $(CFLAGS_xeninclude)
 CFLAGS += $(CFLAGS_libxenstore)
+# xen-hptool.c and xen-mfndump.c incorrectly use libxc internals
+CFLAGS += -I$(XEN_ROOT)/tools/libxc
 
 HDRS     = $(wildcard *.h)
 
diff --git a/tools/python/setup.py b/tools/python/setup.py
index 17ebb4a..a9cb9ad 100644
--- a/tools/python/setup.py
+++ b/tools/python/setup.py
@@ -7,9 +7,9 @@  XEN_ROOT = "../.."
 extra_compile_args  = [ "-fno-strict-aliasing", "-Werror" ]
 
 PATH_XEN      = XEN_ROOT + "/tools/include"
-PATH_LIBXC    = XEN_ROOT + "/tools/libxc"
+PATH_LIBXC    = XEN_ROOT + "/tools/libxc/include"
 PATH_LIBXL    = XEN_ROOT + "/tools/libxl"
-PATH_XENSTORE = XEN_ROOT + "/tools/xenstore"
+PATH_XENSTORE = XEN_ROOT + "/tools/xenstore/include"
 
 xc = Extension("xc",
                extra_compile_args = extra_compile_args,
diff --git a/tools/xcutils/Makefile b/tools/xcutils/Makefile
index 98706bf..f71703d 100644
--- a/tools/xcutils/Makefile
+++ b/tools/xcutils/Makefile
@@ -15,7 +15,8 @@  PROGRAMS = readnotes lsevtchn
 
 CFLAGS += -Werror
 
-CFLAGS_readnotes.o  := $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest)
+# incorrectly uses libxc internals
+CFLAGS_readnotes.o  := $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) -I$(XEN_ROOT)/tools/libxc
 CFLAGS_lsevtchn.o   := $(CFLAGS_libxenctrl)
 
 .PHONY: all
diff --git a/tools/xenpaging/Makefile b/tools/xenpaging/Makefile
index 548d9dd..054562d 100644
--- a/tools/xenpaging/Makefile
+++ b/tools/xenpaging/Makefile
@@ -1,7 +1,8 @@ 
 XEN_ROOT=$(CURDIR)/../..
 include $(XEN_ROOT)/tools/Rules.mk
 
-CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenstore) $(PTHREAD_CFLAGS)
+# xenpaging.c and file_ops.c incorrectly use libxc internals
+CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenstore) $(PTHREAD_CFLAGS) -I$(XEN_ROOT)/tools/libxc
 LDLIBS += $(LDLIBS_libxenctrl) $(LDLIBS_libxenstore) $(PTHREAD_LIBS)
 LDFLAGS += $(PTHREAD_LDFLAGS)
 
diff --git a/tools/xenstore/Makefile b/tools/xenstore/Makefile
index e34bd41..2947d3e 100644
--- a/tools/xenstore/Makefile
+++ b/tools/xenstore/Makefile
@@ -6,6 +6,7 @@  MINOR = 3
 
 CFLAGS += -Werror
 CFLAGS += -I.
+CFLAGS += -I./include
 CFLAGS += $(CFLAGS_libxenctrl)
 
 CLIENTS := xenstore-exists xenstore-list xenstore-read xenstore-rm xenstore-chmod
@@ -126,10 +127,10 @@  install: all
 	ln -sf libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenstore.so.$(MAJOR)
 	ln -sf libxenstore.so.$(MAJOR) $(DESTDIR)$(LIBDIR)/libxenstore.so
 	$(INSTALL_DATA) libxenstore.a $(DESTDIR)$(LIBDIR)
-	$(INSTALL_DATA) xenstore.h $(DESTDIR)$(INCLUDEDIR)
-	$(INSTALL_DATA) xenstore_lib.h $(DESTDIR)$(INCLUDEDIR)
-	$(INSTALL_DATA) compat/xs.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs.h
-	$(INSTALL_DATA) compat/xs_lib.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs_lib.h
+	$(INSTALL_DATA) include/xenstore.h $(DESTDIR)$(INCLUDEDIR)
+	$(INSTALL_DATA) include/xenstore_lib.h $(DESTDIR)$(INCLUDEDIR)
+	$(INSTALL_DATA) include/compat/xs.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs.h
+	$(INSTALL_DATA) include/compat/xs_lib.h $(DESTDIR)$(INCLUDEDIR)/xenstore-compat/xs_lib.h
 	ln -sf xenstore-compat/xs.h  $(DESTDIR)$(INCLUDEDIR)/xs.h
 	ln -sf xenstore-compat/xs_lib.h $(DESTDIR)$(INCLUDEDIR)/xs_lib.h