1 thisdir = tools/mono-symbolicate
3 include ../../build/rules.make
5 PROGRAM = mono-symbolicate.exe
9 /r:Mono.CompilerServices.SymbolWriter.dll \
14 EXTRA_DISTFILES="mono-symbolicate-native.dll"
16 include ../../build/executable.make
18 LIB_PATH = $(topdir)/class/lib/$(PROFILE)
20 MONO = MONO_PATH="$(LIB_PATH)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) -O=-inline
23 TEST_CS = Test/StackTraceDumper.cs
24 TEST_EXE = $(OUT_DIR)/StackTraceDumper.exe
25 RELEASE_FILE = $(OUT_DIR)/release.out
26 SYMBOLICATE_FILE = $(OUT_DIR)/symbolicate.out
27 SYMBOLICATE_EXPECTED_FILE = Test/symbolicate.expected
30 MONO_DEBUG=gen-compact-seq-points $(MONO) $(TEST_EXE) > $(RELEASE_FILE); \
31 $(MONO) $(LIB_PATH)/$(PROGRAM) $(TEST_EXE) $(RELEASE_FILE) | sed "s/).*Test\//) in /" > $(SYMBOLICATE_FILE); \
32 DIFF=$$(diff $(SYMBOLICATE_FILE) $(SYMBOLICATE_EXPECTED_FILE)); \
33 if [ ! -z "$$DIFF" ]; then \
34 echo "Symbolicate tests failed."; \
35 echo "If $(SYMBOLICATE_FILE) is correct copy it to $(SYMBOLICATE_EXPECTED_FILE)."; \
36 echo "Otherwise runtime sequence points need to be fixed."; \
43 mkdir -p $(OUT_DIR); \
44 $(MCS) -debug $(TEST_CS) -out:$(TEST_EXE)
48 AOT_SUPPORTED = $(shell $(MONO) --aot 2>&1 | grep -q "AOT compilation is not supported" && echo 0 || echo 1)
52 @echo "Checking $(PROGRAM) without AOT"
54 ifeq ($(AOT_SUPPORTED), 1)
55 @echo "Checking $(PROGRAM) with AOT"
56 @MONO_DEBUG=gen-compact-seq-points $(MONO) --aot $(TEST_EXE) > /dev/null
58 @echo "Checking $(PROGRAM) with AOT (using .msym)"
60 @MONO_DEBUG=gen-compact-seq-points $(MONO) --aot=gen-seq-points-file $(TEST_EXE) > /dev/null
64 all: mono-symbolicate-native.dll
66 mono-symbolicate-native.dll:
67 cp ../../../mono/mini/mono-sgen mono-symbolicate-native.dll
70 rm -rf mono-symbolicate-native.dll