[mono-symbolicate] Improved Makefile
authorMarcos Henrich <marcos.henrich@xamarin.com>
Tue, 21 Jun 2016 10:31:29 +0000 (11:31 +0100)
committerMarcos Henrich <marcos.henrich@xamarin.com>
Fri, 8 Jul 2016 21:40:38 +0000 (22:40 +0100)
Makefile now stores managed assemblies into the msym dir.

Each test now uses a separate directory to store stacktraces outputs and
symbols.

mcs/tools/mono-symbolicate/Makefile

index 3deeee0c1d390dbe11ef2ed99735f26c7fa285aa..32059cfdc67eb3f759f732f983733f170eab4bbf 100644 (file)
@@ -15,45 +15,65 @@ LIB_PATH = $(topdir)/class/lib/$(PROFILE)
 
 MONO = MONO_PATH="$(LIB_PATH)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) -O=-inline
 
-MSYM_DIR = msymdir
-OUT_DIR = Test/out
+MSYM_DIR = $(OUT_DIR)/msymdir
 TEST_CS = Test/StackTraceDumper.cs
 TEST_EXE = $(OUT_DIR)/StackTraceDumper.exe
-RELEASE_FILE = $(OUT_DIR)/release.out
-SYMBOLICATE_FILE = $(OUT_DIR)/symbolicate.out
+STACKTRACE_FILE = $(OUT_DIR)/stacktrace.out
+SYMBOLICATE_RAW_FILE = $(OUT_DIR)/symbolicate_raw.out
+SYMBOLICATE_RESULT_FILE = $(OUT_DIR)/symbolicate.result
 SYMBOLICATE_EXPECTED_FILE = Test/symbolicate.expected
 
 CHECK_DIFF = @\
-       MONO_DEBUG=gen-compact-seq-points $(MONO) $(TEST_EXE) > $(RELEASE_FILE); \
-       $(MONO) $(LIB_PATH)/$(PROGRAM) $(MSYM_DIR) $(RELEASE_FILE) | sed "s/).*Test\//) in /" > $(SYMBOLICATE_FILE); \
-       DIFF=$$(diff $(SYMBOLICATE_FILE) $(SYMBOLICATE_EXPECTED_FILE)); \
+       MONO_DEBUG=gen-compact-seq-points $(MONO) $(TEST_EXE) > $(STACKTRACE_FILE); \
+       $(MONO) $(LIB_PATH)/$(PROGRAM) $(MSYM_DIR) $(STACKTRACE_FILE) > $(SYMBOLICATE_RAW_FILE); \
+       sed "s/).*Test\//) in /" $(SYMBOLICATE_RAW_FILE) | sed '/\[MVID\]/d' | sed '/\[AOTID\]/d' > $(SYMBOLICATE_RESULT_FILE); \
+       DIFF=$$(diff $(SYMBOLICATE_RESULT_FILE) $(SYMBOLICATE_EXPECTED_FILE)); \
        if [ ! -z "$$DIFF" ]; then \
                echo "Symbolicate tests failed."; \
-               echo "If $(SYMBOLICATE_FILE) is correct copy it to $(SYMBOLICATE_EXPECTED_FILE)."; \
+               echo "If $(SYMBOLICATE_RESULT_FILE) is correct copy it to $(SYMBOLICATE_EXPECTED_FILE)."; \
                echo "Otherwise runtime sequence points need to be fixed."; \
                echo "$$DIFF"; \
                exit 1; \
        fi
 
-BUILD_TEST_EXE = \
+PREPARE_OUTDIR = @\
        rm -rf $(OUT_DIR); \
        mkdir -p $(OUT_DIR); \
-       $(CSCOMPILE) $(TEST_CS) -out:$(TEST_EXE)
+       mkdir -p $(MSYM_DIR);
+
+COMPILE = \
+       $(CSCOMPILE) $(TEST_CS) -out:$(TEST_EXE); \
+       $(MONO) $(LIB_PATH)/$(PROGRAM) store-symbols $(MSYM_DIR) $(OUT_DIR)
 
 check: test-local
 
 AOT_SUPPORTED = $(shell $(MONO) --aot 2>&1 | grep -q "AOT compilation is not supported" && echo 0 || echo 1)
 
-test-local: all
-       $(BUILD_TEST_EXE)
-       @echo "Checking $(TEST_EXE) without AOT"
+test-local: test-without-aot test-with-aot test-with-aot-msym
+
+test-without-aot: OUT_DIR = Test/without_aot
+test-without-aot: all
+       @echo "Checking $(TEST_EXE) without AOT in $(OUT_DIR)"
+       $(PREPARE_OUTDIR)
+       $(COMPILE)
        $(CHECK_DIFF)
+
+test-with-aot: OUT_DIR = Test/with_aot
+test-with-aot: all
 ifeq ($(AOT_SUPPORTED), 1)
-       @echo "Checking $(TEST_EXE) with AOT"
+       @echo "Checking $(TEST_EXE) with AOT in $(OUT_DIR)"
+       $(PREPARE_OUTDIR)
+       $(COMPILE)
        @MONO_DEBUG=gen-compact-seq-points $(MONO) --aot $(TEST_EXE) > /dev/null
        $(CHECK_DIFF)
-       @echo "Checking $(TEST_EXE) with AOT (using .msym)"
-       $(BUILD_TEST_EXE)
-       @MONO_DEBUG=gen-compact-seq-points $(MONO) --aot=gen-seq-points-file $(TEST_EXE) > /dev/null
+endif
+
+test-with-aot-msym: OUT_DIR = Test/with_aot_msym
+test-with-aot-msym: all
+ifeq ($(AOT_SUPPORTED), 1)
+       @echo "Checking $(TEST_EXE) with AOT (using .msym) in $(OUT_DIR)"
+       $(PREPARE_OUTDIR)
+       $(COMPILE)
+       @MONO_DEBUG=gen-compact-seq-points $(MONO) --aot=msym-dir=$(MSYM_DIR) $(TEST_EXE) > /dev/null
        $(CHECK_DIFF)
 endif