1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
21366c37eSMatthew Wilcox
3*bde1597dSArnd BergmannCFLAGS += -I. -I../../include -I../../../lib -g -Og -Wall \
4*bde1597dSArnd Bergmann	  -D_LGPL_SOURCE -fsanitize=address -fsanitize=undefined
5d1c0d5e3SMatthew WilcoxLDFLAGS += -fsanitize=address -fsanitize=undefined
6284d96a4SMichael EllermanLDLIBS+= -lpthread -lurcu
7e15e06a8SLiam R. HowlettTARGETS = main idr-test multiorder xarray maple
8aa0eab86SKarolina DrobnikCORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o find_bit.o bitmap.o \
9e15e06a8SLiam R. Howlett			 slab.o maple.o
108ac04868SMatthew WilcoxOFILES = main.o $(CORE_OFILES) regression1.o regression2.o regression3.o \
117e934cf5SMatthew Wilcox (Oracle)	 regression4.o tag_check.o multiorder.o idr-test.o iteration_check.o \
127e934cf5SMatthew Wilcox (Oracle)	 iteration_check_2.o benchmark.o
13cfa40bcfSKonstantin Khlebnikov
14c6ce3e2fSRehas Sachdevaifndef SHIFT
15c6ce3e2fSRehas Sachdeva	SHIFT=3
16cfa40bcfSKonstantin Khlebnikovendif
171366c37eSMatthew Wilcox
18c4634b08SRehas Sachdevaifeq ($(BUILD), 32)
19c4634b08SRehas Sachdeva	CFLAGS += -m32
20f0f3f2d0SMatthew Wilcox	LDFLAGS += -m32
21120b1162SLiam HowlettLONG_BIT := 32
22c4634b08SRehas Sachdevaendif
23c4634b08SRehas Sachdeva
24120b1162SLiam Howlettifndef LONG_BIT
25120b1162SLiam HowlettLONG_BIT := $(shell getconf LONG_BIT)
26120b1162SLiam Howlettendif
27120b1162SLiam Howlett
28120b1162SLiam Howletttargets: generated/map-shift.h generated/bit-length.h $(TARGETS)
291366c37eSMatthew Wilcox
301366c37eSMatthew Wilcoxmain:	$(OFILES)
318ac04868SMatthew Wilcox
328ab8ba38SMatthew Wilcoxidr-test.o: ../../../lib/test_ida.c
338ac04868SMatthew Wilcoxidr-test: idr-test.o $(CORE_OFILES)
348ac04868SMatthew Wilcox
35ad3d6c72SMatthew Wilcoxxarray: $(CORE_OFILES)
36ad3d6c72SMatthew Wilcox
37e15e06a8SLiam R. Howlettmaple: $(CORE_OFILES)
38e15e06a8SLiam R. Howlett
398ac04868SMatthew Wilcoxmultiorder: multiorder.o $(CORE_OFILES)
401366c37eSMatthew Wilcox
411366c37eSMatthew Wilcoxclean:
42120b1162SLiam Howlett	$(RM) $(TARGETS) *.o radix-tree.c idr.c generated/map-shift.h generated/bit-length.h
431366c37eSMatthew Wilcox
44991af734SMatthew Wilcoxvpath %.c ../../lib
450629573eSMatthew Wilcox
46120b1162SLiam Howlett$(OFILES): Makefile *.h */*.h generated/map-shift.h generated/bit-length.h \
470629573eSMatthew Wilcox	../../include/linux/*.h \
4843a30c2aSMatthew Wilcox	../../include/asm/*.h \
49f8d5d0ccSMatthew Wilcox	../../../include/linux/xarray.h \
50e15e06a8SLiam R. Howlett	../../../include/linux/maple_tree.h \
510a835c4fSMatthew Wilcox	../../../include/linux/radix-tree.h \
52*bde1597dSArnd Bergmann	../../../lib/radix-tree.h \
530a835c4fSMatthew Wilcox	../../../include/linux/idr.h
541366c37eSMatthew Wilcox
551366c37eSMatthew Wilcoxradix-tree.c: ../../../lib/radix-tree.c
561366c37eSMatthew Wilcox	sed -e 's/^static //' -e 's/__always_inline //' -e 's/inline //' < $< > $@
570a835c4fSMatthew Wilcox
580a835c4fSMatthew Wilcoxidr.c: ../../../lib/idr.c
590a835c4fSMatthew Wilcox	sed -e 's/^static //' -e 's/__always_inline //' -e 's/inline //' < $< > $@
60c6ce3e2fSRehas Sachdeva
61ad3d6c72SMatthew Wilcoxxarray.o: ../../../lib/xarray.c ../../../lib/test_xarray.c
62f8d5d0ccSMatthew Wilcox
63e15e06a8SLiam R. Howlettmaple.o: ../../../lib/maple_tree.c ../../../lib/test_maple_tree.c
64e15e06a8SLiam R. Howlett
658d9fa88eSRoss Zwislergenerated/map-shift.h:
663f1b6f9dSMatthew Wilcox	@if ! grep -qws $(SHIFT) generated/map-shift.h; then		\
6702c02bf1SMatthew Wilcox		echo "#define XA_CHUNK_SHIFT $(SHIFT)" >		\
68c6ce3e2fSRehas Sachdeva				generated/map-shift.h;			\
69c6ce3e2fSRehas Sachdeva	fi
70120b1162SLiam Howlett
71120b1162SLiam Howlettgenerated/bit-length.h: FORCE
72120b1162SLiam Howlett	@if ! grep -qws CONFIG_$(LONG_BIT)BIT generated/bit-length.h; then   \
73120b1162SLiam Howlett		echo "Generating $@";                                        \
74120b1162SLiam Howlett		echo "#define CONFIG_$(LONG_BIT)BIT 1" > $@;                 \
75120b1162SLiam Howlett	fi
76120b1162SLiam Howlett
77120b1162SLiam HowlettFORCE: ;
78