X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fbuild%2Flibrary.make;h=3d94ab9709b5ad7a0b6e4faeb59d18f15e1ba5ea;hb=73b71062a7753c95d132372275d7f521e8d82087;hp=6ddcfcbff645a11a614e251034ed5f0e2979a928;hpb=6c957afdb6a99bd4740deeaee10eb67ea22cfd17;p=mono.git diff --git a/mcs/build/library.make b/mcs/build/library.make index 6ddcfcbff64..3d94ab9709b 100644 --- a/mcs/build/library.make +++ b/mcs/build/library.make @@ -9,6 +9,18 @@ # munge in the library name to keep the files from clashing. sourcefile = $(LIBRARY).sources + +# If the directory contains the per profile include file, generate list file. +PROFILE_sources = $(PROFILE)_$(LIBRARY).sources +ifeq ($(wildcard $(PROFILE_sources)), $(PROFILE_sources)) +PROFILE_excludes = $(wildcard $(PROFILE)_$(LIBRARY).exclude.sources) +COMMON_sourcefile := $(sourcefile) +sourcefile = $(depsdir)/$(PROFILE)_$(LIBRARY).sources +$(sourcefile): $(PROFILE_sources) $(PROFILE_excludes) $(COMMON_sourcefile) + @echo Creating the per profile list $@ ... + $(topdir)/tools/gensources.sh $(PROFILE_sources) $(PROFILE_excludes) > $@ +endif + PLATFORM_excludes := $(wildcard $(LIBRARY).$(PLATFORM)-excludes) ifndef PLATFORM_excludes @@ -32,6 +44,13 @@ the_pdb = $(the_lib:.dll=.pdb) the_mdb = $(the_lib).mdb library_CLEAN_FILES += $(makefrag) $(the_lib) $(the_pdb) $(the_mdb) +ifdef LIBRARY_NEEDS_POSTPROCESSING +build_lib = fixup/$(PROFILE)/$(LIBRARY_NAME) +library_CLEAN_FILES += $(build_lib) $(build_lib:.dll=.pdb) +else +build_lib = $(the_lib) +endif + ifndef NO_TEST test_nunit_lib = nunit.framework.dll nunit.core.dll nunit.util.dll test_nunit_dep = $(test_nunit_lib:%=$(topdir)/class/lib/$(PROFILE)/%) @@ -52,7 +71,7 @@ endif test_pdb = $(test_lib:.dll=.pdb) test_response = $(depsdir)/$(test_lib).response test_makefrag = $(depsdir)/$(test_lib).makefrag -test_flags = /r:$(test_against) $(test_nunit_ref) $(TEST_MCS_FLAGS) +test_flags = -r:$(test_against) $(test_nunit_ref) $(TEST_MCS_FLAGS) library_CLEAN_FILES += $(LIBRARY:.dll=_test*.dll) $(LIBRARY:.dll=_test*.pdb) $(test_response) $(test_makefrag) ifndef btest_lib @@ -64,7 +83,7 @@ endif btest_pdb = $(btest_lib:.dll=.pdb) btest_response = $(depsdir)/$(btest_lib).response btest_makefrag = $(depsdir)/$(btest_lib).makefrag -btest_flags = /r:$(test_against) $(test_nunit_ref) $(TEST_MBAS_FLAGS) +btest_flags = -r:$(test_against) $(test_nunit_ref) $(TEST_MBAS_FLAGS) library_CLEAN_FILES += $(LIBRARY:.dll=_btest*.dll) $(LIBRARY:.dll=_btest*.pdb) $(btest_response) $(btest_makefrag) ifndef HAVE_CS_TESTS @@ -76,28 +95,35 @@ endif endif -gacutil = $(topdir)/tools/gacutil/gacutil.exe -GACUTIL = MONO_PATH="$(topdir)/class/lib/default$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(gacutil) +ifdef NO_INSTALL +GACUTIL = : +else +gacutil = $(topdir)/class/lib/net_1_1_bootstrap/gacutil.exe +GACUTIL = MONO_PATH="$(topdir)/class/lib/net_1_1_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(RUNTIME_FLAGS) $(gacutil) +endif ifdef NO_SIGN_ASSEMBLY SN = : else sn = $(topdir)/class/lib/net_1_1_bootstrap/sn.exe -SN = MONO_PATH="$(topdir)/class/lib/net_1_1_bootstrap/$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(sn) +SN = MONO_PATH="$(topdir)/class/lib/net_1_1_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(RUNTIME_FLAGS) $(sn) SNFLAGS = -q -R endif -libdir = $(prefix)/lib - ifeq ($(PLATFORM), win32) -GACDIR = `cygpath -w $(libdir)` -GACROOT = `cygpath -w $(DESTDIR)$(libdir)` +GACDIR = `cygpath -w $(mono_libdir)` +GACROOT = `cygpath -w $(DESTDIR)$(mono_libdir)` +test_flags += -d:WINDOWS else -GACDIR = $(libdir) -GACROOT = $(DESTDIR)$(libdir) +GACDIR = $(mono_libdir) +GACROOT = $(DESTDIR)$(mono_libdir) endif -all-local install-local test-local: $(the_lib) +all-local: $(the_lib) + +install-local: all-local +test-local: all-local +uninstall-local: ifdef NO_INSTALL install-local uninstall-local: @@ -118,11 +144,11 @@ else # If RUNTIME_HAS_CONSISTENT_GACDIR is set, it implies that the internal GACDIR # of the runtime is the same as the GACDIR we want. So, we don't need to pass it -# to gacutil. Note that the GACDIR we want may not be the same as the value of +# to gacutil. Note that the GACDIR we want may not be the same as the value of # GACDIR set above, since the user could have overridden the value of $(prefix). # # This makes a difference only when we're building from the mono/ tree, since we -# have to ensure that the internal GACDIR of the in-tree runtime matches where we +# have to ensure that the internal GACDIR of the in-tree runtime matches where we # install the DLLs. ifndef RUNTIME_HAS_CONSISTENT_GACDIR @@ -171,34 +197,48 @@ run-test-ondotnet-local: run-test-ondotnet-lib ## FIXME: i18n problem in the 'sed' command below run-test-lib: test-local ok=:; \ - $(TEST_RUNTIME) $(TEST_HARNESS) $(TEST_HARNESS_FLAGS) /output:TestResult-$(PROFILE).log /exclude:NotWorking,ValueAdd /xml:TestResult-$(PROFILE).xml $(test_assemblies) || ok=false; \ + $(TEST_RUNTIME) $(TEST_HARNESS) $(TEST_HARNESS_FLAGS) $(LOCAL_TEST_HARNESS_FLAGS) /output:TestResult-$(PROFILE).log /exclude:NotWorking,ValueAdd,CAS,InetAccess /xml:TestResult-$(PROFILE).xml $(test_assemblies) || ok=false; \ sed '1,/^Tests run: /d' TestResult-$(PROFILE).log; \ $$ok run-test-ondotnet-lib: test-local ok=:; \ - $(TEST_HARNESS) $(TEST_HARNESS_FLAGS) /exclude=NotDotNet /output:TestResult-ondotnet-$(PROFILE).log /xml:TestResult-ondotnet-$(PROFILE).xml $(test_assemblies) || ok=false; \ + $(TEST_HARNESS) $(TEST_HARNESS_FLAGS) $(LOCAL_TEST_HARNESS_ONDOTNET_FLAGS) /exclude=NotDotNet,CAS /output:TestResult-ondotnet-$(PROFILE).log /xml:TestResult-ondotnet-$(PROFILE).xml $(test_assemblies) || ok=false; \ sed '1,/^Tests run: /d' TestResult-ondotnet-$(PROFILE).log; \ $$ok endif -DISTFILES = $(sourcefile) $(test_sourcefile) $(EXTRA_DISTFILES) +DISTFILES = $(sourcefile) $(EXTRA_DISTFILES) -TEST_FILES = +TEST_FILES = ifdef HAVE_CS_TESTS -TEST_FILES += `sed 's,^,Test/,' $(test_sourcefile)` +TEST_FILES += `sed -e '/^$$/d' -e 's,^,Test/,' $(test_sourcefile)` +DISTFILES += $(test_sourcefile) endif ifdef HAVE_VB_TESTS -TEST_FILES += `sed 's,^,Test/,' $(btest_sourcefile)` +TEST_FILES += `sed -e '/^$$/d' -e 's,^,Test/,' $(btest_sourcefile)` +DISTFILES += $(btest_sourcefile) endif dist-local: dist-default + subs=' ' ; \ for f in `cat $(sourcefile)` $(TEST_FILES) ; do \ case $$f in \ ../*) : ;; \ - *) dest=`dirname $(distdir)/$$f` ; $(MKINSTALLDIRS) $$dest && cp -p $$f $$dest || exit 1 ;; \ - esac ; done + *) dest=`dirname $$f` ; \ + case $$subs in *" $$dest "*) : ;; *) subs=" $$dest$$subs" ; $(MKINSTALLDIRS) $(distdir)/$$dest ;; esac ; \ + cp -p $$f $(distdir)/$$dest || exit 1 ;; \ + esac ; done ; \ + for d in . $$subs ; do \ + case $$d in .) : ;; *) test ! -f $$d/ChangeLog || cp -p $$d/ChangeLog $(distdir)/$$d ;; esac ; done + +ifdef LIBRARY_NEEDS_POSTPROCESSING +dist-local: dist-fixup +FIXUP_PROFILES = default net_2_0 +dist-fixup: + $(MKINSTALLDIRS) $(distdir)/fixup $(FIXUP_PROFILES:%=$(distdir)/fixup/%) +endif ifndef LIBRARY_COMPILE LIBRARY_COMPILE = $(CSCOMPILE) @@ -216,36 +256,41 @@ ifndef LIBRARY_SNK LIBRARY_SNK = $(topdir)/class/mono.snk endif +ifdef gacutil $(gacutil): - cd $(topdir)/tools/gacutil && $(MAKE) PROFILE=default + cd $(topdir) && $(MAKE) PROFILE=net_1_1_bootstrap +endif ifdef sn $(sn): cd $(topdir) && $(MAKE) PROFILE=net_1_1_bootstrap endif +ifdef BUILT_SOURCES ifeq (cat, $(PLATFORM_CHANGE_SEPARATOR_CMD)) BUILT_SOURCES_cmdline = $(BUILT_SOURCES) else BUILT_SOURCES_cmdline = `echo $(BUILT_SOURCES) | $(PLATFORM_CHANGE_SEPARATOR_CMD)` endif +endif # The library -$(the_lib): $(response) $(sn) $(BUILT_SOURCES) +$(build_lib): $(response) $(sn) $(BUILT_SOURCES) ifdef LIBRARY_USE_INTERMEDIATE_FILE - $(LIBRARY_COMPILE) $(LIBRARY_FLAGS) $(LIB_MCS_FLAGS) /target:library /out:$(@F) $(BUILT_SOURCES_cmdline) @$(response) - $(SN) $(SNFLAGS) $(@F) $(LIBRARY_SNK) - mv $(@F) $@ - test ! -f $(@F).mdb || mv $(@F).mdb $@.mdb + $(LIBRARY_COMPILE) $(LIBRARY_FLAGS) $(LIB_MCS_FLAGS) -target:library -out:$(LIBRARY_NAME) $(BUILT_SOURCES_cmdline) @$(response) + $(SN) $(SNFLAGS) $(LIBRARY_NAME) $(LIBRARY_SNK) + mv $(LIBRARY_NAME) $@ + test ! -f $(LIBRARY_NAME).mdb || mv $(LIBRARY_NAME).mdb $@.mdb + test ! -f $(LIBRARY_NAME:.dll=.pdb) || mv $(LIBRARY_NAME:.dll=.pdb) $(dir $@)$(LIBRARY_NAME:.dll=.pdb) else - $(LIBRARY_COMPILE) $(LIBRARY_FLAGS) $(LIB_MCS_FLAGS) /target:library /out:$@ $(BUILT_SOURCES_cmdline) @$(response) + $(LIBRARY_COMPILE) $(LIBRARY_FLAGS) $(LIB_MCS_FLAGS) -target:library -out:$@ $(BUILT_SOURCES_cmdline) @$(response) $(SN) $(SNFLAGS) $@ $(LIBRARY_SNK) endif $(makefrag): $(sourcefile) @echo Creating $@ ... - @sed 's,^,$(the_lib): ,' $< >$@ + @sed 's,^,$(build_lib): ,' $< >$@ ifneq ($(response),$(sourcefile)) $(response): $(sourcefile) $(PLATFORM_excludes) @@ -261,11 +306,11 @@ endif ifdef HAVE_CS_TESTS $(test_lib): $(test_dep) $(test_response) $(test_nunit_dep) - $(TEST_COMPILE) /target:library /out:$@ $(test_flags) @$(test_response) + $(TEST_COMPILE) -target:library -out:$@ $(test_flags) @$(test_response) $(test_response): $(test_sourcefile) @echo Creating $@ ... - @sed 's,^,Test/,' $(test_sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ + @sed -e '/^$$/d' -e 's,^,Test/,' $(test_sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ $(test_makefrag): $(test_response) @echo Creating $@ ... @@ -278,11 +323,11 @@ endif ifdef HAVE_VB_TESTS $(btest_lib): $(test_dep) $(btest_response) $(test_nunit_dep) - $(BTEST_COMPILE) /target:library /out:$@ $(btest_flags) @$(btest_response) + $(BTEST_COMPILE) -target:library -out:$@ $(btest_flags) @$(btest_response) $(btest_response): $(btest_sourcefile) @echo Creating $@ ... - @sed 's,^,Test/,' $(btest_sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ + @sed -e '/^$$/d' -e 's,^,Test/,' $(btest_sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@ $(btest_makefrag): $(btest_response) @echo Creating $@ ...