From 9a5b75e2baedd921c7f541d742ba1e4900a73501 Mon Sep 17 00:00:00 2001 From: Alexander Kyte Date: Mon, 10 Jul 2017 18:12:32 -0400 Subject: [PATCH] [runtime] Add mkbundle support for dedup --- mcs/build/tests.make | 17 +++++++++++++++-- mcs/tools/mkbundle/mkbundle.cs | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/mcs/build/tests.make b/mcs/build/tests.make index 4aed77f34c6..d571d307d46 100644 --- a/mcs/build/tests.make +++ b/mcs/build/tests.make @@ -147,6 +147,14 @@ endif ifdef PLATFORM_AOT_SUFFIX +DEDUP_DUMMY_CS=$(topdir)/class/lib/$(PROFILE)/DummyInflated.cs +DEDUP_DUMMY=$(topdir)/class/lib/$(PROFILE)/DummyInflated.dll + +$(DEDUP_DUMMY): + echo " // Empty Assembly \n\n" > $(DEDUP_DUMMY_CS) + $(CSCOMPILE) -t:library -out:$(DEDUP_DUMMY) $(DEDUP_DUMMY_CS) + rm $(DEDUP_DUMMY_CS) + MKBUNDLE_TEST_BIN = $(TEST_HARNESS).static MKBUNDLE_EXE = $(topdir)/class/lib/$(PROFILE)/mkbundle.exe # Pattern based on the one in AOT_PROFILE_ASSEMBLIES @@ -163,8 +171,13 @@ mkbundle-all-tests: $(Q_AOT) $(MAKE) -C $(topdir)/tools/mkbundle $(Q_AOT) $(MAKE) $(MKBUNDLE_TEST_BIN) # recursive make re-computes variables for TEST_ASSEMBLIES -$(MKBUNDLE_TEST_BIN): $(TEST_ASSEMBLIES) $(TEST_HARNESS) $(MKBUNDLE_EXE) - $(Q_AOT) MONO_PATH="$(topdir)/class/lib/$(BUILD_TOOLS_PROFILE)" PKG_CONFIG_PATH="$(topdir)/../data" $(RUNTIME) $(RUNTIME_FLAGS) $(MKBUNDLE_EXE) -L $(topdir)/class/lib/$(PROFILE) -v --deps $(TEST_HARNESS) $(TEST_ASSEMBLIES) -o $(MKBUNDLE_TEST_BIN) --aot-mode $(AOT_MODE) --aot-runtime $(RUNTIME) --aot-args $(AOT_BUILD_ATTRS) --in-tree $(topdir)/.. --cil-strip $(topdir)/class/lib/$(BUILD_TOOLS_PROFILE)/mono-cil-strip.exe --managed-linker $(topdir)/class/lib/$(BUILD_TOOLS_PROFILE)/monolinker.exe --config $(topdir)/../data/config --i18n all +ifdef MKBUNDLE_DEDUP +MKBUNDLE_DEDUP_COND := $(DEDUP_DUMMY) +DEDUP_ARGS=--aot-dedup $(DEDUP_DUMMY) +endif + +$(MKBUNDLE_TEST_BIN): $(TEST_ASSEMBLIES) $(TEST_HARNESS) $(MKBUNDLE_EXE) $(MKBUNDLE_DEDUP_COND) + $(Q_AOT) MONO_PATH="$(topdir)/class/lib/$(BUILD_TOOLS_PROFILE)" PKG_CONFIG_PATH="$(topdir)/../data" $(RUNTIME) $(RUNTIME_FLAGS) $(MKBUNDLE_EXE) -L $(topdir)/class/lib/$(PROFILE) -v --deps $(TEST_HARNESS) $(TEST_ASSEMBLIES) -o $(MKBUNDLE_TEST_BIN) --aot-mode $(AOT_MODE) --aot-runtime $(RUNTIME) --aot-args $(AOT_BUILD_ATTRS) --in-tree $(topdir)/.. --managed-linker $(topdir)/class/lib/$(BUILD_TOOLS_PROFILE)/monolinker.exe --config $(topdir)/../data/config --i18n all $(DEDUP_ARGS) --keeptemp endif # PLATFORM_AOT_SUFFIX diff --git a/mcs/tools/mkbundle/mkbundle.cs b/mcs/tools/mkbundle/mkbundle.cs index 47ed41c50fa..9802735a5b8 100755 --- a/mcs/tools/mkbundle/mkbundle.cs +++ b/mcs/tools/mkbundle/mkbundle.cs @@ -1600,6 +1600,8 @@ void mono_register_config_for_assembly (const char* assembly_name, cons var outName = Path.Combine (temp_dir_name, Path.GetFileName (inName)); File.Copy (inName, outName); files [i] = outName; + if (in_name == aot_dedup_assembly) + aot_dedup_assembly = out_name; } } -- 2.25.1