[LoongArch64] Part-5:add loongarch support in some files for LoongArch64. (#21769)
[mono-project.git] / mcs / class / corlib / Makefile
blob691579d8d2d0eab16e7fcd45094fe54bcb0c457c
1 thisdir = class/corlib
2 SUBDIRS =
3 include ../../build/rules.make
4 export __SECURITY_BOOTSTRAP_DB=$(topdir)/class/corlib
6 LIBRARY = corlib.dll
7 LIBRARY_NAME = mscorlib.dll
9 LIB_MCS_FLAGS = $(REFERENCE_SOURCES_FLAGS) $(RESOURCE_FILES:%=-resource:%) $(UNICODECHARINFO:%=-resource:%)
11 USE_XTEST_REMOTE_EXECUTOR = YES
12 LIBRARY_WARN_AS_ERROR = yes
13 #LIBRARY_USE_INTERMEDIATE_FILE = yes
15 ifeq (2, $(FRAMEWORK_VERSION_MAJOR))
16 LIB_MCS_FLAGS += -runtimemetadataversion:v4.0.30319
17 else
18 ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
19 LIB_MCS_FLAGS += -runtimemetadataversion:v4.0.30319
20 else
21 $(error Unknown framework version)
22 endif
23 endif
25 ifeq ($(PROFILE),build)
26 CSC_RUNTIME_FLAGS=--profile=aot:output=$(topdir)/class/lib/$(PROFILE_DIRECTORY)/csc.$(LIBRARY).aotprofile
27 endif
29 RESX_EXTRA_ARGUMENTS = \
30 --in=ReferenceSources/SR.cs \
31 --in=ReferenceSources/SR2.cs \
32 --in=corefx/SR.missing.cs
34 RESX_RESOURCE_STRING = \
35 ../../../external/corefx/src/System.Collections/src/Resources/Strings.resx \
36 ../../../external/corefx/src/System.Collections.Concurrent/src/Resources/Strings.resx \
37 ../../../external/corefx/src/System.Collections.NonGeneric/src/Resources/Strings.resx \
38 ../../../external/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx \
39 ../../../external/corefx/src/System.Buffers/src/Resources/Strings.resx \
40 ../../../external/corefx/src/System.IO.FileSystem/src/Resources/Strings.resx \
41 ../../../external/corefx/src/System.IO.FileSystem.Watcher/src/Resources/Strings.resx \
42 ../../../external/corefx/src/System.IO.Ports/src/Resources/Strings.resx \
43 ../../../external/corefx/src/System.Memory/src/Resources/Strings.resx \
44 ../../../external/corefx/src/System.Net.HttpListener/src/Resources/Strings.resx \
45 ../../../external/corefx/src/System.Net.Requests/src/Resources/Strings.resx \
46 ../../../external/corefx/src/System.Net.Sockets/src/Resources/Strings.resx \
47 ../../../external/corefx/src/System.Net.Http/src/Resources/Strings.resx \
48 ../../../external/corefx/src/System.Numerics.Vectors/src/Resources/Strings.resx \
49 ../../../external/corefx/src/System.Reflection.TypeExtensions/src/Resources/Strings.resx \
50 ../../../external/corefx/src/System.Runtime.Extensions/src/Resources/Strings.resx \
51 ../../../external/corefx/src/System.Runtime.InteropServices.RuntimeInformation/src/Resources/Strings.resx \
52 ../../../external/corefx/src/System.Runtime.Numerics/src/Resources/Strings.resx \
53 ../../../external/corefx/src/System.Security.Cryptography.Encoding/src/Resources/Strings.resx \
54 ../../../external/corefx/src/System.Security.Cryptography.Pkcs/src/Resources/Strings.resx \
55 ../../../external/corefx/src/System.Security.Cryptography.Primitives/src/Resources/Strings.resx \
56 ../../../external/corefx/src/System.Security.Cryptography.ProtectedData/src/Resources/Strings.resx \
57 ../../../external/corefx/src/System.Security.Cryptography.Xml/src/Resources/Strings.resx \
58 ../../../external/corefx/src/System.Security.Cryptography.X509Certificates/src/Resources/Strings.resx \
59 ../../../external/corefx/src/System.Text.RegularExpressions/src/Resources/Strings.resx \
60 ../../../external/corefx/src/System.Threading.Tasks.Parallel/src/Resources/Strings.resx \
61 ../../../external/corefx/src/System.ObjectModel/src/Resources/Strings.resx \
62 ../../../external/corert/src/System.Private.CoreLib/src/Resources/Strings.resx \
63 ../../../external/corefx/src/System.Private.Uri/src/Resources/Strings.resx \
64 ../../../external/corefx/src/Microsoft.Win32.Registry/src/Resources/Strings.resx \
65 ../../../external/corefx/src/System.Security.Cryptography.Algorithms/src/Resources/Strings.resx
67 LIBRARY_COMPILE = $(BOOT_COMPILE)
68 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
70 include il/il.make
72 RESOURCE_STRINGS_FILES = --mscorlib-debug
74 RESOURCE_STRINGS = ../referencesource/mscorlib/mscorlib.txt
75 MODULE_DEPS = $(IL_REPLACE) LinkerDescriptor/mscorlib.xml
77 MANAGED_COLLATOR_RESOURCES_FILES = \
78 resources/collation.core.bin \
79 resources/collation.tailoring.bin \
80 resources/collation.cjkCHS.bin \
81 resources/collation.cjkCHT.bin \
82 resources/collation.cjkJA.bin \
83 resources/collation.cjkKO.bin \
84 resources/collation.cjkKOlv2.bin
86 ifdef MCS_MODE
87 UNICODECHARINFO = resources/charinfo.nlp
88 else
89 UNICODECHARINFO =
90 endif
92 RESOURCE_FILES = \
93 $(MANAGED_COLLATOR_RESOURCES_FILES) \
94 LinkerDescriptor/mscorlib.xml
96 REFERENCE_SOURCES_FLAGS = -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ENCODINGNLS,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT,FEATURE_DEFAULT_INTERFACES,HAS_CORLIB_CONTRACTS
98 ifndef NO_SRE
99 LIB_MCS_FLAGS += -d:MONO_FEATURE_SRE
100 endif
102 ifndef MOBILE_PROFILE
103 REFERENCE_SOURCES_FLAGS += -d:FEATURE_MACL
104 endif
106 ifndef AOT_FRIENDLY_PROFILE
107 ifndef DISABLE_REMOTING
108 REFERENCE_SOURCES_FLAGS += -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY
109 else
110 REFERENCE_SOURCES_FLAGS += -d:FEATURE_ROLE_BASED_SECURITY
111 endif
112 endif
114 ifndef NO_THREAD_ABORT
115 REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
116 TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
117 endif
119 ifndef NO_THREAD_SUSPEND_RESUME
120 REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
121 TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
122 endif
124 ifndef NO_MULTIPLE_APPDOMAINS
125 REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_MULTIPLE_APPDOMAINS
126 TEST_MCS_FLAGS += -d:MONO_FEATURE_MULTIPLE_APPDOMAINS
127 endif
129 ifndef NO_CONSOLE
130 LIB_MCS_FLAGS += -d:MONO_FEATURE_CONSOLE
131 endif
133 ifdef MONO_FEATURE_APPLETLS
134 LIB_MCS_FLAGS += -d:MONO_FEATURE_APPLETLS
135 endif
137 ifdef ONLY_APPLETLS
138 LIB_MCS_FLAGS += -d:ONLY_APPLETLS
139 endif
141 ifdef MONO_FEATURE_APPLE_X509
142 LIB_MCS_FLAGS += -d:MONO_FEATURE_APPLE_X509
143 endif
145 COREFX_FLAGS := -d:BIT64,REGISTRY_ASSEMBLY
147 WARNING_ABOUT_DISABLED_WARNING=1635
148 LOCAL_MCS_FLAGS = -unsafe -nostdlib -nowarn:612,618,3001,3002,3003,$(WARNING_ABOUT_DISABLED_WARNING) -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC $(REFERENCE_SOURCES_FLAGS) $(COREFX_FLAGS)
149 DEFAULT_REFERENCES =
151 TEST_LIB_REFS = System.Core System
153 XTEST_LIB_REFS = System System.Core Facades/System.Threading.Tasks Facades/System.Text.RegularExpressions System.Numerics System.Runtime.CompilerServices.Unsafe
154 XTEST_LIB_FLAGS = -d:netcoreapp -publicsign -keyfile:../mono.snk
155 XTEST_MCS_FLAGS = -resource:../../../external/corefx/src/System.Reflection/tests/Resources/ResourceTextFile.txt,ResourceTextFile.txt
157 ifndef AOT_FRIENDLY_PROFILE
158 ifneq ($(PROFILE),xammac)
159 ifneq ($(PROFILE),testing_aot_hybrid)
160 ifneq ($(PROFILE),testing_aot_full_interp)
161 TEST_LIB_REFS += Mono.Posix
162 endif
163 endif
164 endif
165 endif
167 # System.IO/DirectoryInfoTest.cs needs Mono.Posix
168 TEST_MCS_FLAGS += -debug -nowarn:168,219,618,672 -unsafe -nowarn:67,114,162,169,649,659 \
169 -define:MONO_DATACONVERTER_STATIC_METHODS $(TEST_RESX_RESOURCES:%=-resource:%) -resource:LinkerDescriptor/mscorlib_test.xml,$(test_lib:.dll=.xml)
171 ifeq ($(PROFILE),net_4_x)
172 LIB_MCS_FLAGS += -d:FEATURE_CRYPTO_CONFIGURABLE
173 TEST_MCS_FLAGS += -d:FEATURE_CRYPTO_CONFIGURABLE
174 endif
176 XTEST_SPLIT_ASSEMBLIES := $(filter monotouch%, $(PROFILE))
178 CC_PROFILE := $(filter monotouch% xammac, $(PROFILE))
179 ifdef CC_PROFILE
181 BUILT_SOURCES = \
182 CommonCrypto/MD5CryptoServiceProvider.g.cs \
183 CommonCrypto/SHA256Managed.g.cs \
184 CommonCrypto/RC2CryptoServiceProvider.g.cs \
185 CommonCrypto/SHA384Managed.g.cs \
186 CommonCrypto/DESCryptoServiceProvider.g.cs \
187 CommonCrypto/SHA1CryptoServiceProvider.g.cs \
188 CommonCrypto/SHA512Managed.g.cs \
189 CommonCrypto/MD2Managed.g.cs \
190 CommonCrypto/SHA1Managed.g.cs \
191 CommonCrypto/TripleDESCryptoServiceProvider.g.cs \
192 CommonCrypto/MD4Managed.g.cs
194 CommonCrypto/%.g.cs:
195 $(MAKE) -C CommonCrypto
197 endif
199 EXTRA_DISTFILES = \
200 Test/resources/culture-*.cs \
201 $(RESOURCE_FILES) \
202 $(TEST_RESOURCE_FILES) \
203 $(TEST_RESOURCES:.resources=.resx) \
204 resources/charinfo.nlp \
205 LinkerDescriptor/mscorlib_test.xml
207 TEST_RESOURCE_FILES = \
208 Test/resources/MyResources.resources \
209 Test/resources/MyResources.de.resources \
210 Test/resources/Empty.resources \
211 Test/resources/AFile.txt \
212 Test/resources/StreamTest.resources \
213 Test/resources/StreamTest.ja.resources \
214 Test/resources/bug81759.resources \
215 Test/resources/415628.bin \
216 Test/resources/Fergie.GED
218 TEST_MCS_FLAGS += $(foreach r, $(TEST_RESOURCE_FILES), -resource:$(r),$(r))
220 TEST_RESX_RESOURCES = \
221 Test/resources/Resources.resources
223 TEST_RESX_RESOURCES_SATELITE = \
224 Test/resources/Resources.es-ES.resources \
225 Test/resources/Resources.nn-NO.resources
227 CLEAN_FILES += $(TEST_RESX_RESOURCES) $(TEST_RESX_RESOURCES_SATELITE) $(IL_REPLACE)
229 include $(topdir)/build/library.make
231 $(TEST_RESX_RESOURCES) $(TEST_RESX_RESOURCES_SATELITE): %.resources: %.resx
232 $(RESGEN) $< || cp $@.prebuilt $@
234 TEST_RESOURCES = $(TEST_RESX_RESOURCES) $(TEST_RESX_RESOURCES_SATELITE)
236 satellite_assembly1 = $(test_lib_dir)/es-ES/$(patsubst %.dll,%.resources.dll,$(test_lib))
237 satellite_assembly2 = $(test_lib_dir)/nn-NO/$(patsubst %.dll,%.resources.dll,$(test_lib))
239 $(test_lib_output): $(TEST_RESOURCES) $(satellite_assembly1) $(satellite_assembly2) | $(test_lib_dir)
241 mscorlib_for_profile = $(topdir)/class/lib/$(PROFILE)/mscorlib.dll
243 $(satellite_assembly1): Test/resources/culture-es-ES.cs Test/resources/Resources.es-ES.resources
244 @mkdir -p $(dir $@)
245 $(CSCOMPILE) -target:library -r:$(mscorlib_for_profile) Test/resources/culture-es-ES.cs -resource:Test/resources/Resources.es-ES.resources -out:$@
247 $(satellite_assembly2): Test/resources/culture-nn-NO.cs Test/resources/Resources.nn-NO.resources
248 @mkdir -p $(dir $@)
249 $(CSCOMPILE) -target:library -r:$(mscorlib_for_profile) Test/resources/culture-nn-NO.cs -resource:Test/resources/Resources.nn-NO.resources -out:$@
251 test_load_assembly = ${test_lib_dir}/TestLoadAssembly.dll
253 $(test_load_assembly): ../../../external/corefx/src/System.Runtime/tests/TestLoadAssembly/TestLoadAssembly.cs | $(test_lib_dir)
254 $(CSCOMPILE) -target:library -r:$(mscorlib_for_profile) -out:${test_lib_dir}/TestLoadAssembly.dll
256 test_module = $(test_lib_dir)/System.Reflection.TestModule.dll
258 $(test_module): ../../../external/corefx/src/System.Runtime/tests/TestModule/System.Reflection.TestModule.dll | $(test_lib_dir)
259 cp $< $(test_lib_dir)
261 XTEST_LIB_FLAGS += -r:$(test_module)
263 $(xtest_lib_output): $(test_load_assembly) $(test_module) $(test_lib_dir)
265 vtsdir_src = Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization
266 vtsdir = $(test_lib_dir)/vts
267 vtslibs = \
268 $(vtsdir)/1.0/Address.dll \
269 $(vtsdir)/2.0/Address.dll \
270 $(vtsdir)/3.0/Address.dll \
271 $(vtsdir)/4.0/Address.dll \
272 $(vtsdir)/5.0/Address.dll \
273 $(vtsdir)/6.0/Address.dll
275 test-vts: $(vtslibs) $(test_lib_dir)/BinarySerializationOverVersionsTest.dll
277 $(vtsdir)/%/Address.dll: $(vtsdir_src)/VersionTolerantSerializationTestLib/%/Address.cs
278 @mkdir -p $(dir $@)
279 $(CSCOMPILE) -target:library -warn:0 -r:$(mscorlib_for_profile) -out:$@ $^
281 $(test_lib_dir)/BinarySerializationOverVersionsTest.dll: $(vtsdir_src)/BinarySerializationOverVersionsTest.cs $(vtsdir)/1.0/Address.dll $(test_nunit_dep)
282 @mkdir -p $(dir $@)
283 $(CSCOMPILE) $(test_nunit_ref) -warn:0 \
284 -r:$(vtsdir)/1.0/Address.dll \
285 -r:$(mscorlib_for_profile) \
286 -r:$(topdir)/class/lib/$(PROFILE)/System.dll \
287 -target:library \
288 $(vtsdir_src)/BinarySerializationOverVersionsTest.cs -out:$@
289 cp -f $(topdir)/tools/nunit-lite/nunit-lite-console/nunit-lite-console.exe.config.tmpl $(test_lib_dir)/BinarySerializationOverVersionsTest.dll.nunitlite.config
291 run-test-vts: test-vts
292 @echo Running vts tests...
293 PATH="$(TEST_RUNTIME_WRAPPERS_PATH):$(PATH)" $(TEST_RUNTIME) $(TEST_RUNTIME_FLAGS) $(TEST_HARNESS) $(NOSHADOW_FLAG) \
294 $(test_lib_dir)/BinarySerializationOverVersionsTest.dll
296 ifdef NO_TEST
297 NO_VTS_TEST = yes
298 endif
300 ifdef DISABLE_REMOTING
301 NO_VTS_TEST = yes
302 endif
304 ifndef NO_VTS_TEST
305 test-local: test-vts
306 run-test-local: run-test-vts
307 endif
309 EXTRA_DISTFILES += \
310 $(vtsdir_src)/VersionTolerantSerializationTestLib/1.0/Address.cs \
311 $(vtsdir_src)/VersionTolerantSerializationTestLib/2.0/Address.cs \
312 $(vtsdir_src)/VersionTolerantSerializationTestLib/3.0/Address.cs \
313 $(vtsdir_src)/VersionTolerantSerializationTestLib/4.0/Address.cs \
314 $(vtsdir_src)/VersionTolerantSerializationTestLib/5.0/Address.cs \
315 $(vtsdir_src)/VersionTolerantSerializationTestLib/6.0/Address.cs \
316 $(vtsdir_src)/BinarySerializationOverVersionsTest.cs \
317 System.Runtime.CompilerServices/Unsafe.il \
318 il/il.make \
319 il/Makefile
322 # Android TimeZoneInfo testing....
325 TMP_FILE1=tzi1.tmp
326 TMP_FILE2=tzi2.tmp
328 # Remove some code that is protected so we don't have to include all the corlib files.
329 tzi.exe:System/AndroidPlatform.cs $(wildcard System/TimeZone*.cs) ../../build/common/Consts.cs ../../build/common/Locale.cs ../Mono.Options/Mono.Options/Options.cs
330 trap "rm -f $(TMP_FILE1) $(TMP_FILE2)" EXIT INT QUIT TERM && \
331 sed 's/Environment\.GetResourceString/string.Format/g' ../referencesource/mscorlib/system/timezoneinfo.cs > $(TMP_FILE1) && \
332 sed 's/StringBuilder\.DefaultCapacity/100/g' ../referencesource/mscorlib/system/text/stringbuildercache.cs > $(TMP_FILE2) && \
333 $(MCS) /debug+ /out:$@ -unsafe -nowarn:612,618 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC $(REFERENCE_SOURCES_FLAGS) "/d:SELF_TEST;NET_1_1;NET_2_0;MOBILE;NET_3_5;NET_4_0;NET_4_5;MONO;MOBILE;MOBILE_DYNAMIC;MONODROID;ANDROID" $^ $(TMP_FILE1) $(TMP_FILE2)
335 android-pull-tzdb:
336 mkdir -p android/tzdb/usr/share/zoneinfo
337 mkdir -p android/tzdb/misc/zoneinfo/zoneinfo
338 android_root=`adb shell echo '$$ANDROID_ROOT' | tr -d "\r"` ; \
339 android_data=`adb shell echo '$$ANDROID_DATA' | tr -d "\r"` ; \
340 adb $(ADB_TARGET) pull $$android_root/usr/share/zoneinfo android/tzdb/usr/share/zoneinfo || true ; \
341 adb $(ADB_TARGET) pull $$android_data/misc/zoneinfo/tzdata android/tzdb/misc/zoneinfo || true
343 android-dump-tzdata: tzi.exe android-pull-tzdb
344 export
345 __XA_OVERRIDE_TIMEZONE_ID__=America/New_York ANDROID_ROOT="`pwd`/android/tzdb" ANDROID_DATA="`pwd`/android/tzdb" $(TEST_RUNTIME) tzi.exe -o android/tzdata