JF Bastien | e637637 | 2018-12-19 17:45:32 | [diff] [blame] | 1 | #===-- Makefile ----------------------------------------------------------===## |
| 2 | # |
Chandler Carruth | 57b08b0 | 2019-01-19 10:56:40 | [diff] [blame] | 3 | # 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 Bastien | e637637 | 2018-12-19 17:45:32 | [diff] [blame] | 6 | # |
| 7 | #===----------------------------------------------------------------------===## |
| 8 | |
| 9 | #------------------------------------------------------------------------------ |
| 10 | # Define rules for making the Parallel STL library. |
| 11 | #------------------------------------------------------------------------------ |
| 12 | |
| 13 | |
| 14 | proj_root ?= $(CURDIR)/.. |
| 15 | |
| 16 | include $(proj_root)/build/Makefile.common |
| 17 | CPLUS := $(compiler) $(COMPILER_NOLOGO_KEY) $(USE_SHARED_CPPRUNTIME_KEY) |
| 18 | |
| 19 | .SECONDARY: |
| 20 | .PHONY: clean clean_all clean_pstl bench |
| 21 | |
| 22 | VPATH = $(proj_root)/test |
| 23 | |
| 24 | CPLUS_FLAGS += -I$(proj_root) |
| 25 | |
| 26 | PSTL_MAKEFILE = $(proj_root)/build/Makefile.pstl |
| 27 | BENCH_MAKEFILE = $(proj_root)/build/Makefile.bench |
| 28 | |
| 29 | |
| 30 | test_hdr = $(wildcard $(proj_root)/test/*.h) |
| 31 | test_src = $(wildcard $(proj_root)/test/test_*.cpp) |
| 32 | test_bin = $(notdir $(test_src:.cpp=.exe)) |
| 33 | |
| 34 | |
| 35 | all: $(test_bin) |
| 36 | |
| 37 | test_%.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 | |
| 43 | test_%.exe: test_%$(OBJ_SFX) $(PSTL_LIB_NAME) |
| 44 | $(LD) $< $(LD_OUT_KEY)$@ $(LDFLAGS) $(DYN_LDFLAGS) $(PSTL_LIB_LINK) |
| 45 | |
| 46 | test_%: test_%.exe |
| 47 | $(run_cmd) $(RUN_CMD)test_$*.exe |
| 48 | |
| 49 | test_%$(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 |
| 53 | define eol |
| 54 | |
| 55 | |
| 56 | endef |
| 57 | |
| 58 | test: $(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 | |
| 67 | TEMPLATE_FILES=$(wildcard $(proj_root)/bench/*.*tmpl) |
| 68 | BENCH_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 | |
| 73 | bench : $(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 | |
| 79 | clean_bench: |
| 80 | $(DEL_CMD) $(BENCH_MAKEFILE) |
| 81 | $(DEL_CMD) batch.py |
| 82 | $(DEL_CMD) $(proj_root)/build/bench/*.* |
| 83 | |
| 84 | clean: |
| 85 | $(DEL_CMD) *$(OBJ_SFX) *.exe *.E *.s *.asm *.d *.pdb *.pdb *.suo *.ilk |
| 86 | |
| 87 | clean_pstl: |
| 88 | $(MAKE) -f $(PSTL_MAKEFILE) clean |
| 89 | |
| 90 | clean_all: clean clean_pstl clean_bench |
| 91 | |
| 92 | info: |
| 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 |