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