162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci# Memblock simulator requires AddressSanitizer (libasan) and liburcu development
462306a36Sopenharmony_ci# packages installed
562306a36Sopenharmony_ciCFLAGS += -I. -I../../include -Wall -O2 -fsanitize=address \
662306a36Sopenharmony_ci	  -fsanitize=undefined -D CONFIG_PHYS_ADDR_T_64BIT
762306a36Sopenharmony_ciLDFLAGS += -fsanitize=address -fsanitize=undefined
862306a36Sopenharmony_ciTARGETS = main
962306a36Sopenharmony_ciTEST_OFILES = tests/alloc_nid_api.o tests/alloc_helpers_api.o tests/alloc_api.o \
1062306a36Sopenharmony_ci		  tests/basic_api.o tests/common.o tests/alloc_exact_nid_api.o
1162306a36Sopenharmony_ciDEP_OFILES = memblock.o lib/slab.o mmzone.o slab.o
1262306a36Sopenharmony_ciOFILES = main.o $(DEP_OFILES) $(TEST_OFILES)
1362306a36Sopenharmony_ciEXTR_SRC = ../../../mm/memblock.c
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciifeq ($(BUILD), 32)
1662306a36Sopenharmony_ci	CFLAGS += -m32
1762306a36Sopenharmony_ci	LDFLAGS += -m32
1862306a36Sopenharmony_ciendif
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci# Process user parameters
2162306a36Sopenharmony_ciinclude scripts/Makefile.include
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cimain: $(OFILES)
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci$(OFILES): include
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciinclude: ../../../include/linux/memblock.h ../../include/linux/*.h \
2862306a36Sopenharmony_ci	../../include/asm/*.h
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci	@mkdir -p linux
3162306a36Sopenharmony_ci	test -L linux/memblock.h || ln -s ../../../../include/linux/memblock.h linux/memblock.h
3262306a36Sopenharmony_ci	test -L asm/asm.h || ln -s ../../../arch/x86/include/asm/asm.h asm/asm.h
3362306a36Sopenharmony_ci	test -L asm/cmpxchg.h || ln -s ../../../arch/x86/include/asm/cmpxchg.h asm/cmpxchg.h
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cimemblock.c: $(EXTR_SRC)
3662306a36Sopenharmony_ci	test -L memblock.c || ln -s $(EXTR_SRC) memblock.c
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciclean:
3962306a36Sopenharmony_ci	$(RM) $(TARGETS) $(OFILES) linux/memblock.h memblock.c asm/asm.h asm/cmpxchg.h
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cihelp:
4262306a36Sopenharmony_ci	@echo  'Memblock simulator'
4362306a36Sopenharmony_ci	@echo  ''
4462306a36Sopenharmony_ci	@echo  'Available targets:'
4562306a36Sopenharmony_ci	@echo  '  main		  - Build the memblock simulator'
4662306a36Sopenharmony_ci	@echo  '  clean		  - Remove generated files and symlinks in the directory'
4762306a36Sopenharmony_ci	@echo  ''
4862306a36Sopenharmony_ci	@echo  'Configuration:'
4962306a36Sopenharmony_ci	@echo  '  make MEMBLOCK_DEBUG=1     - enable memblock_dbg() messages'
5062306a36Sopenharmony_ci	@echo  '  make NUMA=1               - simulate enabled NUMA'
5162306a36Sopenharmony_ci	@echo  '  make 32BIT_PHYS_ADDR_T=1  - Use 32 bit physical addresses'
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_civpath %.c ../../lib
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci.PHONY: clean include help
56