1XEN_ROOT := $(CURDIR)/../../../ 2include $(XEN_ROOT)/tools/Rules.mk 3 4MAJOR = 1.0 5MINOR = 0 6LIBNAME = libblktapctl 7LIBSONAME = $(LIBNAME).so.$(MAJOR) 8 9IBIN = tap-ctl 10 11CFLAGS += -Werror 12CFLAGS += -Wno-unused 13CFLAGS += -I../include -I../drivers 14CFLAGS += $(CFLAGS_xeninclude) 15CFLAGS += $(CFLAGS_libxenctrl) 16CFLAGS += -D_GNU_SOURCE 17CFLAGS += -DTAPCTL 18 19CTL_OBJS := tap-ctl-ipc.o 20CTL_OBJS += tap-ctl-list.o 21CTL_OBJS += tap-ctl-allocate.o 22CTL_OBJS += tap-ctl-free.o 23CTL_OBJS += tap-ctl-create.o 24CTL_OBJS += tap-ctl-destroy.o 25CTL_OBJS += tap-ctl-spawn.o 26CTL_OBJS += tap-ctl-attach.o 27CTL_OBJS += tap-ctl-detach.o 28CTL_OBJS += tap-ctl-open.o 29CTL_OBJS += tap-ctl-close.o 30CTL_OBJS += tap-ctl-pause.o 31CTL_OBJS += tap-ctl-unpause.o 32CTL_OBJS += tap-ctl-major.o 33CTL_OBJS += tap-ctl-check.o 34 35CTL_PICS = $(patsubst %.o,%.opic,$(CTL_OBJS)) 36 37OBJS = $(CTL_OBJS) tap-ctl.o 38PICS = $(CTL_PICS) 39 40LIB_STATIC = $(LIBNAME).a 41LIB_SHARED = $(LIBSONAME).$(MINOR) 42IBIN = tap-ctl 43 44PKG_CONFIG := xenblktapctl.pc 45PKG_CONFIG_VERSION := $(MAJOR).$(MINOR) 46 47ifneq ($(CONFIG_LIBXC_MINIOS),y) 48PKG_CONFIG_INST := $(PKG_CONFIG) 49$(PKG_CONFIG_INST): PKG_CONFIG_PREFIX = $(prefix) 50$(PKG_CONFIG_INST): PKG_CONFIG_INCDIR = $(includedir) 51$(PKG_CONFIG_INST): PKG_CONFIG_LIBDIR = $(libdir) 52endif 53 54PKG_CONFIG_LOCAL := $(foreach pc,$(PKG_CONFIG),$(PKG_CONFIG_DIR)/$(pc)) 55 56$(PKG_CONFIG_LOCAL): PKG_CONFIG_PREFIX = $(XEN_ROOT) 57$(PKG_CONFIG_LOCAL): PKG_CONFIG_INCDIR = $(XEN_BLKTAP2)/include 58$(PKG_CONFIG_LOCAL): PKG_CONFIG_LIBDIR = $(CURDIR) 59$(PKG_CONFIG_LOCAL): PKG_CONFIG_CFLAGS_LOCAL = $(CFLAGS_xeninclude) $(CFLAGS_libxenctrl) 60 61all: build 62 63build: $(IBIN) $(LIB_STATIC) $(LIB_SHARED) $(PKG_CONFIG_INST) $(PKG_CONFIG_LOCAL) 64 65$(LIBNAME).so: $(LIBSONAME) 66 ln -sf $< $@ 67 68$(LIBSONAME): $(LIB_SHARED) 69 ln -sf $< $@ 70 71tap-ctl: tap-ctl.o $(LIBNAME).so 72 $(CC) $(LDFLAGS) -o $@ $^ $(APPEND_LDFLAGS) 73 74$(LIB_STATIC): $(CTL_OBJS) 75 $(AR) r $@ $^ 76 77$(LIB_SHARED): $(CTL_PICS) 78 $(CC) $(LDFLAGS) -fPIC -Wl,$(SONAME_LDFLAG) -Wl,$(LIBSONAME) $(SHLIB_LDFLAGS) -rdynamic $^ -o $@ $(APPEND_LDFLAGS) 79 80install: build 81 $(INSTALL_DIR) -p $(DESTDIR)$(sbindir) 82 $(INSTALL_PROG) $(IBIN) $(DESTDIR)$(sbindir) 83 $(INSTALL_DATA) $(LIB_STATIC) $(DESTDIR)$(libdir) 84 $(INSTALL_PROG) $(LIB_SHARED) $(DESTDIR)$(libdir) 85 ln -sf $(LIBSONAME) $(DESTDIR)$(libdir)/$(LIBNAME).so 86 ln -sf $(LIB_SHARED) $(DESTDIR)$(libdir)/$(LIBSONAME) 87 $(INSTALL_DATA) xenblktapctl.pc $(DESTDIR)$(PKG_INSTALLDIR) 88 89clean: 90 rm -f $(OBJS) $(PICS) $(DEPS_RM) $(IBIN) $(LIB_STATIC) $(LIB_SHARED) 91 rm -f $(LIBNAME).so $(LIBSONAME) 92 rm -f *~ 93 rm -f xenblktapctl.pc 94 95uninstall: 96 rm -f $(DESTDIR)$(PKG_INSTALLDIR)/xenblktapctl.pc 97 rm -f $(DESTDIR)$(libdir)/$(LIBSONAME) 98 rm -f $(DESTDIR)$(libdir)/$(LIBNAME).so 99 rm -f $(addprefix $(DESTDIR)$(libdir)/, $(LIB_SHARED)) 100 rm -f $(addprefix $(DESTDIR)$(libdir)/, $(LIB_STATIC)) 101 rm -f $(addprefix $(DESTDIR)$(sbindir)/, $(IBIN)) 102 103distclean: clean 104 105.PHONY: all build clean distclean install uninstall 106 107-include $(DEPS_INCLUDE) 108