1XEN_ROOT = $(CURDIR)/../../.. 2include $(XEN_ROOT)/tools/Rules.mk 3 4MAJOR = 1 5MINOR = 0 6SHLIB_LDFLAGS += -Wl,--version-script=libxencall.map 7 8CFLAGS += -Werror -Wmissing-prototypes 9CFLAGS += -I./include $(CFLAGS_xeninclude) 10CFLAGS += $(CFLAGS_libxentoollog) $(CFLAGS_libxentoolcore) 11 12SRCS-y += core.c buffer.c 13SRCS-$(CONFIG_Linux) += linux.c 14SRCS-$(CONFIG_FreeBSD) += freebsd.c 15SRCS-$(CONFIG_SunOS) += solaris.c 16SRCS-$(CONFIG_NetBSD) += netbsd.c 17SRCS-$(CONFIG_MiniOS) += minios.c 18 19LIB_OBJS := $(patsubst %.c,%.o,$(SRCS-y)) 20PIC_OBJS := $(patsubst %.c,%.opic,$(SRCS-y)) 21 22LIB := libxencall.a 23ifneq ($(nosharedlibs),y) 24LIB += libxencall.so 25endif 26 27PKG_CONFIG := xencall.pc 28PKG_CONFIG_VERSION := $(MAJOR).$(MINOR) 29 30ifneq ($(CONFIG_LIBXC_MINIOS),y) 31PKG_CONFIG_INST := $(PKG_CONFIG) 32$(PKG_CONFIG_INST): PKG_CONFIG_PREFIX = $(prefix) 33$(PKG_CONFIG_INST): PKG_CONFIG_INCDIR = $(includedir) 34$(PKG_CONFIG_INST): PKG_CONFIG_LIBDIR = $(libdir) 35endif 36 37PKG_CONFIG_LOCAL := $(foreach pc,$(PKG_CONFIG),$(PKG_CONFIG_DIR)/$(pc)) 38 39$(PKG_CONFIG_LOCAL): PKG_CONFIG_PREFIX = $(XEN_ROOT) 40$(PKG_CONFIG_LOCAL): PKG_CONFIG_INCDIR = $(XEN_LIBXENCALL)/include 41$(PKG_CONFIG_LOCAL): PKG_CONFIG_LIBDIR = $(CURDIR) 42$(PKG_CONFIG_LOCAL): PKG_CONFIG_CFLAGS_LOCAL = $(CFLAGS_xeninclude) 43 44.PHONY: all 45all: build 46 47.PHONY: build 48build: 49 $(MAKE) libs 50 51.PHONY: libs 52libs: headers.chk $(LIB) $(PKG_CONFIG_INST) $(PKG_CONFIG_LOCAL) 53 54headers.chk: $(wildcard include/*.h) 55 56libxencall.a: $(LIB_OBJS) 57 $(AR) rc $@ $^ 58 59libxencall.so: libxencall.so.$(MAJOR) 60 $(SYMLINK_SHLIB) $< $@ 61libxencall.so.$(MAJOR): libxencall.so.$(MAJOR).$(MINOR) 62 $(SYMLINK_SHLIB) $< $@ 63 64libxencall.so.$(MAJOR).$(MINOR): $(PIC_OBJS) libxencall.map 65 $(CC) $(LDFLAGS) $(PTHREAD_LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxencall.so.$(MAJOR) $(SHLIB_LDFLAGS) -o $@ $(PIC_OBJS) $(LDLIBS_libxentoollog) $(LDLIBS_libxentoolcore) $(APPEND_LDFLAGS) 66 67.PHONY: install 68install: build 69 $(INSTALL_DIR) $(DESTDIR)$(libdir) 70 $(INSTALL_DIR) $(DESTDIR)$(includedir) 71 $(INSTALL_SHLIB) libxencall.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir) 72 $(INSTALL_DATA) libxencall.a $(DESTDIR)$(libdir) 73 $(SYMLINK_SHLIB) libxencall.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)/libxencall.so.$(MAJOR) 74 $(SYMLINK_SHLIB) libxencall.so.$(MAJOR) $(DESTDIR)$(libdir)/libxencall.so 75 $(INSTALL_DATA) include/xencall.h $(DESTDIR)$(includedir) 76 $(INSTALL_DATA) xencall.pc $(DESTDIR)$(PKG_INSTALLDIR) 77 78.PHONY: uninstall 79uninstall: 80 rm -f $(DESTDIR)$(PKG_INSTALLDIR)/xencall.pc 81 rm -f $(DESTDIR)$(includedir)/xencall.h 82 rm -f $(DESTDIR)$(libdir)/libxencall.so 83 rm -f $(DESTDIR)$(libdir)/libxencall.so.$(MAJOR) 84 rm -f $(DESTDIR)$(libdir)/libxencall.so.$(MAJOR).$(MINOR) 85 rm -f $(DESTDIR)$(libdir)/libxencall.a 86 87.PHONY: TAGS 88TAGS: 89 etags -t *.c *.h 90 91.PHONY: clean 92clean: 93 rm -rf *.rpm $(LIB) *~ $(DEPS_RM) $(LIB_OBJS) $(PIC_OBJS) 94 rm -f libxencall.so.$(MAJOR).$(MINOR) libxencall.so.$(MAJOR) 95 rm -f headers.chk 96 rm -f xencall.pc 97 98.PHONY: distclean 99distclean: clean 100