blob: f4ab25c8792a25ece2e9bd6cf5290c76c62a4f91 [file] [log] [blame]
JF Bastiene6376372018-12-19 17:45:321#===-- Makefile ----------------------------------------------------------===##
2#
Chandler Carruth57b08b02019-01-19 10:56:403# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4# See https://llvm.org/LICENSE.txt for license information.
5# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
JF Bastiene6376372018-12-19 17:45:326#
7#===----------------------------------------------------------------------===##
8
9#------------------------------------------------------------------------------
10# Define rules for making the Parallel STL library.
11#------------------------------------------------------------------------------
12
13
14proj_root ?= $(CURDIR)/..
15
16include $(proj_root)/build/Makefile.common
17CPLUS := $(compiler) $(COMPILER_NOLOGO_KEY) $(USE_SHARED_CPPRUNTIME_KEY)
18
19.SECONDARY:
20.PHONY: clean clean_all clean_pstl bench
21
22VPATH = $(proj_root)/test
23
24CPLUS_FLAGS += -I$(proj_root)
25
26PSTL_MAKEFILE = $(proj_root)/build/Makefile.pstl
27BENCH_MAKEFILE = $(proj_root)/build/Makefile.bench
28
29
30test_hdr = $(wildcard $(proj_root)/test/*.h)
31test_src = $(wildcard $(proj_root)/test/test_*.cpp)
32test_bin = $(notdir $(test_src:.cpp=.exe))
33
34
35all: $(test_bin)
36
37test_%.offload.exe: test_%.offload$(OBJ_SFX) exception_list.offload$(OBJ_SFX)
38 $(CPLUS) $(CPLUS_FLAGS) $^ $(FKEY)o$@ $(LDFLAGS)
39
40$(PSTL_LIB_NAME):
41 $(MAKE) -f $(PSTL_MAKEFILE) backend=$(backend) cfg=$(cfg)
42
43test_%.exe: test_%$(OBJ_SFX) $(PSTL_LIB_NAME)
44 $(LD) $< $(LD_OUT_KEY)$@ $(LDFLAGS) $(DYN_LDFLAGS) $(PSTL_LIB_LINK)
45
46test_%: test_%.exe
47 $(run_cmd) $(RUN_CMD)test_$*.exe
48
49test_%$(OBJ_SFX): test_%.cpp $(test_hdr) $(proj_root)/build/Makefile
50 $(CPLUS) $(CPLUS_FLAGS) -c $< $(FKEY)o$@
51
52# This definition intentionally consists of two blank lines
53define eol
54
55
56endef
57
58test: $(test_bin)
59 $(foreach test, $(test_bin), $(run_cmd) $(RUN_CMD)$(test) $(args) $(eol))
60
61%.s: %.cpp $(proj_root)/build/Makefile
62 $(CPLUS) $(CPLUS_FLAGS) -S $< $(FKEY)o$@
63
64%.E: %.cpp
65 $(CPLUS) $(CPLUS_FLAGS) -E $< >$@
66
67TEMPLATE_FILES=$(wildcard $(proj_root)/bench/*.*tmpl)
68BENCH_COMMON_FILES=$(wildcard $(proj_root)/bench/*.h) $(wildcard $(proj_root)/bench/*.cpp)
69
70$(BENCH_MAKEFILE): $(proj_root)/bench/algorithm.json $(proj_root)/bench/gen.py $(TEMPLATE_FILES)
71 $(PYTHON) $(proj_root)/bench/gen.py $(proj_root)/bench/algorithm.json
72
73bench : $(BENCH_MAKEFILE) $(BENCH_COMMON_FILES) $(PSTL_LIB_NAME)
74 @echo TEMPLATE_FILES=$(TEMPLATE_FILES)
75 @echo proj_root=$(proj_root)
76 ls -la $(proj_root)/bench/gen.py
77 $(MAKE) -f $(BENCH_MAKEFILE)
78
79clean_bench:
80 $(DEL_CMD) $(BENCH_MAKEFILE)
81 $(DEL_CMD) batch.py
82 $(DEL_CMD) $(proj_root)/build/bench/*.*
83
84clean:
85 $(DEL_CMD) *$(OBJ_SFX) *.exe *.E *.s *.asm *.d *.pdb *.pdb *.suo *.ilk
86
87clean_pstl:
88 $(MAKE) -f $(PSTL_MAKEFILE) clean
89
90clean_all: clean clean_pstl clean_bench
91
92info:
93 @echo OS = $(os_name)
94 @echo proj_root = "$(proj_root)"
95 @echo $(CURDIR)
96 @echo VPATH = $(VPATH)
97 @echo LIBRARY_PATH = $(LIBRARY_PATH)
98 @echo backend = $(backend)
99 @echo compiler = $(compiler)
100
101-include *.d