X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FMakefile;h=b0a3aca4e7b3e28a22394035e556adcd4e894435;hb=6e03e95d020719ce4c0e50ec6842d537be4a2746;hp=e600bbbbc20912b26ba71cf3a1863b2d2b5542f3;hpb=fd1cff9840dcb1aa216a24281cfc8e5a62053b52;p=mono.git diff --git a/mcs/class/corlib/Makefile b/mcs/class/corlib/Makefile index e600bbbbc20..b0a3aca4e7b 100644 --- a/mcs/class/corlib/Makefile +++ b/mcs/class/corlib/Makefile @@ -8,97 +8,23 @@ export __SECURITY_BOOTSTRAP_DB=$(topdir)/class/corlib # # Here, we define a bunch of variables. -ifdef PLATFORM_MONO_NATIVE -test_against = $(corlib) -else -test_against = $(reslib) -endif - +corlib_flags = /unsafe /nostdlib LOCAL_MCS_FLAGS = /nowarn:649 /nowarn:169 -d:INSIDE_CORLIB -gmcs = $(topdir)/gmcs/gmcs.exe +LIBRARY = corlib.dll +LIBRARY_NAME = mscorlib.dll +LIB_MCS_FLAGS = $(corlib_flags) +LIBRARY_USE_INTERMEDIATE_FILE = yes -corlib = $(topdir)/class/lib/$(PROFILE)/mscorlib.dll -testlib = corlib_test.dll -cmplib = $(topdir)/class/lib/$(PROFILE)/corlib_cmp.dll -reslib = $(topdir)/class/lib/$(PROFILE)/corlib_res.dll -plattestlib = corlib_plattest.dll - -corpdb = $(patsubst %.dll,%.pdb,$(corlib)) -testpdb = $(patsubst %.dll,%.pdb,$(testlib)) -cmppdb = $(patsubst %.dll,%.pdb,$(cmplib)) -respdb = $(patsubst %.dll,%.pdb,$(reslib)) -plattestpdb = $(patsubst %.dll,%.pdb,$(plattestlib)) - -sourcefile = corlib.dll.sources -response = $(depsdir)/$(PROFILE)_corlib.dll.response -makefrag = $(depsdir)/$(PROFILE)_corlib.dll.makefrag -stampfile = $(depsdir)/$(PROFILE)_corlib.dll.stamp # disable, until people fix their code... #corlib_flags = /unsafe /nostdlib /d:INSIDE_CORLIB -corlib_flags = /unsafe /nostdlib -net_2_0_bootstrap_response = $(depsdir)/corlib_net_2_0_bootstrap.dll.response -net_2_0_bootstrap_makefrag = $(depsdir)/corlib_net_2_0_bootstrap.dll.makefrag -net_2_0_bootstrap_stampfile = $(depsdir)/corlib_net_2_0_bootstrap.dll.stamp - -net_2_0_response = $(depsdir)/corlib_net_2_0.dll.response -net_2_0_makefrag = $(depsdir)/corlib_net_2_0.dll.makefrag -net_2_0_stampfile = $(depsdir)/corlib_net_2_0.dll.stamp - -test_sourcefile = corlib_test.dll.sources -test_response = $(depsdir)/$(PROFILE)_$(testlib).response -test_makefrag = $(depsdir)/$(PROFILE)_$(testlib).makefrag -test_stampfile = $(depsdir)/$(PROFILE)_$(testlib).stamp -test_flags = /nowarn:0618 /nowarn:0672 /r:$(test_against) /r:$(topdir)/class/lib/$(PROFILE)/NUnit.Framework.dll - -cmp_response = $(depsdir)/$(PROFILE)_corlib_cmp.dll.response -cmp_makefrag = $(depsdir)/$(PROFILE)_corlib_cmp.dll.makefrag -cmp_stampfile = $(depsdir)/$(PROFILE)_corlib_cmp.dll.stamp -cmp_flags = /r:$(PLATFORM_CORLIB) $(corlib_flags) - -res_response = $(depsdir)/$(PROFILE)_corlib_res.dll.response -res_makefrag = $(depsdir)/$(PROFILE)_corlib_res.dll.makefrag -res_stampfile = $(depsdir)/$(PROFILE)_corlib_res.dll.stamp -res_flags = /r:$(PLATFORM_CORLIB) $(corlib_flags) - -plattest_excludes = corlib_plattest.dll.excludes -plattest_response = $(depsdir)/$(PROFILE)_$(plattestlib).response -plattest_makefrag = $(depsdir)/$(PROFILE)_$(plattestlib).makefrag -plattest_stampfile = $(depsdir)/$(PROFILE)_$(plattestlib).stamp -plattest_flags = /debug+ /debug:full /nowarn:0618 /nowarn:0672 /r:$(PLATFORM_CORLIB) /r:$(topdir)/class/lib/$(PROFILE)/NUnit.Framework.dll - -# Here, we make all. - -all-local: $(corlib) - -install-local: $(corlib) $(makefrag) - @if test $(PROFILE) = "net_2_0" ; then \ - $(MKINSTALLDIRS) $(DESTDIR)$(prefix)/lib/net_2_0 ; \ - $(INSTALL_LIB) $(corlib) $(DESTDIR)$(prefix)/lib/net_2_0 ; \ - else \ - $(MKINSTALLDIRS) $(DESTDIR)$(prefix)/lib ; \ - $(INSTALL_LIB) $(corlib) $(DESTDIR)$(prefix)/lib ; \ - fi - -uninstall-local: - @if test $(PROFILE) = "net_2_0" ; then \ - -rm -f $(DESTDIR)$(prefix)/lib/net_2_0/corlib.dll - else \ - -rm -f $(DESTDIR)$(prefix)/lib/corlib.dll - fi - -clean-local: - -rm -f $(corlib) $(cmplib) $(testlib) $(reslib) $(plattestlib) TestResult.xml \ - $(response) $(makefrag) $(stampfile) \ - $(net_2_0_bootstrap_response) $(net_2_0_bootstrap_makefrag) $(net_2_0_bootstrap_stampfile) \ - $(net_2_0_response) $(net_2_0_makefrag) $(net_2_0_stampfile) \ - $(test_response) $(test_makefrag) $(test_stampfile) \ - $(cmp_response) $(cmp_makefrag) $(cmp_stampfile) \ - $(res_response) $(res_makefrag) $(res_stampfile) \ - $(plattest_response) $(plattest_makefrag) $(plattest_stampfile) \ - $(corpdb) $(cmppdb) $(testpdb) $(respdb) $(plattestpdb) +LIBRARY_INSTALL_DIR = $(prefix)/lib/mono/$(FRAMEWORK_VERSION) +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 @@ -109,113 +35,74 @@ clean-local: # You can access either one on demand with either 'make # run-monotest' or 'make run-plattest'. -ifdef PLATFORM_MONO_NATIVE -test-local: $(test_against) $(testlib) - -run-test-local: run-monotest -else -test-local: $(plattestlib) - -run-test-local: run-plattest -endif - -run-monotest: $(test_against) $(testlib) - $(TEST_RUNTIME) $(TEST_HARNESS) $(testlib) - -run-plattest: $(plattestlib) - $(TEST_RUNTIME) $(TEST_HARNESS) $(plattestlib) - -# OK, that was the easy part. Now we get to the fun bits. -# -# first, make dist. - -DISTFILES = $(sourcefile) $(test_sourcefile) \ - corlib.dll.win32-excludes corlib_cmp.dll.excludes corlib_res.dll.excludes \ - $(plattest_excludes) \ - Test/ms_run_test.sh +plattestlib = corlib_plattest.dll +plattestpdb = $(patsubst %.dll,%.pdb,$(plattestlib)) +reslib = $(topdir)/class/lib/$(PROFILE)/corlib_res.dll +cmplib = $(topdir)/class/lib/$(PROFILE)/corlib_cmp.dll -# see $(topdir)/build/library.make for explanation of what's going on -# here. +$(plattestlib).sources: corlib_test.dll.sources $(plattestlib).excludes + sort corlib_test.dll.sources $(plattestlib).excludes | uniq -u >$@ -dist-local: dist-default - for f in `cat $(sourcefile)` `cat $(test_sourcefile) |sed -e 's,^\(.\),Test/\1,'` ; do \ - dest=`dirname $(distdir)/$$f` ; \ - $(MKINSTALLDIRS) $$dest && cp $$f $$dest || exit 1 ; \ - done +TEST_MCS_FLAGS = /debug+ /debug:full /nowarn:0618 /nowarn:0672 /unsafe -# plain ol corlib +ifndef PLATFORM_MONO_NATIVE +test_lib = $(plattestlib) +test_against = $(PLATFORM_CORLIB) +HAVE_CS_TESTS = $(plattestlib).sources -$(corlib): $(makefrag) $(response) $(stampfile) - @if test $(PROFILE) = "net_2_0" ; then \ - $(MAKE) corlib_net_2_0 || exit 1 ; \ - else \ - $(MAKE) corlib_compile || exit 1 ; \ - fi +## for now, compiling the testsuite with CSC causes CS0583. So compile with internal MCS +TEST_COMPILE = $(INTERNAL_MCS) $(USE_MCS_FLAGS) +endif -corlib_compile: $(makefrag) $(response) $(stampfile) - $(BOOT_COMPILE) $(LIBRARY_FLAGS) $(corlib_flags) /target:library /out:../lib/default/mscorlib.dll @$(response) +run-test-ondotnet-local: run-plattest-ondotnet -# A bootstrap corlib 2.0 needs to be built so gmcs can be built and the full net 2.0 corlib can be built -# here we go,.... +ifdef PLATFORM_MONO_NATIVE +run-monotest: run-test +else +run-monotest: + $(MAKE) $(reslib) + $(MAKE) test_lib=corlib_test.dll test_against=$(reslib) run-test -corlib_net_2_0: corlib_net_2_0_compile +run-plattest: + $(MAKE) test_lib=$(plattestlib) test_against='$(PLATFORM_CORLIB)' run-test +endif -corlib_net_2_0_compile: corlib_net_2_0_bootstrap $(net_2_0_makefrag) $(net_2_0_response) $(net_2_0_stampfile) $(gmcs) - MONO_PATH="../lib/net_2_0_bootstrap:$(MONO_PATH)" $(RUNTIME) $(gmcs) $(USE_MCS_FLAGS) $(LIBRARY_FLAGS) $(corlib_flags) /define:NET_1_1 /define:NET_2_0 /target:library /out:../lib/net_2_0/mscorlib.dll @$(net_2_0_response) +run-plattest-ondotnet: $(plattestlib) + $(TEST_HARNESS) /exclude=NotDotNet $(plattestlib) -corlib_net_2_0_bootstrap: $(net_2_0_bootstrap_response) $(net_2_0_bootstrap_stampfile) - $(BOOTSTRAP_MCS) /nowarn:649 /nowarn:169 /define:INSIDE_CORLIB /define:NET_1_1 /define:BOOTSTRAP_NET_2_0 $(corlib_flags) /target:library /out:../lib/net_2_0_bootstrap/mscorlib.dll @$(net_2_0_bootstrap_response) +EXTRA_DISTFILES = \ + corlib.dll.win32-excludes corlib_cmp.dll.excludes corlib_res.dll.excludes \ + $(plattestlib).excludes \ + Test/ms_run_test.sh -$(gmcs): - cd $(topdir)/gmcs/ && $(MAKE) ; +ifeq (net_2_0, $(PROFILE)) +# Net 2.0 corlib is built with in-tree 'gmcs' +gmcs = $(topdir)/gmcs/gmcs.exe -$(response): $(sourcefile) - @echo Creating $@ ... -ifdef PLATFORM_CHANGE_SEPARATOR_CMD - @cat $< |$(PLATFORM_TWEAK_CORLIB_SOURCES) |$(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ +LIBRARY_COMPILE = MONO_PATH="../lib/net_2_0_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(gmcs) $(USE_MCS_FLAGS) /define:NET_1_1 /define:NET_2_0 else - @cat $< |$(PLATFORM_TWEAK_CORLIB_SOURCES) >$@ +LIBRARY_COMPILE = $(BOOT_COMPILE) endif -# warning: embedded tab in the 'echo touch' line -$(makefrag): $(response) - @echo Creating $@ ... - @echo "HAVE_MAKEFRAG = yes" >$@.new - @echo "$(stampfile): \\" >>$@.new - @cat $< |sed -e 's,\.cs[ \t]*$$,\.cs \\,' >>$@.new - @cat $@.new |sed -e '$$s, \\$$,,' >$@ - @echo " touch \$$@" >>$@ - @rm -rf $@.new - --include $(makefrag) - -ifndef HAVE_MAKEFRAG -$(stampfile): - touch $@ -endif +include ../../build/library.make # corlib_cmp -$(cmplib): $(cmp_makefrag) $(cmp_response) $(cmp_stampfile) +cmppdb = $(patsubst %.dll,%.pdb,$(cmplib)) +cmp_response = $(depsdir)/$(PROFILE)_corlib_cmp.dll.response +cmp_makefrag = $(depsdir)/$(PROFILE)_corlib_cmp.dll.makefrag +cmp_flags = /r:$(PLATFORM_CORLIB) $(corlib_flags) + +$(cmplib): $(cmp_makefrag) $(cmp_response) $(BOOT_COMPILE) $(LIBRARY_FLAGS) $(cmp_flags) /target:library /out:$@ @$(cmp_response) -$(cmp_response): $(response) corlib_cmp.dll.excludes +$(cmp_response): $(sourcefile) corlib_cmp.dll.excludes @echo Creating $@ ... -ifdef PLATFORM_CHANGE_SEPARATOR_CMD - @cat corlib_cmp.dll.excludes |$(PLATFORM_CHANGE_SEPARATOR_CMD) |cat - $< |sort |uniq -u >$@ -else - @cat corlib_cmp.dll.excludes |cat - $< |sort |uniq -u >$@ -endif + @sort $(sourcefile) corlib_cmp.dll.excludes | uniq -u | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ -# warning: embedded tab in the 'echo touch' line $(cmp_makefrag): $(cmp_response) @echo Creating $@ ... - @echo "HAVE_CMP_MAKEFRAG = yes" >$@.new - @echo "$(cmp_stampfile): \\" >>$@.new - @cat $< |sed -e 's,\.cs[ \t]*$$,\.cs \\,' >>$@.new - @cat $@.new |sed -e '$$s, \\$$,,' >$@ - @echo " touch \$$@" >>$@ - @rm -rf $@.new + @sed 's,^,$(cmplib): ,' $< >$@ # Since we make corlib_cmp on demand, there isn't a real need # to have full dep tracking for it. Also, the generation of this @@ -224,160 +111,23 @@ $(cmp_makefrag): $(cmp_response) # # -include $(cmp_makefrag) -ifndef HAVE_CMP_MAKEFRAG -$(cmp_stampfile): - touch $@ -endif - # corlib_res -$(reslib): $(res_makefrag) $(res_response) $(res_stampfile) +respdb = $(patsubst %.dll,%.pdb,$(reslib)) +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 $@ ... -ifdef PLATFORM_CHANGE_SEPARATOR_CMD - @cat corlib_res.dll.excludes $(sourcefile) |sort |uniq -u |$(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ -else - @cat corlib_res.dll.excludes $(sourcefile) |sort |uniq -u >$@ -endif + @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 $@ ... - @echo "HAVE_RES_MAKEFRAG = yes" >$@.new - @echo "$(res_stampfile): \\" >>$@.new - @cat $< |sed -e 's,\.cs[ \t]*$$,\.cs \\,' >>$@.new - @cat $@.new |sed -e '$$s, \\$$,,' >$@ - @echo " touch \$$@" >>$@ - @rm -rf $@.new + @sed 's,^,$(reslib): ,' $< >$@ -include $(res_makefrag) - -ifndef HAVE_RES_MAKEFRAG -$(res_stampfile): - touch $@ -endif - -# corlib_test - -$(testlib): $(test_makefrag) $(test_response) $(test_stampfile) - $(CSCOMPILE) $(test_flags) /target:library /out:$@ @$(test_response) - -$(test_response): $(test_sourcefile) - @echo Creating $@ ... -ifdef PLATFORM_CHANGE_SEPARATOR_CMD - @cat $< |sed -e 's,^\(.\),Test/\1,' |$(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ -else - @cat $< |sed -e 's,^\(.\),Test/\1,' >$@ -endif - -# warning: embedded tab in the 'echo touch' line -$(test_makefrag): $(test_response) - @echo Creating $@ ... - @echo "HAVE_TEST_MAKEFRAG = yes" >$@.new - @echo "$(test_stampfile): \\" >>$@.new - @cat $< |sed -e 's,\.cs[ \t]*$$,\.cs \\,' >>$@.new - @cat $@.new |sed -e '$$s, \\$$,,' >$@ - @echo " touch \$$@" >>$@ - @rm -rf $@.new - --include $(test_makefrag) - -ifndef HAVE_TEST_MAKEFRAG -$(test_stampfile): - touch $@ -endif - -# corlib_plattest - -$(plattestlib): $(plattest_makefrag) $(plattest_response) $(plattest_stampfile) - $(CSCOMPILE) $(plattest_flags) /target:library /out:$@ @$(plattest_response) - -$(plattest_response): $(test_sourcefile) $(plattest_excludes) - @echo Creating $@ ... -ifdef PLATFORM_CHANGE_SEPARATOR_CMD -ifdef PLATFORM_MONO_NATIVE - @cat $(plattest_excludes) $(test_sourcefile) |sort |uniq -u |sed -e 's,^\(.\),Test/\1,' |$(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ -else - @cat $(test_sourcefile) |sort |uniq -u |sed -e 's,^\(.\),Test/\1,' |$(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ -endif -else -ifdef PLATFORM_MONO_NATIVE - @cat $(plattest_excludes) $(test_sourcefile) |sort |uniq -u |sed -e 's,^\(.\),Test/\1,' >$@ -else - @cat $(test_sourcefile) |sort |uniq -u |sed -e 's,^\(.\),Test/\1,' >$@ -endif -endif - -# warning: embedded tab in the 'echo touch' line -$(plattest_makefrag): $(plattest_response) - @echo Creating $@ ... - @echo "HAVE_PLATTEST_MAKEFRAG = yes" >$@.new - @echo "$(plattest_stampfile): \\" >>$@.new - @cat $< |sed -e 's,\.cs[ \t]*$$,\.cs \\,' >>$@.new - @cat $@.new |sed -e '$$s, \\$$,,' >$@ - @echo " touch \$$@" >>$@ - @rm -rf $@.new - --include $(plattest_makefrag) - -ifndef HAVE_PLATTEST_MAKEFRAG -$(plattest_stampfile): - touch $@ -endif - -#net_2_0_bootstrap - -$(net_2_0_bootstrap_response): $(sourcefile) - @echo Creating $@ ... -ifdef PLATFORM_CHANGE_SEPARATOR_CMD - @cat $< |$(PLATFORM_TWEAK_CORLIB_SOURCES) |$(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ -else - @cat $< |$(PLATFORM_TWEAK_CORLIB_SOURCES) >$@ -endif - -# warning: embedded tab in the 'echo touch' line -$(net_2_0_boostrap_makefrag): $(net_2_0_boostrap_response) - @echo Creating $@ ... - @echo "HAVE_NET_2_0_BOOTSTRAP_MAKEFRAG = yes" >$@.new - @echo "$(net_2_0_bootstrap_stampfile): \\" >>$@.new - @cat $< |sed -e 's,\.cs[ \t]*$$,\.cs \\,' >>$@.new - @cat $@.new |sed -e '$$s, \\$$,,' >$@ - @echo " touch \$$@" >>$@ - @rm -rf $@.new - --include $(net_2_0_bootstrap_makefrag) - -ifndef HAVE_NET_2_0_BOOTSTRAP_MAKEFRAG -$(net_2_0_bootstrap_stampfile): - touch $@ -endif - -#net_2_0 - -$(net_2_0_response): $(sourcefile) - @echo Creating $@ ... -ifdef PLATFORM_CHANGE_SEPARATOR_CMD - @cat $< |$(PLATFORM_TWEAK_CORLIB_SOURCES) |$(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ -else - @cat $< |$(PLATFORM_TWEAK_CORLIB_SOURCES) >$@ -endif - -# warning: embedded tab in the 'echo touch' line -$(net_2_0_makefrag): $(net_2_0_response) - @echo Creating $@ ... - @echo "HAVE_NET_2_0_MAKEFRAG = yes" >$@.new - @echo "$(net_2_0_stampfile): \\" >>$@.new - @cat $< |sed -e 's,\.cs[ \t]*$$,\.cs \\,' >>$@.new - @cat $@.new |sed -e '$$s, \\$$,,' >$@ - @echo " touch \$$@" >>$@ - @rm -rf $@.new - --include $(net_2_0_makefrag) - -ifndef HAVE_NET_2_0_MAKEFRAG -$(net_2_0_stampfile): - touch $@ -endif -