2 # Copyright (C) 2003 Christophe Varoqui, <christophe.varoqui@opensvc.com>
4 include ../Makefile.inc
7 DEVLIB = libmultipath.so
8 LIBS = $(DEVLIB).$(SONAME)
9 VERSION_SCRIPT := libmultipath.version
11 CFLAGS += $(LIB_CFLAGS) -I$(mpathcmddir) -I$(mpathpersistdir) -I$(nvmedir)
13 LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathcmddir) -lmpathcmd -lurcu -laio
16 CFLAGS += -DUSE_SYSTEMD=$(SYSTEMD)
17 ifeq ($(shell test $(SYSTEMD) -gt 209 && echo 1), 1)
20 LIBDEPS += -lsystemd-daemon
24 ifneq ($(call check_func,dm_task_no_flush,/usr/include/libdevmapper.h),0)
25 CFLAGS += -DLIBDM_API_FLUSH -D_GNU_SOURCE
28 ifneq ($(call check_func,dm_task_get_errno,/usr/include/libdevmapper.h),0)
29 CFLAGS += -DLIBDM_API_GET_ERRNO
32 ifneq ($(call check_func,dm_task_set_cookie,/usr/include/libdevmapper.h),0)
33 CFLAGS += -DLIBDM_API_COOKIE
36 ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,/usr/include/libudev.h),0)
37 CFLAGS += -DLIBUDEV_API_RECVBUF
40 ifneq ($(call check_func,dm_task_deferred_remove,/usr/include/libdevmapper.h),0)
41 CFLAGS += -DLIBDM_API_DEFERRED
44 ifneq ($(call check_func,dm_hold_control_dev,/usr/include/libdevmapper.h),0)
45 CFLAGS += -DLIBDM_API_HOLD_CONTROL
48 OBJS = parser.o vector.o devmapper.o callout.o \
49 hwtable.o blacklist.o util.o dmparser.o config.o \
50 structs.o discovery.o propsel.o dict.o \
51 pgpolicies.o debug.o defaults.o uevent.o time-util.o \
52 switchgroup.o uxsock.o print.o alias.o log_pthread.o \
53 log.o configure.o structs_vec.o sysfs.o prio.o checkers.o \
54 lock.o file.o wwids.o prioritizers/alua_rtpg.o prkey.o \
55 io_err_stat.o dm-generic.o generic.o foreign.o nvme-lib.o \
56 libsg.o valid.o strbuf.o
60 nvme-lib.o: nvme-lib.c nvme-ioctl.c nvme-ioctl.h
61 $(CC) $(CFLAGS) -Wno-unused-function -c -o $@ $<
63 # there are lots of "unused parameters" in dict.c
64 # because not all handler / snprint methods nees all parameters
66 $(CC) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
68 make_static = $(shell sed '/^static/!s/^\([a-z]\{1,\} \)/static \1/' <$1 >$2)
70 nvme-ioctl.c: nvme/nvme-ioctl.c
71 $(call make_static,$<,$@)
73 nvme-ioctl.h: nvme/nvme-ioctl.h
74 $(call make_static,$<,$@)
77 $(LIBS): $(OBJS) $(VERSION_SCRIPT)
78 $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
79 -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
84 $(NV_VERSION_SCRIPT): $(VERSION_SCRIPT)
85 @printf 'NOVERSION {\nglobal:\n' >$@
86 @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
87 @printf 'local:\n\t*;\n};\n' >>$@
89 $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
90 $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
91 -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
93 abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
95 ../tests/$(LIBS): $(OBJS) $(VERSION_SCRIPT)
96 $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=`basename $@` \
97 -o $@ $(OBJS) $(LIBDEPS)
98 $(LN) $@ ${@:.so.0=.so}
100 test-lib: ../tests/$(LIBS)
103 $(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
104 $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
105 $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(libdir)
106 $(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
109 $(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
110 $(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
113 $(RM) core *.a *.o *.so *.so.* *.gz *.abi nvme-ioctl.c nvme-ioctl.h $(NV_VERSION_SCRIPT)
115 include $(wildcard $(OBJS:.o=.d))