1PROFILE := v4.6
2SOURCEDIR := ../src/$(PROFILE)/
3
4CSC ?= csc
5CSC_COMMON_ARGS := -nologo -noconfig -optimize -nostdlib -unsafe -deterministic -publicsign -debug- -target:library -nowarn:612 -nowarn:618
6Q_CSC = $(if $(V),,@echo "CSC   [$(PROFILE)] $(1)";)
7
8ASSEMBLIES := Accessibility CustomMarshalers	\
9	Microsoft.Build.Engine Microsoft.Build.Framework Microsoft.Build.Tasks.v4.0	\
10	Microsoft.Build.Utilities.v4.0 Microsoft.Build Microsoft.CSharp Microsoft.VisualBasic Microsoft.VisualC	\
11	System.ComponentModel.Composition	\
12	System.ComponentModel.DataAnnotations System.Configuration.Install System.Configuration System.Core	\
13	System.Data.DataSetExtensions System.Data.Entity System.Data.Linq System.Data.OracleClient	\
14	System.Data.Services.Client System.Data.Services System.Data System.Design System.DirectoryServices.Protocols	\
15	System.DirectoryServices System.Drawing.Design System.Drawing System.Dynamic System.EnterpriseServices	\
16	System.IO.Compression.FileSystem System.IO.Compression System.IdentityModel.Selectors System.IdentityModel	\
17	System.Management System.Messaging	\
18	System.Net.Http.WebRequest System.Net.Http System.Net System.Numerics	\
19	System.Runtime.Caching System.Runtime.DurableInstancing System.Runtime.Remoting	\
20	System.Runtime.Serialization.Formatters.Soap System.Runtime.Serialization System.Security System.ServiceModel.Activation	\
21	System.ServiceModel.Discovery System.ServiceModel.Internals System.ServiceModel.Routing System.ServiceModel.Web	\
22	System.ServiceModel System.ServiceProcess System.Transactions System.Web.Abstractions	\
23	System.Web.ApplicationServices System.Web.DynamicData System.Web.Extensions.Design System.Web.Extensions	\
24	System.Web.Routing System.Web.Services System.Web	\
25	System.Windows.Forms.DataVisualization System.Windows.Forms System.Windows System.Xaml System.Xml.Linq	\
26	System.Xml.Serialization System.Xml System WindowsBase mscorlib	\
27	System.Deployment System.Reflection.Context System.Runtime.InteropServices.RuntimeInformation	\
28	System.Web.Mobile System.Web.RegularExpressions System.Workflow.Activities System.Workflow.ComponentModel System.Workflow.Runtime
29
30ASSEMBLIES += bare/System bare/System.Xml bare/System.Configuration bare/System.ServiceModel.Activation bare/System.Web
31
32FACADE_ASSEMBLIES := Facades/System.Collections.Concurrent Facades/System.Net.Primitives Facades/System.Runtime	\
33	Facades/System.Collections Facades/System.Net.Requests Facades/System.Security.Principal	\
34	Facades/System.ComponentModel.Annotations Facades/System.ObjectModel Facades/System.ServiceModel.Duplex	\
35	Facades/System.ComponentModel.EventBasedAsync Facades/System.Reflection.Emit.ILGeneration Facades/System.ServiceModel.Http	\
36	Facades/System.ComponentModel Facades/System.Reflection.Emit.Lightweight Facades/System.ServiceModel.NetTcp	\
37	Facades/System.Diagnostics.Contracts Facades/System.Reflection.Emit Facades/System.ServiceModel.Primitives	\
38	Facades/System.Diagnostics.Debug Facades/System.Reflection.Extensions Facades/System.ServiceModel.Security	\
39	Facades/System.Diagnostics.Tools Facades/System.Reflection.Primitives Facades/System.Text.Encoding.Extensions	\
40	Facades/System.Diagnostics.Tracing Facades/System.Reflection Facades/System.Text.Encoding	\
41	Facades/System.Dynamic.Runtime Facades/System.Resources.ResourceManager Facades/System.Text.RegularExpressions	\
42	Facades/System.Globalization Facades/System.Runtime.Extensions Facades/System.Threading.Tasks.Parallel	\
43	Facades/System.IO Facades/System.Runtime.InteropServices.WindowsRuntime Facades/System.Threading.Tasks	\
44	Facades/System.Linq.Expressions Facades/System.Runtime.InteropServices Facades/System.Threading.Timer	\
45	Facades/System.Linq.Parallel Facades/System.Runtime.Numerics Facades/System.Threading	\
46	Facades/System.Linq.Queryable Facades/System.Runtime.Serialization.Json Facades/System.Xml.ReaderWriter	\
47	Facades/System.Linq Facades/System.Runtime.Serialization.Primitives Facades/System.Xml.XDocument	\
48	Facades/System.Net.NetworkInformation Facades/System.Runtime.Serialization.Xml Facades/System.Xml.XmlSerializer	\
49	Facades/System.Net.WebHeaderCollection Facades/System.Runtime.Handles
50
51ASSEMBLIES += $(FACADE_ASSEMBLIES)
52
53# generated with (and then slightly tweaked):
54# for i in *.dll; do ikdasm --assemblyref $i | grep Name= | sed 's/.*Name=//g' | sed -e $'s/$/\\\n/g' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' -e "s/^/${i%.*}_REFS := /"; done
55Accessibility_REFS := mscorlib
56CustomMarshalers_REFS := mscorlib
57Microsoft.Build.Engine_REFS := mscorlib System.Xml Microsoft.Build.Framework Microsoft.Build.Utilities.v4.0 System System.Core
58Microsoft.Build.Framework_REFS := mscorlib System
59Microsoft.Build.Tasks.v4.0_REFS := mscorlib Microsoft.Build.Framework Microsoft.Build.Utilities.v4.0 System Microsoft.Build.Engine System.Xml System.Core
60Microsoft.Build.Utilities.v4.0_REFS := mscorlib Microsoft.Build.Framework System System.Xml
61Microsoft.Build_REFS := mscorlib Microsoft.Build.Framework System.Xml System System.Core
62Microsoft.CSharp_REFS := mscorlib System System.Core
63Microsoft.VisualBasic_REFS := mscorlib System System.Windows.Forms System.Drawing
64Microsoft.VisualC_REFS := mscorlib
65System.ComponentModel.Composition_REFS := mscorlib System System.Core
66System.ComponentModel.DataAnnotations_REFS := mscorlib System System.Core
67System.Configuration.Install_REFS := mscorlib System
68System.Configuration_REFS := mscorlib bare/System.Xml System
69System.Core_REFS := mscorlib System
70System.Data.DataSetExtensions_REFS := mscorlib System.Data System System.Core
71System.Data.Entity_REFS := mscorlib System.Core System System.Data System.Runtime.Serialization System.ComponentModel.DataAnnotations System.Xml System.Xml.Linq System.Transactions System.Configuration
72System.Data.Linq_REFS := mscorlib System.Data System.Core System System.Xml System.Runtime.Serialization
73System.Data.OracleClient_REFS := mscorlib System.Data System System.Drawing System.EnterpriseServices System.Transactions
74System.Data.Services.Client_REFS := mscorlib System System.Xml System.Core System.Xml.Linq
75System.Data.Services_REFS := mscorlib System.Configuration System.ServiceModel System.ServiceModel.Web System System.ServiceModel.Activation System.Core System.Data.Services.Client
76System.Data_REFS := mscorlib System.Configuration System.Xml System System.Numerics System.Core System.Transactions System.EnterpriseServices
77System.Deployment_REFS := mscorlib
78System.Design_REFS := mscorlib System.Drawing System.Drawing.Design System System.Windows.Forms System.Data bare/System.Web System.Configuration System.Xml
79System.DirectoryServices.Protocols_REFS := mscorlib System.Xml System System.DirectoryServices
80System.DirectoryServices_REFS := mscorlib System
81System.Drawing.Design_REFS := mscorlib System.Drawing System.Windows.Forms System
82System.Drawing_REFS := mscorlib System
83System.Dynamic_REFS := mscorlib System.Core System
84System.EnterpriseServices_REFS := mscorlib System.Transactions
85System.IO.Compression.FileSystem_REFS := mscorlib System.IO.Compression System
86System.IO.Compression_REFS := mscorlib System
87System.IdentityModel.Selectors_REFS := mscorlib System.Xml System System.IdentityModel
88System.IdentityModel_REFS := mscorlib System.Configuration System.Runtime.Serialization System.Security System System.Xml System.Web.ApplicationServices
89System.Management_REFS := mscorlib System System.Configuration.Install
90System.Messaging_REFS := mscorlib System System.Drawing System.Configuration.Install System.Xml System.Windows.Forms
91System.Net.Http.WebRequest_REFS := mscorlib System.Net.Http System
92System.Net.Http_REFS := mscorlib System System.Core
93System.Net_REFS := mscorlib System
94System.Numerics_REFS := mscorlib
95System.Reflection.Context_REFS := mscorlib
96System.Reflection.Metadata_REFS := System.Runtime System.Resources.ResourceManager System.Collections.Immutable System.Reflection.Primitives System.Diagnostics.Debug System.Collections System.IO System.IO.Compression System.Text.Encoding System.Runtime.InteropServices System.Linq System.Reflection System.Threading System.Runtime.Extensions System.Text.Encoding.Extensions System.Reflection.Extensions
97System.Runtime.Caching_REFS := mscorlib System System.Data System.Configuration
98System.Runtime.DurableInstancing_REFS := mscorlib System.Xml.Linq System.ServiceModel.Internals System.Transactions System.Core System.Runtime.Serialization System
99System.Runtime.InteropServices.RuntimeInformation_REFS := mscorlib
100System.Runtime.Remoting_REFS := mscorlib System System.Web System.Xml System.Runtime.Serialization.Formatters.Soap
101System.Runtime.Serialization.Formatters.Soap_REFS := mscorlib System.Xml
102System.Runtime.Serialization_REFS := mscorlib System.Xml System.ServiceModel.Internals System System.Configuration System.Core
103System.Security_REFS := mscorlib System System.Xml
104System.ServiceModel.Activation_REFS := mscorlib System.ServiceModel System System.Web
105System.ServiceModel.Discovery_REFS := mscorlib System.ServiceModel System System.Xml System.Xml.Linq System.Runtime.Serialization System.Configuration System.Core
106System.ServiceModel.Internals_REFS := mscorlib System System.Xml
107System.ServiceModel.Routing_REFS := mscorlib System.ServiceModel System.Configuration System System.Runtime.Serialization
108System.ServiceModel.Web_REFS := mscorlib System.ServiceModel System System.Runtime.Serialization System.Xml System.Xml.Linq System.Configuration System.ServiceModel.Activation System.Core System.Web.Extensions
109System.ServiceModel_REFS := mscorlib System.Xml System.Xml.Linq System.Xaml System System.EnterpriseServices System.Transactions System.IdentityModel System.Runtime.Serialization System.Runtime.DurableInstancing System.Security System.Web.ApplicationServices System.Messaging System.Net.Http System.IdentityModel.Selectors System.Web.Services System.Configuration System.Web System.Core bare/System.ServiceModel.Activation
110System.ServiceProcess_REFS := mscorlib System System.Configuration.Install System.Windows.Forms
111System.Transactions_REFS := mscorlib System.Configuration
112System.Web.Abstractions_REFS := mscorlib System.Web
113System.Web.ApplicationServices_REFS := mscorlib System System.Configuration
114System.Web.DynamicData_REFS := mscorlib System System.Drawing System.Web System.Web.Extensions System.Core System.ComponentModel.DataAnnotations System.Data.Linq
115System.Web.Extensions.Design_REFS := mscorlib System System.Design System.Drawing System.Web.Extensions
116System.Web.Extensions_REFS := mscorlib System.Web System System.Xml System.Drawing System.Data.Linq System.Web.Services System.ServiceModel System.ServiceModel.Activation System.Runtime.Serialization System.Web.ApplicationServices System.Core System.Configuration
117System.Web.Mobile_REFS := mscorlib
118System.Web.RegularExpressions_REFS := mscorlib System
119System.Web.Routing_REFS := mscorlib System.Web
120System.Web.Services_REFS := mscorlib System System.Configuration System.EnterpriseServices System.Xml bare/System.Web System.DirectoryServices System.Design System.Data
121System.Web_REFS := mscorlib System.Configuration System.Xml System System.Data System.Drawing System.Runtime.Serialization.Formatters.Soap System.Core System.EnterpriseServices System.Web.ApplicationServices System.ComponentModel.DataAnnotations System.Web.Services
122System.Windows.Forms.DataVisualization_REFS := mscorlib System.Drawing System.Windows.Forms System System.Xml System.Data System.Core
123System.Windows.Forms_REFS := mscorlib System System.Xml System.Drawing System.Runtime.Serialization.Formatters.Soap Accessibility System.Configuration System.Data
124System.Windows_REFS := mscorlib System
125System.Workflow.Activities_REFS := mscorlib
126System.Workflow.ComponentModel_REFS := mscorlib
127System.Workflow.Runtime_REFS := mscorlib
128System.Xaml_REFS := mscorlib System System.Xml System.Core
129System.Xml.Linq_REFS := mscorlib System System.Runtime.Serialization System.Xml System.Core
130System.Xml.Serialization_REFS := mscorlib System.ServiceModel System.Xml
131System.Xml_REFS := mscorlib System System.Configuration
132System_REFS := mscorlib bare/System.Configuration bare/System.Xml
133WindowsBase_REFS := mscorlib System.Xaml System System.Xml System.Security
134mscorlib_REFS :=
135
136bare/System_REFS := mscorlib
137bare/System.Xml_REFS := mscorlib bare/System
138bare/System.Configuration_REFS := mscorlib bare/System bare/System.Xml
139bare/System.ServiceModel.Activation_REFS := mscorlib System
140bare/System.Web_REFS := mscorlib System.Drawing System System.Xml System.Core System.Configuration System.Data System.Web.ApplicationServices System.ComponentModel.DataAnnotations System.EnterpriseServices
141
142Facades/System.Collections.Concurrent_REFS := mscorlib System
143Facades/System.Collections_REFS := mscorlib System.Core System
144Facades/System.ComponentModel.Annotations_REFS := mscorlib System.ComponentModel.DataAnnotations
145Facades/System.ComponentModel.EventBasedAsync_REFS := mscorlib System
146Facades/System.ComponentModel_REFS := mscorlib System
147Facades/System.Diagnostics.Contracts_REFS := mscorlib
148Facades/System.Diagnostics.Debug_REFS := mscorlib System
149Facades/System.Diagnostics.Tools_REFS := mscorlib System
150Facades/System.Diagnostics.Tracing_REFS := mscorlib
151Facades/System.Dynamic.Runtime_REFS := mscorlib System.Core
152Facades/System.Globalization_REFS := mscorlib
153Facades/System.IO_REFS := mscorlib System
154Facades/System.Linq.Expressions_REFS := mscorlib System.Core
155Facades/System.Linq.Parallel_REFS := mscorlib System.Core
156Facades/System.Linq.Queryable_REFS := mscorlib System.Core
157Facades/System.Linq_REFS := mscorlib System.Core
158Facades/System.Net.NetworkInformation_REFS := mscorlib System
159Facades/System.Net.Primitives_REFS := mscorlib System
160Facades/System.Net.Requests_REFS := mscorlib System
161Facades/System.Net.WebHeaderCollection_REFS := mscorlib System
162Facades/System.ObjectModel_REFS := mscorlib System
163Facades/System.Reflection.Emit.ILGeneration_REFS := mscorlib
164Facades/System.Reflection.Emit.Lightweight_REFS := mscorlib
165Facades/System.Reflection.Emit_REFS := mscorlib
166Facades/System.Reflection.Extensions_REFS := mscorlib
167Facades/System.Reflection.Primitives_REFS := mscorlib
168Facades/System.Reflection_REFS := mscorlib
169Facades/System.Resources.ResourceManager_REFS := mscorlib
170Facades/System.Runtime.Extensions_REFS := mscorlib System
171Facades/System.Runtime.Handles_REFS := mscorlib System.Core
172Facades/System.Runtime.InteropServices.WindowsRuntime_REFS := mscorlib
173Facades/System.Runtime.InteropServices_REFS := mscorlib System.Core System
174Facades/System.Runtime.Numerics_REFS := mscorlib System.Numerics
175Facades/System.Runtime.Serialization.Json_REFS := mscorlib System.Runtime.Serialization
176Facades/System.Runtime.Serialization.Primitives_REFS := mscorlib System.Runtime.Serialization
177Facades/System.Runtime.Serialization.Xml_REFS := mscorlib System.Runtime.Serialization System Facades/System.Runtime.Serialization.Primitives
178Facades/System.Runtime_REFS := mscorlib System.Core System System.ComponentModel.Composition
179Facades/System.Security.Principal_REFS := mscorlib
180Facades/System.ServiceModel.Duplex_REFS := mscorlib System.ServiceModel
181Facades/System.ServiceModel.Http_REFS := mscorlib System.ServiceModel
182Facades/System.ServiceModel.NetTcp_REFS := mscorlib System.ServiceModel
183Facades/System.ServiceModel.Primitives_REFS := mscorlib System.IdentityModel System.ServiceModel
184Facades/System.ServiceModel.Security_REFS := mscorlib System.ServiceModel
185Facades/System.Text.Encoding.Extensions_REFS := mscorlib
186Facades/System.Text.Encoding_REFS := mscorlib
187Facades/System.Text.RegularExpressions_REFS := mscorlib System
188Facades/System.Threading.Tasks.Parallel_REFS := mscorlib
189Facades/System.Threading.Tasks_REFS := mscorlib System.Core
190Facades/System.Threading.Timer_REFS := mscorlib
191Facades/System.Threading_REFS := mscorlib System System.Core
192Facades/System.Xml.ReaderWriter_REFS := mscorlib System.Xml
193Facades/System.Xml.XDocument_REFS := mscorlib System.Xml.Linq
194Facades/System.Xml.XmlSerializer_REFS := mscorlib System.Xml
195
196mscorlib_CSC_ARGS := -runtimemetadataversion:v4.0.30319
197System_CSC_ARGS := -d:CONFIG_DEP -d:XML_DEP
198System.Configuration_CSC_ARGS := -d:CONFIG_DEP
199System.Xml_CSC_ARGS := -d:CONFIG_DEP
200System.ServiceModel.Activation_CSC_ARGS := -d:SERVICEMODEL_DEP -d:WEB_DEP
201System.Web_CSC_ARGS := -d:SERVICES_DEP
202
203ECMA_KEY := ../../../mcs/class/ecma.pub         # Public Key Token: b77a5c561934e089
204WINFX_KEY := ../../../mcs/class/winfx.pub       # Public Key Token: 31bf3856ad364e35
205MSFINAL_KEY := ../../../mcs/class/msfinal.pub   # Public Key Token: b03f5f7f11d50a3a
206
207ECMA_KEY_ASSEMBLIES := System.ComponentModel.Composition System.Core System.Data.DataSetExtensions	\
208	System.Data.Entity System.Data.Linq System.Data.OracleClient System.Data.Services.Client System.Data.Services	\
209	System.Data System.IO.Compression.FileSystem System.IO.Compression System.IdentityModel.Selectors System.IdentityModel	\
210	System.Numerics System.Reflection.Context System.Runtime.Remoting System.Runtime.Serialization System.ServiceModel.Internals	\
211	System.ServiceModel System.Transactions System.Windows.Forms System.Xaml	\
212	System.Xml.Linq System.Xml.Serialization System.Xml System mscorlib bare/System bare/System.Xml
213
214WINFX_KEY_ASSEMBLIES := System.ComponentModel.DataAnnotations	\
215	System.Runtime.DurableInstancing System.ServiceModel.Activation System.ServiceModel.Discovery System.ServiceModel.Routing	\
216	System.ServiceModel.Web System.Web.Abstractions System.Web.ApplicationServices System.Web.DynamicData	\
217	System.Web.Extensions.Design System.Web.Extensions	\
218	System.Web.Routing	\
219	System.Windows.Forms.DataVisualization System.Workflow.Activities System.Workflow.ComponentModel System.Workflow.Runtime	\
220	WindowsBase bare/System.ServiceModel.Activation
221
222MSFINAL_KEY_ASSEMBLIES := Accessibility CustomMarshalers Microsoft.Build.Engine Microsoft.Build.Framework	\
223	Microsoft.Build.Tasks.v4.0 Microsoft.Build.Utilities.v4.0 Microsoft.Build Microsoft.CSharp Microsoft.VisualBasic Microsoft.VisualC	\
224	System.Configuration.Install System.Configuration System.Deployment System.Design System.DirectoryServices.Protocols	\
225	System.DirectoryServices System.Drawing.Design System.Drawing System.Dynamic System.EnterpriseServices System.Management	\
226	System.Messaging System.Net.Http.WebRequest System.Net.Http System.Net System.Runtime.Caching	\
227	System.Runtime.InteropServices.RuntimeInformation System.Runtime.Serialization.Formatters.Soap System.Security System.ServiceProcess System.Web.Services	\
228	System.Web System.Web.Mobile System.Web.RegularExpressions System.Windows bare/System.Configuration bare/System.Web
229
230all: $(addsuffix .dll, $(ASSEMBLIES))
231
232clean:
233	rm -f *.dll
234	rm -f bare/*.dll
235	rm -f Facades/*.dll
236
237define KEYFILE_TEMPLATE
238$(1)_KEYFILE := $(2)
239endef
240
241define ASSEMBLY_TEMPLATE
242$(1).dll: $(addprefix $(SOURCEDIR),$(subst bare/,,$(1)).cs) $(wildcard $(SOURCEDIR)$(1).extra.cs) $(addsuffix .dll, $($(1)_REFS)) $($(1)_KEYFILE)
243	@mkdir -p bare/
244	@mkdir -p Facades/
245	$(Q_CSC) $(CSC) -out:$(1).dll $(CSC_COMMON_ARGS) -keyfile:$($(1)_KEYFILE) $($(1)_CSC_ARGS) $(addprefix -r:, $(addsuffix .dll, $($(1)_REFS))) $(wildcard $(SOURCEDIR)$(1).extra.cs) $$<
246endef
247
248$(foreach asm, $(ECMA_KEY_ASSEMBLIES),    $(eval $(call KEYFILE_TEMPLATE,$(asm), $(ECMA_KEY))))
249$(foreach asm, $(WINFX_KEY_ASSEMBLIES),   $(eval $(call KEYFILE_TEMPLATE,$(asm), $(WINFX_KEY))))
250$(foreach asm, $(MSFINAL_KEY_ASSEMBLIES), $(eval $(call KEYFILE_TEMPLATE,$(asm), $(MSFINAL_KEY))))
251$(foreach asm, $(FACADE_ASSEMBLIES),      $(eval $(call KEYFILE_TEMPLATE,$(asm), $(MSFINAL_KEY))))
252
253$(foreach asm, $(ASSEMBLIES), $(eval $(call ASSEMBLY_TEMPLATE,$(asm))))
254