Imported Upstream version 0.8.9
[platform/upstream/multipath-tools.git] / libmultipath / Makefile
1 #
2 # Copyright (C) 2003 Christophe Varoqui, <christophe.varoqui@opensvc.com>
3 #
4 include ../Makefile.inc
5
6 SONAME = 0
7 DEVLIB = libmultipath.so
8 LIBS = $(DEVLIB).$(SONAME)
9 VERSION_SCRIPT := libmultipath.version
10
11 CFLAGS += $(LIB_CFLAGS) -I$(mpathcmddir) -I$(mpathpersistdir) -I$(nvmedir)
12
13 LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathcmddir) -lmpathcmd -lurcu -laio
14
15 ifdef SYSTEMD
16         CFLAGS += -DUSE_SYSTEMD=$(SYSTEMD)
17         ifeq ($(shell test $(SYSTEMD) -gt 209 && echo 1), 1)
18                 LIBDEPS += -lsystemd
19         else
20                 LIBDEPS += -lsystemd-daemon
21         endif
22 endif
23
24 ifneq ($(call check_func,dm_task_no_flush,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
25         CFLAGS += -DLIBDM_API_FLUSH -D_GNU_SOURCE
26 endif
27
28 ifneq ($(call check_func,dm_task_get_errno,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
29         CFLAGS += -DLIBDM_API_GET_ERRNO
30 endif
31
32 ifneq ($(call check_func,dm_task_set_cookie,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
33         CFLAGS += -DLIBDM_API_COOKIE
34 endif
35
36 ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,$(LIBUDEV_INCDIR)/libudev.h),0)
37         CFLAGS += -DLIBUDEV_API_RECVBUF
38 endif
39
40 ifneq ($(call check_func,dm_task_deferred_remove,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
41         CFLAGS += -DLIBDM_API_DEFERRED
42 endif
43
44 ifneq ($(call check_func,dm_hold_control_dev,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
45         CFLAGS += -DLIBDM_API_HOLD_CONTROL
46 endif
47
48 ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(LINUX_HEADERS_INCDIR)/scsi/fc/fc_els.h),0)
49         CFLAGS += -DFPIN_EVENT_HANDLER
50 endif
51
52
53 OBJS = parser.o vector.o devmapper.o callout.o \
54         hwtable.o blacklist.o util.o dmparser.o config.o \
55         structs.o discovery.o propsel.o dict.o \
56         pgpolicies.o debug.o defaults.o uevent.o time-util.o \
57         switchgroup.o uxsock.o print.o alias.o log_pthread.o \
58         log.o configure.o structs_vec.o sysfs.o prio.o checkers.o \
59         lock.o file.o wwids.o prioritizers/alua_rtpg.o prkey.o \
60         io_err_stat.o dm-generic.o generic.o foreign.o nvme-lib.o \
61         libsg.o valid.o strbuf.o
62
63 all:    $(DEVLIB)
64
65 nvme-lib.o: nvme-lib.c nvme-ioctl.c nvme-ioctl.h
66         $(CC) $(CFLAGS) -Wno-unused-function -c -o $@ $<
67
68 # there are lots of "unused parameters" in dict.c
69 # because not all handler / snprint methods need all parameters
70 dict.o: dict.c
71         $(CC) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
72
73 make_static = $(shell sed '/^static/!s/^\([a-z]\{1,\} \)/static \1/' <$1 >$2)
74
75 nvme-ioctl.c: nvme/nvme-ioctl.c
76         $(call make_static,$<,$@)
77
78 nvme-ioctl.h: nvme/nvme-ioctl.h
79         $(call make_static,$<,$@)
80
81
82 $(LIBS): $(OBJS) $(VERSION_SCRIPT)
83         $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
84                 -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
85
86 $(DEVLIB): $(LIBS)
87         $(LN) $(LIBS) $@
88
89 $(NV_VERSION_SCRIPT):   $(VERSION_SCRIPT)
90         @printf 'NOVERSION {\nglobal:\n' >$@
91         @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
92         @printf 'local:\n\t*;\n};\n' >>$@
93
94 $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
95         $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
96                 -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
97
98 abi:    $(LIBS:%.so.$(SONAME)=%-nv.abi)
99
100 ../tests/$(LIBS): $(OBJS) $(VERSION_SCRIPT)
101         $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=`basename $@` \
102                 -o $@ $(OBJS) $(LIBDEPS)
103         $(LN) $@ ${@:.so.0=.so}
104
105 test-lib:       ../tests/$(LIBS)
106
107 install: all
108         $(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
109         $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
110         $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(libdir)
111         $(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
112
113 uninstall:
114         $(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
115         $(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
116
117 clean: dep_clean
118         $(RM) core *.a *.o *.so *.so.* *.abi nvme-ioctl.c nvme-ioctl.h $(NV_VERSION_SCRIPT)
119
120 include $(wildcard $(OBJS:.o=.d))
121
122 dep_clean:
123         $(RM) $(OBJS:.o=.d)