1XEN_ROOT = $(CURDIR)/../../.. 2include $(XEN_ROOT)/tools/Rules.mk 3 4MAJOR = 1 5MINOR = 1 6SHLIB_LDFLAGS += -Wl,--version-script=libxenevtchn.map 7 8CFLAGS += -Werror -Wmissing-prototypes 9CFLAGS += -I./include $(CFLAGS_xeninclude) 10CFLAGS += $(CFLAGS_libxentoollog) $(CFLAGS_libxentoolcore) 11 12SRCS-y += core.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 := libxenevtchn.a 23ifneq ($(nosharedlibs),y) 24LIB += libxenevtchn.so 25endif 26 27PKG_CONFIG := xenevtchn.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_LIBXENEVTCHN)/include 41$(PKG_CONFIG_LOCAL): PKG_CONFIG_LIBDIR = $(CURDIR) 42 43.PHONY: all 44all: build 45 46.PHONY: build 47build: 48 $(MAKE) libs 49 50.PHONY: libs 51libs: headers.chk $(LIB) $(PKG_CONFIG_INST) $(PKG_CONFIG_LOCAL) 52 53headers.chk: $(wildcard include/*.h) 54 55libxenevtchn.a: $(LIB_OBJS) 56 $(AR) rc $@ $^ 57 58libxenevtchn.so: libxenevtchn.so.$(MAJOR) 59 $(SYMLINK_SHLIB) $< $@ 60libxenevtchn.so.$(MAJOR): libxenevtchn.so.$(MAJOR).$(MINOR) 61 $(SYMLINK_SHLIB) $< $@ 62 63libxenevtchn.so.$(MAJOR).$(MINOR): $(PIC_OBJS) libxenevtchn.map 64 $(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenevtchn.so.$(MAJOR) $(SHLIB_LDFLAGS) -o $@ $(PIC_OBJS) $(LDLIBS_libxentoollog) $(LDLIBS_libxentoolcore) $(APPEND_LDFLAGS) 65 66.PHONY: install 67install: build 68 $(INSTALL_DIR) $(DESTDIR)$(libdir) 69 $(INSTALL_DIR) $(DESTDIR)$(includedir) 70 $(INSTALL_SHLIB) libxenevtchn.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir) 71 $(INSTALL_DATA) libxenevtchn.a $(DESTDIR)$(libdir) 72 $(SYMLINK_SHLIB) libxenevtchn.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)/libxenevtchn.so.$(MAJOR) 73 $(SYMLINK_SHLIB) libxenevtchn.so.$(MAJOR) $(DESTDIR)$(libdir)/libxenevtchn.so 74 $(INSTALL_DATA) include/xenevtchn.h $(DESTDIR)$(includedir) 75 $(INSTALL_DATA) xenevtchn.pc $(DESTDIR)$(PKG_INSTALLDIR) 76 77.PHONY: uninstall 78uninstall: 79 rm -f $(DESTDIR)$(PKG_INSTALLDIR)/xenevtchn.pc 80 rm -f $(DESTDIR)$(includedir)/xenevtchn.h 81 rm -f $(DESTDIR)$(libdir)/libxenevtchn.so 82 rm -f $(DESTDIR)$(libdir)/libxenevtchn.so.$(MAJOR) 83 rm -f $(DESTDIR)$(libdir)/libxenevtchn.so.$(MAJOR).$(MINOR) 84 rm -f $(DESTDIR)$(libdir)/libxenevtchn.a 85 86.PHONY: TAGS 87TAGS: 88 etags -t *.c *.h 89 90.PHONY: clean 91clean: 92 rm -rf *.rpm $(LIB) *~ $(DEPS_RM) $(LIB_OBJS) $(PIC_OBJS) 93 rm -f libxenevtchn.so.$(MAJOR).$(MINOR) libxenevtchn.so.$(MAJOR) 94 rm -f headers.chk 95 rm -f xenevtchn.pc 96 97.PHONY: distclean 98distclean: clean 99