[mono-symbolicate] Run tests with "run-test" target instead of "test"
[mono.git] / mcs / tools / mono-symbolicate / Makefile
1 thisdir = tools/mono-symbolicate
2 SUBDIRS =
3 include ../../build/rules.make
4
5 PROGRAM = mono-symbolicate.exe
6
7 LOCAL_MCS_FLAGS = /D:NO_AUTHENTICODE /D:CECIL -nowarn:649
8
9 LIB_REFS = System.Xml System.Core System
10
11 include ../../build/executable.make
12
13 LIB_PATH = $(topdir)/class/lib/$(PROFILE)
14
15 MONO = MONO_PATH="$(LIB_PATH)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) -O=-inline
16
17 MSYM_DIR = $(OUT_DIR)/msymdir
18 TEST_CS = Test/StackTraceDumper.cs
19 TEST_EXE = $(OUT_DIR)/StackTraceDumper.exe
20 STACKTRACE_FILE = $(OUT_DIR)/stacktrace.out
21 SYMBOLICATE_RAW_FILE = $(OUT_DIR)/symbolicate_raw.out
22 SYMBOLICATE_RESULT_FILE = $(OUT_DIR)/symbolicate.result
23 SYMBOLICATE_EXPECTED_FILE = Test/symbolicate.expected
24
25 CHECK_DIFF = @\
26         $(MONO) $(TEST_EXE) > $(STACKTRACE_FILE); \
27         $(MONO) $(LIB_PATH)/$(PROGRAM) $(MSYM_DIR) $(STACKTRACE_FILE) > $(SYMBOLICATE_RAW_FILE); \
28         cat $(SYMBOLICATE_RAW_FILE) | tr '\\' '/' | sed "s/) .* in .*\/mcs\//) in mcs\//" | sed "s/) .* in .*\/external\//) in external\//" | sed '/\[MVID\]/d' | sed '/\[AOTID\]/d' > $(SYMBOLICATE_RESULT_FILE); \
29         DIFF=$$(diff -up $(SYMBOLICATE_EXPECTED_FILE) $(SYMBOLICATE_RESULT_FILE)); \
30         if [ ! -z "$$DIFF" ]; then \
31                 echo "Symbolicate tests failed."; \
32                 echo "If $(SYMBOLICATE_RESULT_FILE) is correct copy it to $(SYMBOLICATE_EXPECTED_FILE)."; \
33                 echo "Otherwise runtime sequence points need to be fixed."; \
34                 echo "$$DIFF"; \
35                 exit 1; \
36         fi
37
38 PREPARE_OUTDIR = @\
39         rm -rf $(OUT_DIR); \
40         mkdir -p $(OUT_DIR); \
41         mkdir -p $(MSYM_DIR);
42
43 COMPILE = \
44         $(CSCOMPILE) $(TEST_CS) -out:$(TEST_EXE); \
45         $(MONO) $(LIB_PATH)/$(PROGRAM) store-symbols $(MSYM_DIR) $(OUT_DIR); \
46         $(MONO) $(LIB_PATH)/$(PROGRAM) store-symbols $(MSYM_DIR) $(LIB_PATH);
47
48 check: run-test
49
50 AOT_SUPPORTED = $(shell $(MONO) --aot 2>&1 | grep -q "AOT compilation is not supported" && echo 0 || echo 1)
51
52 run-test-local: run-test-without-aot run-test-with-aot run-test-with-aot-msym
53
54 run-test-without-aot: OUT_DIR = Test/without_aot
55 run-test-without-aot: all
56         @echo "Checking $(TEST_EXE) without AOT in $(OUT_DIR)"
57         $(PREPARE_OUTDIR)
58         $(COMPILE)
59         $(CHECK_DIFF)
60
61 run-test-with-aot: OUT_DIR = Test/with_aot
62 run-test-with-aot: all
63 ifeq ($(AOT_SUPPORTED), 1)
64         @echo "Checking $(TEST_EXE) with AOT in $(OUT_DIR)"
65         $(PREPARE_OUTDIR)
66         $(COMPILE)
67         @$(MONO) --aot $(TEST_EXE) > /dev/null
68         $(CHECK_DIFF)
69 endif
70
71 run-test-with-aot-msym: OUT_DIR = Test/with_aot_msym
72 run-test-with-aot-msym: all
73 ifeq ($(AOT_SUPPORTED), 1)
74         @echo "Checking $(TEST_EXE) with AOT (using .msym) in $(OUT_DIR)"
75         $(PREPARE_OUTDIR)
76         $(COMPILE)
77         @$(MONO) --aot=msym-dir=$(MSYM_DIR) $(TEST_EXE) > /dev/null
78         $(CHECK_DIFF)
79 endif