[runtime] Add mkbundle support for dedup
authorAlexander Kyte <alexmkyte@gmail.com>
Mon, 10 Jul 2017 22:12:32 +0000 (18:12 -0400)
committerAlexander Kyte <alexmkyte@gmail.com>
Wed, 30 Aug 2017 16:55:11 +0000 (12:55 -0400)
mcs/build/tests.make
mcs/tools/mkbundle/mkbundle.cs

index 4aed77f34c6efb50edea92f1d509915dd4d33ecb..d571d307d4623670fa8d83c051bce790aba51aa7 100644 (file)
@@ -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
 
index 47ed41c50fab2e13fc1d594c6241c68ef4ff98e8..9802735a5b812a4cf2adaf7d4ef33d8191d8695a 100755 (executable)
@@ -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;
                }
        }