multipath-tools tests: add test for VPD parsing
[multipath-tools/.git] / tests / Makefile
1 include ../Makefile.inc
2
3 CFLAGS += $(BIN_CFLAGS) -I$(multipathdir) -I$(mpathcmddir)
4 LIBDEPS += -L$(multipathdir) -lmultipath -lcmocka
5
6 TESTS := uevent parser util dmevents hwtable blacklist unaligned vpd
7
8 .SILENT: $(TESTS:%=%.o)
9 .PRECIOUS: $(TESTS:%=%-test)
10
11 all:    $(TESTS:%=%.out)
12
13 # test-specific linker flags
14 # XYZ-test-TESTDEPS: test libraries containing __wrap_xyz functions
15 # XYZ-test_OBJDEPS: object files from libraries to link in explicitly
16 #    That may be necessary if functions called from the object file are wrapped
17 #    (wrapping works only for symbols which are undefined after processing a
18 #    linker input file).
19 # XYZ-test_LIBDEPS: Additional libs to link for this test
20
21 dmevents-test_LIBDEPS = -lpthread -ldevmapper -lurcu
22 hwtable-test_TESTDEPS := test-lib.o
23 hwtable-test_OBJDEPS := ../libmultipath/discovery.o ../libmultipath/blacklist.o \
24         ../libmultipath/prio.o ../libmultipath/callout.o ../libmultipath/structs.o
25 hwtable-test_LIBDEPS := -ludev -lpthread -ldl
26 blacklist-test_OBJDEPS := ../libmultipath/blacklist.o
27 blacklist-test_LIBDEPS := -ludev
28 vpd-test_OBJDEPS :=  ../libmultipath/discovery.o
29 vpd-test_LIBDEPS := -ludev -lpthread -ldl
30
31 lib/libchecktur.so:
32         mkdir lib
33         ln -t lib ../libmultipath/{checkers,prioritizers,foreign}/*.so
34
35 %.out:  %-test lib/libchecktur.so
36         @echo == running $< ==
37         @LD_LIBRARY_PATH=$(multipathdir):$(mpathcmddir) ./$< >$@
38
39 OBJS = $(TESTS:%=%.o) test-lib.o
40
41 clean: dep_clean
42         $(RM) $(TESTS:%=%-test) $(TESTS:%=%.out) $(OBJS)
43         $(RM) -rf lib
44
45 .SECONDARY: $(OBJS)
46
47 include $(wildcard $(OBJS:.o=.d))
48
49 dep_clean:
50         $(RM) $(OBJS:.o=.d)
51
52 %.o.wrap:       %.c
53         @sed -n 's/^.*__wrap_\([a-zA-Z0-9_]*\).*$$/-Wl,--wrap=\1/p' $< | \
54                 sort -u | tr '\n' ' ' >$@
55
56 # COLON will get expanded during second expansion below
57 COLON:=:
58 .SECONDEXPANSION:
59 %-test: %.o %.o.wrap $$($$@_OBJDEPS) $$($$@_TESTDEPS) $$($$@_TESTDEPS$$(COLON).o=.o.wrap) \
60                 $(multipathdir)/libmultipath.so Makefile
61         $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $($@_TESTDEPS) $($@_OBJDEPS) \
62                 $(LIBDEPS) $($@_LIBDEPS) \
63                 $(shell cat $<.wrap) $(foreach dep,$($@_TESTDEPS),$(shell cat $(dep).wrap))