Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/corlib/Makefile')
-rw-r--r--mcs/class/corlib/Makefile91
1 files changed, 74 insertions, 17 deletions
diff --git a/mcs/class/corlib/Makefile b/mcs/class/corlib/Makefile
index 49a2391c576..69772f5f704 100644
--- a/mcs/class/corlib/Makefile
+++ b/mcs/class/corlib/Makefile
@@ -3,14 +3,6 @@ SUBDIRS =
include ../../build/rules.make
export __SECURITY_BOOTSTRAP_DB=$(topdir)/class/corlib
-LIBRARY = corlib.dll
-LIBRARY_NAME = mscorlib.dll
-LIB_MCS_FLAGS = $(corlib_flags) $(RESOURCE_FILES:%=-resource:%)
-LIBRARY_USE_INTERMEDIATE_FILE = yes
-
-LIBRARY_COMPILE = $(BOOT_COMPILE)
-LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
-
RESOURCE_FILES = \
resources/collation.core.bin \
resources/collation.tailoring.bin \
@@ -27,19 +19,67 @@ ifneq ($(FRAMEWORK_VERSION),1.0)
LOCAL_MCS_FLAGS += -nowarn:414
endif
-TEST_MCS_FLAGS = -debug+ -debug:full -nowarn:168,219,618,672 -unsafe
+LIBRARY = corlib.dll
+LIBRARY_NAME = mscorlib.dll
+LIB_MCS_FLAGS = $(corlib_flags) $(RESOURCE_FILES:%=/resource:%)
+LIBRARY_USE_INTERMEDIATE_FILE = yes
+
+LIBRARY_COMPILE = $(BOOT_COMPILE)
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
EXTRA_DISTFILES = \
- corlib.dll.win32-excludes \
+ corlib.dll.win32-excludes corlib_cmp.dll.excludes corlib_res.dll.excludes \
+ $(plattestlib).excludes \
Test/ms_run_test.sh \
Test/resources/MyResources.resources \
Test/resources/Empty.resources \
- Test/resources/AFile.txt \
+ Test/resources/AFile.txt \
$(RESOURCE_FILES)
-include $(topdir)/build/library.make
+CLEAN_FILES = $(cmplib) $(reslib) $(plattestlib) $(plattestlib).sources \
+ $(cmp_response) $(cmp_makefrag) \
+ $(res_response) $(res_makefrag) \
+ $(cmppdb) $(respdb) $(plattestpdb)
+
+# If building on a non mono-native platform, default
+# to running the unit tests on its corlib, to see if
+# our tests are complaint with their (hopefully bug-free)
+# corlib. If on a mono-native platform, test our actual
+# corlib.
+#
+# You can access either one on demand with either 'make
+# run-monotest' or 'make run-plattest'.
+
+plattestlib = corlib_plattest.dll
+plattestpdb = $(patsubst %.dll,%.pdb,$(plattestlib))
+$(plattestlib).sources: corlib_test.dll.sources $(plattestlib).excludes
+ sort corlib_test.dll.sources $(plattestlib).excludes | uniq -u >$@
+
+TEST_MCS_FLAGS = -debug+ -debug:full -nowarn:168,219,618,672 -unsafe
+
+ifndef PLATFORM_MONO_NATIVE
+test_lib = $(plattestlib)
+test_against = $(PLATFORM_CORLIB)
+HAVE_CS_TESTS = $(plattestlib).sources
+
+## for now, compiling the testsuite with CSC causes CS0583. So compile with internal MCS
+TEST_COMPILE = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_MCS) $(USE_MCS_FLAGS)
+endif
+
+include ../../build/library.make
+
+ifndef PLATFORM_MONO_NATIVE
+run-monotest:
+ $(MAKE) $(reslib)
+ $(MAKE) test_lib=corlib_test.dll test_against=$(reslib) run-test
+
+run-plattest:
+ $(MAKE) test_lib=$(plattestlib) test_against='$(PLATFORM_CORLIB)' run-test
+
+else
+run-monotest: run-test
+endif
-ifdef FIXME_CORLIB_CMP
# corlib_cmp
cmplib = $(topdir)/class/lib/$(PROFILE)/corlib_cmp.dll
cmppdb = $(cmplib:.dll=.pdb)
@@ -47,9 +87,6 @@ cmp_response = $(depsdir)/$(PROFILE)_corlib_cmp.dll.response
cmp_makefrag = $(depsdir)/$(PROFILE)_corlib_cmp.dll.makefrag
cmp_flags = -r:$(PLATFORM_CORLIB) $(corlib_flags)
-EXTRA_DISTFILES += corlib_cmp.dll.excludes
-CLEAN_FILES += $(cmplib) $(cmp_response) $(cmp_makefrag) $(cmppdb)
-
$(cmplib): $(cmp_makefrag) $(cmp_response)
$(BOOT_COMPILE) $(LIBRARY_FLAGS) $(cmp_flags) -target:library -out:$@ @$(cmp_response)
@@ -67,4 +104,24 @@ $(cmp_makefrag): $(cmp_response)
# leading to a broken build.
#
# -include $(cmp_makefrag)
-endif
+
+# corlib_res
+reslib = $(topdir)/class/lib/$(PROFILE)/corlib_res.dll
+respdb = $(reslib:.dll=.pdb)
+res_response = $(depsdir)/$(PROFILE)_corlib_res.dll.response
+res_makefrag = $(depsdir)/$(PROFILE)_corlib_res.dll.makefrag
+res_flags = -r:$(PLATFORM_CORLIB) $(corlib_flags)
+
+$(reslib): $(res_makefrag) $(res_response)
+ $(BOOT_COMPILE) $(LIBRARY_FLAGS) $(res_flags) -target:library -out:$@ @$(res_response)
+
+$(res_response): $(sourcefile) corlib_res.dll.excludes
+ @echo Creating $@ ...
+ @sort $(sourcefile) corlib_res.dll.excludes | uniq -u | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@
+
+# warning: embedded tab in the 'echo touch' line
+$(res_makefrag): $(res_response)
+ @echo Creating $@ ...
+ @sed 's,^,$(reslib): ,' $< >$@
+
+-include $(res_makefrag)