Bladeren bron

Add monolinker binary assets tests

Marek Safar 7 jaren geleden
bovenliggende
commit
dcbe42a59c
3 gewijzigde bestanden met toevoegingen van 29 en 10 verwijderingen
  1. 3 0
      .gitmodules
  2. 1 0
      external/illinker-test-assets
  3. 25 10
      mcs/tools/linker/Makefile

+ 3 - 0
.gitmodules

@@ -65,3 +65,6 @@
 [submodule "external/helix-binaries"]
 	path = external/helix-binaries
 	url = git://github.com/mono/helix-binaries.git
+[submodule "external/illinker-test-assets"]
+	path = external/illinker-test-assets
+	url = git://github.com/mono/illinker-test-assets.git

+ 1 - 0
external/illinker-test-assets

@@ -0,0 +1 @@
+Subproject commit f21ff68f3c1447bf058e98d07a596a16e89c44aa

+ 25 - 10
mcs/tools/linker/Makefile

@@ -39,8 +39,6 @@ TEST_CASES += \
 	mscorlib/test-reflection.cs
 endif
 
-SIZE_TEST_CASES :=
-
 TESTS_COMPILER = $(MCS) -nologo -noconfig -unsafe -debug:portable -r:$(topdir)/class/lib/$(PROFILE_DIRECTORY)/mscorlib.dll
 
 MARSHALING_TEST_NATIVE = mscorlib/test-marshaling-native.so
@@ -48,7 +46,7 @@ MARSHALING_TEST_NATIVE = mscorlib/test-marshaling-native.so
 check: compile-tests
 	$(MAKE) run-tests
 
-compile-tests: $(TEST_CASES) $(SIZE_TEST_CASES)
+compile-tests: $(TEST_CASES)
 
 mscorlib/test-%.cs:
 	$(TESTS_COMPILER) Tests/$@ /out:Tests/$(@:.cs=.exe)
@@ -72,13 +70,28 @@ run-tests: $(TEST_CASES:.cs=.exe)
 
 LINKER_PROFILE_OPTIONS :=
 
-# Should be in sync with runtime sdk flags
+BINARY_TEST_CASES =
+
+ifeq ($(PROFILE),net_4_x)
+BINARY_TEST_CASES_ROOT:=../../../external/illinker-test-assets/net_4_x/
+
+BINARY_TEST_CASES = \
+	$(BINARY_TEST_CASES_ROOT)Newtonsoft.Json.Test/bin/Release/Newtonsoft.Json.Test.exe
+endif
+
 ifeq ($(PROFILE),monotouch)
+
+# Should be in sync with runtime sdk flags
 LINKER_PROFILE_OPTIONS += --exclude-feature remoting --exclude-feature com --exclude-feature etw
+
+BINARY_TEST_CASES_ROOT:=../../../external/illinker-test-assets/monotouch/
+
+BINARY_TEST_CASES = \
+	$(BINARY_TEST_CASES_ROOT)Newtonsoft.Json.Test/bin/iPhoneSimulator/Release/Newtonsoft.Json.Test.exe
 endif
 
 ifeq ($(PROFILE),wasm)
-LINKER_PROFILE_OPTIONS += --exclude-feature remoting --exclude-feature com --exclude-feature etw --exclude-feature sre
+LINKER_PROFILE_OPTIONS += --exclude-feature remoting --exclude-feature com --exclude-feature etw
 endif
 
 LINKER_OUTPUT := illink-output-$(PROFILE_DIRECTORY)
@@ -115,24 +128,26 @@ mscorlib/test-marshaling.exe: $(MARSHALING_TEST_NATIVE)
 	@rm -rf $(LINKER_OUTPUT)
 
 BCL_ASSEMBLIES_CORE=mscorlib.dll System.dll System.Core.dll System.Xml.dll
-BCL_ASSEMBLIES=$(BCL_ASSEMBLIES_CORE) $(sort $(filter-out $(BCL_ASSEMBLIES_CORE), $(notdir $(wildcard $(PROFILE_PATH)/System.*.dll)) ))
+BCL_ASSEMBLIES=$(BCL_ASSEMBLIES_CORE) $(sort $(filter-out $(BCL_ASSEMBLIES_CORE), $(notdir $(wildcard $(PROFILE_PATH)/System.*.dll $(PROFILE_PATH)/Microsoft.*.dll $(PROFILE_PATH)/I18*.dll )) ))
 
 COMMA=,
 REPORT_FILE=$(PROFILE)-linked-size.csv
 
 bcl-size-current: compile-tests
 	@echo "App,$$(echo '$(BCL_ASSEMBLIES)' | tr ' ' ',')" > $(REPORT_FILE)
-	@for app in $(sort $(SIZE_TEST_CASES:.cs=.exe) $(TEST_CASES:.cs=.exe)); do \
+	@for app in $(sort $(BINARY_TEST_CASES) $(patsubst %.cs,Tests/%.exe,$(TEST_CASES))); do \
 		rm -rf $(LINKER_OUTPUT); \
 		mkdir $(LINKER_OUTPUT); \
-		echo Checking linked BCL size for $$app; \
-		$(LINKER_DEFAULT) -a Tests/$$app; \
+		app_name=$${app#$(BINARY_TEST_CASES_ROOT)}; \
+		app_name=$${app_name#Tests/}; \
+		echo Checking linked BCL size for $$app_name; \
+		$(LINKER_DEFAULT) -a $$app; \
 		sizes=""; \
 		for asm in $(BCL_ASSEMBLIES); do \
 			if [ -f "$(LINKER_OUTPUT)/$$asm" ]; then size=$$(wc -c < "$(LINKER_OUTPUT)/$$asm" | tr -d "[:space:]"); else size="0"; fi; \
 			sizes="$$sizes,$$size"; \
 		done; \
-		echo "$$app$$sizes" >> $(REPORT_FILE); \
+		echo "$$app_name$$sizes" >> $(REPORT_FILE); \
 		rm -rf $(LINKER_OUTPUT); \
 	done;