From f5c5d0352464e2c4dd4c58ae739ff7bad83760ee Mon Sep 17 00:00:00 2001 From: Juergen Gross Date: Thu, 2 Mar 2017 06:13:16 +0100 Subject: [PATCH] tools: add pkg-config file for libxc When configuring the build of qemu the configure script is building various test programs to determine the exact version of libxencontrol. Instead of a try and error approach needing updates for nearly each new version of Xen just provide xencontrol.pc to be used via pkg-config. In the end we need two different variants of that file: one for the target system where eventually someone wants to build qemu, and one for the local system to be used for building qemu as part of the Xen build process. The local variant is created in a dedicated directory in order to be able to collect more pkg-config files used for building tools there. Signed-off-by: Juergen Gross Acked-by: Ian Jackson --- .gitignore | 3 +++ stubdom/Makefile | 2 ++ tools/Makefile | 3 ++- tools/Rules.mk | 13 +++++++++++++ tools/libxc/Makefile | 22 +++++++++++++++++++++- tools/libxc/xencontrol.pc.in | 9 +++++++++ 6 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 tools/libxc/xencontrol.pc.in diff --git a/.gitignore b/.gitignore index 3713b1e2a6..015a189047 100644 --- a/.gitignore +++ b/.gitignore @@ -79,6 +79,7 @@ stubdom/newlib-1.* stubdom/newlib-x86* stubdom/ocaml-* stubdom/pciutils-* +stubdom/pkg-config/* stubdom/polarssl-* stubdom/stubdompath.sh stubdom/tpm_emulator-* @@ -179,6 +180,7 @@ tools/include/xen/* tools/include/xen-xsm/* tools/include/xen-foreign/*.(c|h|size) tools/include/xen-foreign/checker +tools/libxc/*.pc tools/libxl/_libxl.api-for-check tools/libxl/*.api-ok tools/libxl/*.pc @@ -204,6 +206,7 @@ tools/misc/xen-hvmctx tools/misc/xenlockprof tools/misc/lowmemd tools/misc/xencov +tools/pkg-config/* tools/xentrace/xenalyze tools/pygrub/build/* tools/python/build/* diff --git a/stubdom/Makefile b/stubdom/Makefile index 39b81c9c83..c6458e81a6 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -318,6 +318,7 @@ define do_links cd $(dir $@); \ ln -sf $(dir $<)include/*.h include/; \ ln -sf $(dir $<)*.[ch] .; \ + ln -sf $(dir $<)*.pc.in .; \ ln -sf $(dir $<)Makefile . touch $@ endef @@ -623,6 +624,7 @@ clean: rm -fr grub-$(XEN_TARGET_ARCH) rm -f $(STUBDOMPATH) rm -f *-minios-config.mk + rm -fr pkg-config [ ! -e libs-$(XEN_TARGET_ARCH)/toollog/Makefile ] || $(MAKE) DESTDIR= -C libs-$(XEN_TARGET_ARCH)/toollog clean [ ! -e libs-$(XEN_TARGET_ARCH)/evtchn/Makefile ] || $(MAKE) DESTDIR= -C libs-$(XEN_TARGET_ARCH)/evtchn clean [ ! -e libs-$(XEN_TARGET_ARCH)/gnttab/Makefile ] || $(MAKE) DESTDIR= -C libs-$(XEN_TARGET_ARCH)/gnttab clean diff --git a/tools/Makefile b/tools/Makefile index 3e15463567..5cadb16da2 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -111,9 +111,10 @@ uninstall: .PHONY: clean clean: subdirs-clean + rm -rf pkg-config .PHONY: distclean -distclean: subdirs-distclean +distclean: subdirs-distclean clean rm -rf qemu-xen-traditional-dir qemu-xen-traditional-dir-remote rm -rf qemu-xen-dir qemu-xen-dir-remote rm -rf ../config/Tools.mk config.h config.log config.status \ diff --git a/tools/Rules.mk b/tools/Rules.mk index 52bdd1a2d0..e676c6b665 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -245,3 +245,16 @@ ifeq (,$(findstring clean,$(MAKECMDGOALS))) $(XEN_ROOT)/config/Tools.mk: $(error You have to run ./configure before building or installing the tools) endif + +$(PKG_CONFIG_DIR)/%.pc: %.pc.in Makefile + mkdir -p $(PKG_CONFIG_DIR) + @sed -e 's!@@version@@!$(PKG_CONFIG_VERSION)!g' \ + -e 's!@@prefix@@!$(PKG_CONFIG_PREFIX)!g' \ + -e 's!@@incdir@@!$(PKG_CONFIG_INCDIR)!g' \ + -e 's!@@libdir@@!$(PKG_CONFIG_LIBDIR)!g' < $< > $@ + +%.pc: %.pc.in Makefile + @sed -e 's!@@version@@!$(PKG_CONFIG_VERSION)!g' \ + -e 's!@@prefix@@!$(PKG_CONFIG_PREFIX)!g' \ + -e 's!@@incdir@@!$(PKG_CONFIG_INCDIR)!g' \ + -e 's!@@libdir@@!$(PKG_CONFIG_LIBDIR)!g' < $< > $@ diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile index da689c435c..a161ba71bd 100644 --- a/tools/libxc/Makefile +++ b/tools/libxc/Makefile @@ -1,4 +1,5 @@ XEN_ROOT = $(CURDIR)/../.. +PKG_CONFIG_DIR = ../pkg-config include $(XEN_ROOT)/tools/Rules.mk MAJOR = 4.9 @@ -159,6 +160,22 @@ endif $(CTRL_LIB_OBJS) $(GUEST_LIB_OBJS) \ $(CTRL_PIC_OBJS) $(GUEST_PIC_OBJS): xc_private.h +PKG_CONFIG := xencontrol.pc +PKG_CONFIG_VERSION := $(MAJOR).$(MINOR) + +ifneq ($(CONFIG_LIBXC_MINIOS),y) +PKG_CONFIG_INST := $(PKG_CONFIG) +$(PKG_CONFIG_INST): PKG_CONFIG_PREFIX = $(prefix) +$(PKG_CONFIG_INST): PKG_CONFIG_INCDIR = $(includedir) +$(PKG_CONFIG_INST): PKG_CONFIG_LIBDIR = $(libdir) +endif + +PKG_CONFIG_LOCAL := $(foreach pc,$(PKG_CONFIG),$(PKG_CONFIG_DIR)/$(pc)) + +$(PKG_CONFIG_LOCAL): PKG_CONFIG_PREFIX = $(XEN_ROOT) +$(PKG_CONFIG_LOCAL): PKG_CONFIG_INCDIR = $(XEN_LIBXC)/include +$(PKG_CONFIG_LOCAL): PKG_CONFIG_LIBDIR = $(CURDIR) + .PHONY: all all: build @@ -167,12 +184,13 @@ build: $(MAKE) libs .PHONY: libs -libs: $(LIB) +libs: $(LIB) $(PKG_CONFIG_INST) $(PKG_CONFIG_LOCAL) .PHONY: install install: build $(INSTALL_DIR) $(DESTDIR)$(libdir) $(INSTALL_DIR) $(DESTDIR)$(includedir) + $(INSTALL_DIR) $(DESTDIR)$(PKG_INSTALLDIR) $(INSTALL_SHLIB) libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir) $(INSTALL_DATA) libxenctrl.a $(DESTDIR)$(libdir) $(SYMLINK_SHLIB) libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)/libxenctrl.so.$(MAJOR) @@ -183,6 +201,7 @@ install: build $(SYMLINK_SHLIB) libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)/libxenguest.so.$(MAJOR) $(SYMLINK_SHLIB) libxenguest.so.$(MAJOR) $(DESTDIR)$(libdir)/libxenguest.so $(INSTALL_DATA) include/xenguest.h $(DESTDIR)$(includedir) + $(INSTALL_DATA) xencontrol.pc $(DESTDIR)$(PKG_INSTALLDIR) .PHONY: TAGS TAGS: @@ -192,6 +211,7 @@ TAGS: clean: rm -rf *.rpm $(LIB) *~ $(DEPS) \ _paths.h \ + xencontrol.pc \ $(CTRL_LIB_OBJS) $(CTRL_PIC_OBJS) \ $(GUEST_LIB_OBJS) $(GUEST_PIC_OBJS) diff --git a/tools/libxc/xencontrol.pc.in b/tools/libxc/xencontrol.pc.in new file mode 100644 index 0000000000..213206fd63 --- /dev/null +++ b/tools/libxc/xencontrol.pc.in @@ -0,0 +1,9 @@ +prefix=@@prefix@@ +includedir=@@incdir@@ +libdir=@@libdir@@ + +Name: Xencontrol +Description: The Xencontrol library for Xen hypervisor +Version: @@version@@ +Cflags: -I${includedir} +Libs: -L${libdir} -lxenctrl -- 2.39.5