3 include ..
/..
/build
/rules.make
5 PROGRAM
= monolinker.exe
7 LIB_REFS
= System System.Core System.Xml Mono.Cecil
8 LOCAL_MCS_FLAGS
= -unsafe
11 mscorlib
/test-array.cs \
12 mscorlib
/test-calendar-01.cs \
13 mscorlib
/test-calendar-02.cs \
14 mscorlib
/test-exception-01.cs \
15 mscorlib
/test-locale-01.cs \
16 mscorlib
/test-methodimpl-01.cs \
17 mscorlib
/test-reflection-01.cs \
18 mscorlib
/test-reflection-02.cs \
19 mscorlib
/test-reflection-03.cs \
20 mscorlib
/test-reflection-04.cs \
21 mscorlib
/test-string-01.cs \
22 mscorlib
/test-string-02.cs \
23 mscorlib
/test-string-03.cs \
24 mscorlib
/test-task-01.cs \
25 System
/test-security.cs \
26 System.Core
/test-plinq-01.cs
28 ifdef INCLUDE_DISABLED
30 System.Runtime.Serialization
/test-dcs-01.cs \
31 mscorlib
/test-marshaling.cs
36 mscorlib
/test-crypto-01.cs \
37 System.Net.Http
/test-handler-01.cs
40 ifndef AOT_FRIENDLY_PROFILE
42 mscorlib
/test-remoting.cs \
43 mscorlib
/test-reflection.cs \
44 System.Core
/test-queryable-01.cs \
45 System.Core
/test-queryable-02.cs
48 TESTS_COMPILER
= $(MCS
) -nologo
-noconfig
-unsafe
-nostdlib
-debug
:portable
-r
:$(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/mscorlib.dll
50 MARSHALING_TEST_NATIVE
= mscorlib
/test-marshaling-native.so
55 compile-tests
: $(TEST_CASES
)
58 $(TESTS_COMPILER
) Tests
/$@
/out
:Tests
/$(@
:.cs
=.exe
)
60 $(MARSHALING_TEST_NATIVE
): $(@
:.so
=.c
)
61 $(CCOMPILE
) Tests
/$(@
:.so
=.c
) -shared
-o Tests
/$@
63 mscorlib
/test-marshaling.cs
: $(MARSHALING_TEST_NATIVE
)
64 $(TESTS_COMPILER
) Tests
/$@
/out
:Tests
/$(@
:.cs
=.exe
)
67 $(TESTS_COMPILER
) -r
:$(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/System.dll Tests
/$@
/out
:Tests
/$(@
:.cs
=.exe
)
69 System.Core
/test-
%.cs
:
70 $(TESTS_COMPILER
) -r
:$(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/System.Core.dll Tests
/$@
/out
:Tests
/$(@
:.cs
=.exe
)
72 System.Runtime.Serialization
/test-
%.cs
:
73 $(TESTS_COMPILER
) -r
:$(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/System.Runtime.Serialization.dll
-r
:$(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/System.Xml.dll Tests
/$@
/out
:Tests
/$(@
:.cs
=.exe
)
75 System.Net.Http
/test-
%.cs
:
76 $(TESTS_COMPILER
) -r
:$(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/System.dll
-r
:$(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/System.Net.Http.dll Tests
/$@
/out
:Tests
/$(@
:.cs
=.exe
)
78 run-tests
: $(TEST_CASES
:.cs
=.exe
)
80 LINKER_PROFILE_OPTIONS
:=
84 ifeq ($(PROFILE
),net_4_x
)
85 BINARY_TEST_CASES_ROOT
:=..
/..
/..
/external
/illinker-test-assets
/net_4_x
/
88 $(BINARY_TEST_CASES_ROOT
)Newtonsoft.Json.Test
/bin
/Release
/Newtonsoft.Json.Test.exe
91 ifeq ($(PROFILE
),monotouch
)
93 # Should be in sync with runtime sdk flags
94 LINKER_PROFILE_OPTIONS
+= --exclude-feature remoting
--exclude-feature com
--exclude-feature etw
96 # System.Net.Http needs Xamarin.iOS.dll
97 LINKER_PROFILE_OPTIONS
+= -d ..
/..
/..
/external
/binary-reference-assemblies
/build
/monotouch
99 BINARY_TEST_CASES_ROOT
:=..
/..
/..
/external
/illinker-test-assets
/monotouch
/
101 BINARY_TEST_CASES
= \
102 $(BINARY_TEST_CASES_ROOT
)Newtonsoft.Json.Test
/bin
/iPhoneSimulator
/Release
/Newtonsoft.Json.Test.exe
105 ifeq ($(PROFILE
),wasm
)
106 LINKER_PROFILE_OPTIONS
+= --exclude-feature remoting
--exclude-feature com
--exclude-feature etw
108 BINARY_TEST_CASES_ROOT
:=..
/..
/..
/external
/illinker-test-assets
/wasm
/
110 BINARY_TEST_CASES
= \
111 $(BINARY_TEST_CASES_ROOT
)Newtonsoft
/bin
/Release
/netstandard2.0
/dist/_framework
/_bin
/Newtonsoft.dll \
112 $(BINARY_TEST_CASES_ROOT
)HelloWorld
/bin
/Release
/netstandard2.0
/dist/_framework
/_bin
/HelloWorld.dll \
113 $(BINARY_TEST_CASES_ROOT
)Microsoft.AspNetCore.Blazor.E2EPerformance
/bin
/Release
/netstandard2.0
/Microsoft.AspNetCore.Blazor.E2EPerformance.dll \
114 $(BINARY_TEST_CASES_ROOT
)BlazingPizza.Client
/bin
/Release
/netstandard2.0
/BlazingPizza.Client.dll
117 LINKER_OUTPUT
:= illink-output-
$(PROFILE_DIRECTORY
)
118 PROFILE_PATH
= $(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)
119 LINKER
= MONO_PATH
=$(topdir
)/class
/lib
/$(BUILD_TOOLS_PROFILE
) $(RUNTIME
) $(RUNTIME_FLAGS
) $(topdir
)/class
/lib
/$(BUILD_TOOLS_PROFILE
)/monolinker.exe
-c link
-out
$(LINKER_OUTPUT
) -b true
-d
$(PROFILE_PATH
)
120 LINKER_DEFAULT
= $(LINKER
) -l none
$(LINKER_PROFILE_OPTIONS
)
121 TEST_EXEC
= MONO_PATH
=$(LINKER_OUTPUT
) $(RUNTIME
) $(RUNTIME_FLAGS
) --debug
-O
=-aot
125 System.Net.Http
/test-
%.exe System.Runtime.Serialization
/test-
%.exe System.Core
/test-
%.exe System
/test-
%.exe mscorlib
/test-
%.exe
:
126 @
rm -rf
$(LINKER_OUTPUT
)
127 @mkdir
$(LINKER_OUTPUT
)
129 $(LINKER_DEFAULT
) -a Tests
/$@
130 $(TEST_EXEC
) $(LINKER_OUTPUT
)/$(@F
)
131 @
rm -rf
$(LINKER_OUTPUT
)
133 mscorlib
/test-calendar-01.exe
:
134 @
rm -rf
$(LINKER_OUTPUT
)
135 @mkdir
$(LINKER_OUTPUT
)
137 $(LINKER
) -l mideast
$(LINKER_PROFILE_OPTIONS
) -a Tests
/$@
138 $(TEST_EXEC
) $(LINKER_OUTPUT
)/$(@F
)
139 @
rm -rf
$(LINKER_OUTPUT
)
141 mscorlib
/test-marshaling.exe
: $(MARSHALING_TEST_NATIVE
)
142 @
rm -rf
$(LINKER_OUTPUT
)
143 @mkdir
$(LINKER_OUTPUT
)
145 $(LINKER_DEFAULT
) -a Tests
/$@
146 cp Tests
/$(MARSHALING_TEST_NATIVE
) $(LINKER_OUTPUT
)
147 (cd
$(LINKER_OUTPUT
); MONO_PATH
=.
$(RUNTIME
) $(RUNTIME_FLAGS
) --debug
-O
=-aot .
/$(@F
))
148 @
rm -rf
$(LINKER_OUTPUT
)
150 BCL_ASSEMBLIES_CORE
=mscorlib.dll System.dll System.Core.dll System.Xml.dll
151 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
)) ))
154 REPORT_FILE
=$(PROFILE
)-linked-size.csv
156 bcl-size-current
: compile-tests
157 @echo
"App,$$(echo '$(BCL_ASSEMBLIES)' | tr ' ' ',')" > $(REPORT_FILE
)
158 @for app in
$(sort $(BINARY_TEST_CASES
) $(patsubst %.cs
,Tests
/%.exe
,$(TEST_CASES
))); do \
159 rm -rf
$(LINKER_OUTPUT
); \
160 mkdir
$(LINKER_OUTPUT
); \
161 app_name
=$${app
#$(BINARY_TEST_CASES_ROOT)}; \
162 app_name
=$${app_name
#Tests/}; \
163 echo Checking linked BCL size in
$(PROFILE
) profile for
$$app_name; \
164 $(LINKER_DEFAULT
) -a
$$app; \
166 for asm in
$(BCL_ASSEMBLIES
); do \
167 if
[ -f
"$(LINKER_OUTPUT)/$$asm" ]; then size
=$$(wc
-c
< "$(LINKER_OUTPUT)/$$asm" | tr
-d
"[:space:]"); else size
="0"; fi
; \
168 sizes
="$$sizes,$$size"; \
170 echo
"$$app_name$$sizes" >> $(REPORT_FILE
); \
171 rm -rf
$(LINKER_OUTPUT
); \
175 @echo
"Regenerating BCL Linked Size diff..."
176 $(Q
) $(MAKE
) bcl-size-current PROFILE
=net_4_x || true
177 $(Q
) $(MAKE
) bcl-size-current PROFILE
=monotouch || true
178 $(Q
) $(MAKE
) bcl-size-current PROFILE
=monodroid || true
179 $(Q
) $(MAKE
) bcl-size-current PROFILE
=wasm || true
180 @echo
"Checking size differences..."
182 $(Q
) git diff HEAD
"*.csv" > temp.patch
183 $(Q
) git show HEAD
:.
/net_4_x-linked-size.csv
> net_4_x-linked-size.old.csv
184 $(Q
) git show HEAD
:.
/monotouch-linked-size.csv
> monotouch-linked-size.old.csv
185 $(Q
) git show HEAD
:.
/monodroid-linked-size.csv
> monodroid-linked-size.old.csv
186 $(Q
) git show HEAD
:.
/wasm-linked-size.csv
> wasm-linked-size.old.csv
187 $(Q
) sed
-e
"/@diffdata@/r temp.patch" -e
"/@diffdata@/d" -e
"/@olddata-net_4_x@/r net_4_x-linked-size.old.csv" -e
"/@olddata-net_4_x@/d" -e
"/@olddata-monotouch@/r monotouch-linked-size.old.csv" -e
"/@olddata-monotouch@/d" -e
"/@olddata-monodroid@/r monodroid-linked-size.old.csv" -e
"/@olddata-monodroid@/d" -e
"/@olddata-wasm@/r wasm-linked-size.old.csv" -e
"/@olddata-wasm@/d" -e
"/@newdata-net_4_x@/r net_4_x-linked-size.csv" -e
"/@newdata-net_4_x@/d" -e
"/@newdata-monotouch@/r monotouch-linked-size.csv" -e
"/@newdata-monotouch@/d" -e
"/@newdata-monodroid@/r monodroid-linked-size.csv" -e
"/@newdata-monodroid@/d" -e
"/@newdata-wasm@/r wasm-linked-size.csv" -e
"/@newdata-wasm@/d" linked-size-diff.html.in
> sizediff
/index.html
188 $(Q
) if
[ -s temp.patch
]; then echo
"Error: Found BCL Linked Size differences, see mcs/tools/linker/sizediff/index.html."; rm -f temp.patch
*.old.csv
; exit
1; else echo
"No differences found."; rm -f temp.patch
*.old.csv
; fi
190 include ..
/..
/build
/executable.make