1XEN_ROOT=$(CURDIR)/../../../..
2BLKTAP_ROOT := ../..
3include $(XEN_ROOT)/tools/Rules.mk
4
5LIBVHD-MAJOR     = 1.0
6LIBVHD-MINOR     = 0
7LIBVHD-SONAME    = libvhd.so.$(LIBVHD-MAJOR)
8
9LVM-UTIL-OBJ    := $(BLKTAP_ROOT)/lvm/lvm-util.o
10
11LIBVHD-BUILD    := libvhd.a
12
13INST-DIR         = $(libdir)
14
15CFLAGS          += -Werror
16CFLAGS          += -Wno-unused
17CFLAGS          += -I../../include
18CFLAGS          += -D_GNU_SOURCE
19CFLAGS          += -fPIC
20
21ifeq ($(CONFIG_Linux),y)
22LIBS            := -luuid
23endif
24
25ifeq ($(CONFIG_LIBICONV),y)
26LIBS            += -liconv
27endif
28
29LIB-SRCS        := libvhd.c
30LIB-SRCS        += libvhd-journal.c
31LIB-SRCS        += vhd-util-coalesce.c
32LIB-SRCS        += vhd-util-create.c
33LIB-SRCS        += vhd-util-fill.c
34LIB-SRCS        += vhd-util-modify.c
35LIB-SRCS        += vhd-util-query.c
36LIB-SRCS        += vhd-util-read.c
37LIB-SRCS        += vhd-util-repair.c
38LIB-SRCS        += vhd-util-resize.c
39LIB-SRCS        += vhd-util-revert.c
40LIB-SRCS        += vhd-util-set-field.c
41LIB-SRCS        += vhd-util-snapshot.c
42LIB-SRCS        += vhd-util-scan.c
43LIB-SRCS        += vhd-util-check.c
44LIB-SRCS        += vhd-util-uuid.c
45LIB-SRCS        += relative-path.c
46LIB-SRCS        += atomicio.c
47
48LIB-OBJS         = $(patsubst %.c,%.o,$(LIB-SRCS))
49LIB-OBJS        += $(LVM-UTIL-OBJ)
50
51LIB-PICOBJS      = $(patsubst %.o,%.opic,$(LIB-OBJS))
52
53LIBVHD           = libvhd.a libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR)
54
55all: build
56
57build: libvhd.a libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR)
58
59libvhd.a: $(LIB-OBJS)
60	$(AR) rc $@ $^
61
62libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR): $(LIB-PICOBJS)
63	$(CC) -Wl,$(SONAME_LDFLAG),$(LIBVHD-SONAME) $(SHLIB_LDFLAGS) \
64		$(LDFLAGS) -o libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR) $^ $(LIBS)
65	ln -sf libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR) libvhd.so.$(LIBVHD-MAJOR)
66	ln -sf libvhd.so.$(LIBVHD-MAJOR) libvhd.so
67
68install: all
69	$(INSTALL_DIR) -p $(DESTDIR)$(INST-DIR)
70	$(INSTALL_DATA) libvhd.a $(DESTDIR)$(INST-DIR)
71	$(INSTALL_PROG) libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR) $(DESTDIR)$(INST-DIR)
72	ln -sf libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR) $(DESTDIR)$(INST-DIR)/libvhd.so.$(LIBVHD-MAJOR)
73	ln -sf libvhd.so.$(LIBVHD-MAJOR) $(DESTDIR)$(INST-DIR)/libvhd.so
74
75uninstall:
76	rm -f $(DESTDIR)$(INST-DIR)/libvhd.so
77	rm -f $(DESTDIR)$(INST-DIR)/libvhd.so.$(LIBVHD-MAJOR)
78	rm -f $(DESTDIR)$(INST-DIR)/libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR)
79	rm -f $(DESTDIR)$(INST-DIR)/libvhd.a
80
81clean:
82	rm -rf *.a *.so* *.o *.opic *~ $(DEPS_RM) $(LIBVHD)
83
84distclean: clean
85
86.PHONY: all build clean distclean install libvhd uninstall
87
88-include $(DEPS_INCLUDE)
89