1XEN_ROOT=$(CURDIR)/../../.. 2BLKTAP_ROOT= .. 3include $(XEN_ROOT)/tools/Rules.mk 4 5LIBVHDDIR = $(BLKTAP_ROOT)/vhd/lib 6 7IBIN = tapdisk2 td-util tapdisk-client tapdisk-stream tapdisk-diff 8QCOW_UTIL = img2qcow qcow-create qcow2raw 9LOCK_UTIL = lock-util 10INST_DIR = $(sbindir) 11 12CFLAGS += -Werror 13CFLAGS += -Wno-unused 14CFLAGS += -fno-strict-aliasing 15CFLAGS += -I$(BLKTAP_ROOT)/include -I$(BLKTAP_ROOT)/drivers 16CFLAGS += $(CFLAGS_libxenctrl) 17CFLAGS += -D_GNU_SOURCE 18CFLAGS += -DUSE_NFS_LOCKS 19# drivers/block-log.c incorrectly uses libxc internals 20CFLAGS += -I$(XEN_ROOT)/tools/libxc 21 22ifeq ($(CONFIG_X86_64),y) 23CFLAGS += -fPIC 24endif 25 26VHDLIBS := -L$(LIBVHDDIR) -lvhd 27 28REMUS-OBJS := block-remus.o 29REMUS-OBJS += hashtable.o 30REMUS-OBJS += hashtable_itr.o 31REMUS-OBJS += hashtable_utility.o 32 33tapdisk2 tapdisk-stream tapdisk-diff $(QCOW_UTIL): AIOLIBS := -laio 34 35MEMSHRLIBS := 36ifeq ($(CONFIG_Linux), __fixme__) 37MEMSHR_DIR = $(XEN_ROOT)/tools/memshr 38CFLAGS += -DMEMSHR 39CFLAGS += -I $(MEMSHR_DIR) 40MEMSHRLIBS += -L$(XEN_ROOT)/tools/libxc -lxenctrl $(MEMSHR_DIR)/libmemshr.a 41endif 42 43ifeq ($(VHD_STATIC),y) 44td-util: CFLAGS += -static 45endif 46 47PORTABLE-OBJS-y := 48PORTABLE-OBJS-$(CONFIG_Linux) += blk_linux.o 49PORTABLE-OBJS-$(CONFIG_NetBSD) += blk_netbsd.o 50 51TAP-OBJS-y := scheduler.o 52TAP-OBJS-y += tapdisk-vbd.o 53TAP-OBJS-y += tapdisk-control.o 54TAP-OBJS-y += tapdisk-image.o 55TAP-OBJS-y += tapdisk-driver.o 56TAP-OBJS-y += tapdisk-disktype.o 57TAP-OBJS-y += tapdisk-interface.o 58TAP-OBJS-y += tapdisk-server.o 59TAP-OBJS-y += tapdisk-queue.o 60TAP-OBJS-y += tapdisk-filter.o 61TAP-OBJS-y += tapdisk-log.o 62TAP-OBJS-y += tapdisk-utils.o 63TAP-OBJS-y += io-optimize.o 64TAP-OBJS-y += lock.o 65TAP-OBJS-y += $(PORTABLE-OBJS-y) 66 67MISC-OBJS-y := atomicio.o 68 69BLK-OBJS-y := block-aio.o 70BLK-OBJS-y += block-ram.o 71BLK-OBJS-y += block-cache.o 72BLK-OBJS-y += block-vhd.o 73BLK-OBJS-y += block-log.o 74BLK-OBJS-y += block-qcow.o 75BLK-OBJS-y += aes.o 76BLK-OBJS-y += md5.o 77BLK-OBJS-y += $(PORTABLE-OBJS-y) 78BLK-OBJS-y += $(REMUS-OBJS) 79 80all: $(IBIN) lock-util qcow-util 81 82 83tapdisk2: $(TAP-OBJS-y) $(BLK-OBJS-y) $(MISC-OBJS-y) tapdisk2.o 84 $(CC) -o $@ $^ $(LDFLAGS) -lrt -lz $(VHDLIBS) $(AIOLIBS) $(MEMSHRLIBS) -lm $(APPEND_LDFLAGS) 85 86tapdisk-client: tapdisk-client.o 87 $(CC) -o $@ $^ $(LDFLAGS) -lrt $(APPEND_LDFLAGS) 88 89tapdisk-stream tapdisk-diff: %: %.o $(TAP-OBJS-y) $(BLK-OBJS-y) 90 $(CC) -o $@ $^ $(LDFLAGS) -lrt -lz $(VHDLIBS) $(AIOLIBS) $(MEMSHRLIBS) -lm $(APPEND_LDFLAGS) 91 92td-util: td.o tapdisk-utils.o tapdisk-log.o $(PORTABLE-OBJS-y) 93 $(CC) -o $@ $^ $(LDFLAGS) $(VHDLIBS) $(APPEND_LDFLAGS) 94 95lock-util: lock.c 96 $(CC) $(CFLAGS) -DUTIL -o lock-util lock.c $(LDFLAGS) $(APPEND_LDFLAGS) 97 98.PHONY: qcow-util 99qcow-util: img2qcow qcow2raw qcow-create 100 101img2qcow qcow2raw qcow-create: %: %.o $(TAP-OBJS-y) $(BLK-OBJS-y) 102 $(CC) -o $@ $^ $(LDFLAGS) -lrt -lz $(VHDLIBS) $(AIOLIBS) $(MEMSHRLIBS) -lm $(APPEND_LDFLAGS) 103 104install: all 105 $(INSTALL_DIR) -p $(DESTDIR)$(INST_DIR) 106 $(INSTALL_PROG) $(IBIN) $(LOCK_UTIL) $(QCOW_UTIL) $(DESTDIR)$(INST_DIR) 107 108uninstall: 109 rm -f $(addprefix $(DESTDIR)$(INST_DIR)/, $(IBIN) $(LOCK_UTIL) $(QCOW_UTIL)) 110 111clean: 112 rm -rf .*.d *.o *~ xen TAGS $(IBIN) $(LIB) $(LOCK_UTIL) $(QCOW_UTIL) 113 114distclean: clean 115 116.PHONY: clean install distclean uninstall 117