1# libxenstat: statistics-collection library for Xen 2# Copyright (C) International Business Machines Corp., 2005 3# Author: Josh Triplett <josh@kernel.org> 4# 5# This library is free software; you can redistribute it and/or 6# modify it under the terms of the GNU Lesser General Public 7# License as published by the Free Software Foundation; either 8# version 2.1 of the License, or (at your option) any later version. 9# 10# This library is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13# Lesser General Public License for more details. 14 15XEN_ROOT=$(CURDIR)/../../.. 16include $(XEN_ROOT)/tools/Rules.mk 17 18CFLAGS += -include $(XEN_ROOT)/tools/config.h 19 20OBJS-y += xenstat.o 21OBJS-y += xenstat_qmp.o 22OBJS-$(CONFIG_Linux) += xenstat_linux.o 23OBJS-$(CONFIG_SunOS) += xenstat_solaris.o 24OBJS-$(CONFIG_NetBSD) += xenstat_netbsd.o 25OBJS-$(CONFIG_FreeBSD) += xenstat_freebsd.o 26 27LDLIBS-y += -lyajl 28LDLIBS-$(CONFIG_SunOS) += -lkstat 29LDLIBS += $(LDLIBS-y) 30 31include $(XEN_ROOT)/tools/libs/libs.mk 32 33PYLIB=bindings/swig/python/_xenstat.so 34PYMOD=bindings/swig/python/xenstat.py 35PYSRC=bindings/swig/python/_xenstat.c 36PERLLIB=bindings/swig/perl/xenstat.so 37PERLMOD=bindings/swig/perl/xenstat.pm 38PERLSRC=bindings/swig/perl/xenstat.c 39BINDINGS=$(PYLIB) $(PYMOD) $(PERLLIB) $(PERLMOD) 40BINDINGSRC=$(PYSRC) $(PERLSRC) 41 42# The all-bindings target builds all the language bindings 43.PHONY: all-bindings 44all-bindings: perl-bindings python-bindings 45 46# The install-bindings target installs all the language bindings 47install-bindings: install-perl-bindings install-python-bindings 48 49.PHONY: uninstall-bindings 50uninstall-bindings: uninstall-perl-bindings uninstall-python-bindings 51 52$(BINDINGS): libxenstat.so 53 54SWIG_FLAGS = -module xenstat -I$(XEN_INCLUDE) 55SWIG_FLAGS += -MMD -MP -MF .$(if $(filter-out .,$(@D)),$(subst /,@,$(@D))@)$(@F).d 56 57# Python bindings 58$(PYMOD): $(PYSRC) 59$(PYSRC): bindings/swig/xenstat.i 60 mkdir -p $(@D) 61 swig -python $(SWIG_FLAGS) -outdir $(@D) -o $@ $< 62 63$(PYLIB): CFLAGS += $(shell $(PYTHON)-config --includes) 64$(PYLIB): CFLAGS += -fPIC 65$(PYLIB): CFLAGS += -Wno-missing-prototypes 66$(PYLIB): LDFLAGS += $(SHLIB_LDFLAGS) 67$(PYLIB): LDLIBS := $(shell $(PYTHON)-config --libs) 68$(PYLIB): LDLIBS += $(LDLIBS_libxenstat) 69$(PYLIB): $(PYSRC) 70 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS) $(APPEND_LDFLAGS) 71 72.PHONY: python-bindings 73python-bindings: $(PYLIB) $(PYMOD) 74 75pythonlibdir = $(shell $(PYTHON) -c \ 76 'import sysconfig; \ 77 print(sysconfig.get_python_lib("platlib", vars={"platbase": "$(prefix)"}))') 78 79.PHONY: install-python-bindings 80install-python-bindings: $(PYLIB) $(PYMOD) 81 $(INSTALL_PROG) $(PYLIB) $(DESTDIR)$(pythonlibdir)/_xenstat.so 82 $(INSTALL_PROG) $(PYMOD) $(DESTDIR)$(pythonlibdir)/xenstat.py 83 84.PHONY: uninstall-python-bindings 85uninstall-python-bindings: 86 rm -f $(DESTDIR)$(pythonlibdir)/_xenstat.so 87 rm -f $(DESTDIR)$(pythonlibdir)/xenstat.py 88 89ifeq ($(XENSTAT_PYTHON_BINDINGS),y) 90.PHONY: all 91all: python-bindings 92install:: install-python-bindings 93uninstall:: uninstall-python-bindings 94endif 95 96# Perl bindings 97PERL_FLAGS = $(shell $(PERL) -MConfig -e 'print "$$Config{ccflags} -I$$Config{archlib}/CORE";') 98$(PERLMOD): $(PERLSRC) 99$(PERLSRC): bindings/swig/xenstat.i 100 mkdir -p $(@D) 101 swig -perl $(SWIG_FLAGS) -outdir $(@D) -o $@ $< 102 103$(PERLLIB): CFLAGS += -fPIC 104$(PERLLIB): CFLAGS += -Wno-strict-prototypes 105$(PERLLIB): CFLAGS += -Wno-missing-prototypes 106$(PERLLIB): LDFLAGS += $(PERL_FLAGS) 107$(PERLLIB): LDFLAGS += $(SHLIB_LDFLAGS) 108$(PERLLIB): LDLIBS := $(LDLIBS_libxenstat) 109$(PERLLIB): $(PERLSRC) 110 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS) $(APPEND_LDFLAGS) 111 112.PHONY: perl-bindings 113perl-bindings: $(PERLLIB) $(PERLMOD) 114 115.PHONY: install-perl-bindings 116perllibdir=$(prefix)/lib/perl5 117perlmoddir=$(prefix)/share/perl5 118install-perl-bindings: $(PERLLIB) $(PERLMOD) 119 $(INSTALL_PROG) $(PERLLIB) $(DESTDIR)$(perllibdir)/xenstat.so 120 $(INSTALL_PROG) $(PERLMOD) $(DESTDIR)$(perlmoddir)/xenstat.pm 121 122.PHONY: uninstall-perl-bindings 123uninstall-perl-bindings: 124 rm -f $(DESTDIR)$(perllibdir)/xenstat.so 125 rm -f $(DESTDIR)$(perlmoddir)/xenstat.pm 126 127ifeq ($(XENSTAT_PERL_BINDINGS),y) 128.PHONY: all 129all: perl-bindings 130 131.PHONY: install 132install:: install-perl-bindings 133uninstall:: uninstall-perl-bindings 134endif 135 136clean:: 137 $(RM) $(BINDINGS) $(BINDINGSRC) 138