+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (%-profiles): Go through an intermediate set of rules.
+ Move body to ...
+ (profiles-do--%): ... this.
+ (profiles-do--run-test): Customized rule that usefully runs with
+ 'make -j' and 'make -k'.
+ (profiles-do--all, profile-do--%--all): Orchestrate the bootstrap
+ process.
+
2004-11-09 Raja R Harinath <rharinath@novell.com>
* Makefile (basic_SUBDIRS): New.
PROFILES = default net_2_0
.PHONY: all-profiles $(STD_TARGETS:=-profiles)
-all-profiles $(STD_TARGETS:=-profiles):
- $(MAKE) $(PROFILES:%=profile-do--%--$(@:-profiles=))
+all-profiles $(STD_TARGETS:=-profiles): %-profiles: profiles-do--%
+ @:
+
+profiles-do--%:
+ $(MAKE) $(PROFILES:%=profile-do--%--$*)
# The % below looks like profile-name--target-name
profile-do--%:
$(MAKE) PROFILE=$(subst --, ,$*)
-# Ensure these don't run in parallel, for now.
-profile-do--net_2_0--run-test: profile-do--default--run-test
+profiles-do--run-test:
+ ret=:; \
+ $(MAKE) PROFILE=default run-test || ret=false; \
+ $(MAKE) PROFILE=net_2_0 run-test && $$ret
+
+# Orchestrate the bootstrap here.
+profiles-do--all: profile-do--net_2_0--all
profile-do--net_2_0--all: profile-do--net_2_0_bootstrap--all
profile-do--net_2_0_bootstrap--all: profile-do--default--all
+ifeq (linux, $(PLATFORM))
+profile-do--default--all: profile-do--net_1_1_bootstrap--all
+profile-do--net_1_1_bootstrap--all: profile-do--basic--all
+endif
+
testcorlib:
@cd class/corlib && $(MAKE) test run-test
+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ Orchestrate the bootstrap.
+ * rules.make (INTERNAL_MCS): Look for mcs.exe in profile-specific directory.
+ * profiles/net_1_1_bootstrap.make (BOOTSTRAP_MCS): Use mcs.exe from
+ basic profile.
+ * profiles/default.make (BOOTSTRAP_MCS): Use mcs.exe from the
+ net_1_1_bootstrap profile.
+ * profiles/net_2_0_bootstrap.make (BOOTSTRAP_MCS): Use mcs.exe
+ from default profile.
+ (all-local, clean-local): New. Copy mcs.exe from default profile,
+ but customize it to work with 2.0.x libraries.
+ * profiles/net_2_0.make (BOOTSTRAP_MCS): Define approprately for
+ building corlib.
+
+ * executable.make (executable_CLEAN_FILES): Clean up more files.
+ ($(PROGRAM)): Move .mdb files too.
+
2004-11-18 Atsushi Enomoto <atsushi@ximian.com>
* library.make: Reverted the last fix. It broke windows build (that
PROGRAM_config := $(PROGRAM).config
endif
+executable_CLEAN_FILES = *.exe $(PROGRAM) $(PROGRAM).mdb $(BUILT_SOURCES)
+
ifeq (cat,$(PLATFORM_CHANGE_SEPARATOR_CMD))
response = $(sourcefile)
else
-rm -f $(DESTDIR)$(PROGRAM_INSTALL_DIR)/$(base_prog) $(DESTDIR)$(PROGRAM_INSTALL_DIR)/$(base_prog).mdb
clean-local:
- -rm -f *.exe $(BUILT_SOURCES) $(executable_CLEAN_FILES) $(CLEAN_FILES)
+ -rm -f $(executable_CLEAN_FILES) $(CLEAN_FILES)
test-local: $(PROGRAM)
@:
$(PROGRAM_COMPILE) /target:exe /out:$(base_prog) $(BUILT_SOURCES) $(EXTRA_SOURCES) @$(response)
ifneq ($(base_prog),$(PROGRAM))
mv $(base_prog) $(PROGRAM)
+ -mv $(base_prog).mdb $(PROGRAM).mdb
endif
ifdef PROGRAM_config
ifneq ($(base_prog_config),$(PROGRAM_config))
+executable_CLEAN_FILES += $(PROGRAM_config)
$(PROGRAM_config): $(base_prog_config)
cp $(base_prog_config) $(PROGRAM_config)
endif
# in the MONO_PATH too).
ifdef PLATFORM_MONO_NATIVE
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/net_1_1_bootstrap:$$MONO_PATH" $(RUNTIME) $(topdir)/class/lib/net_1_1_bootstrap/mcs.exe
MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE):$$MONO_PATH" $(INTERNAL_MCS)
MBAS = MONO_PATH="$(topdir)/class/lib/$(PROFILE):$$MONO_PATH" $(INTERNAL_MBAS)
else
# -*- makefile -*-
-#BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/basic:$$MONO_PATH" $(INTERNAL_MCS)
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/basic:$$MONO_PATH" $(RUNTIME) $(topdir)/class/lib/basic/mcs.exe
MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE):$$MONO_PATH" $(INTERNAL_MCS)
MBAS = MONO_PATH="$(topdir)/class/lib/$(PROFILE):$$MONO_PATH" $(INTERNAL_MBAS)
# -*- makefile -*-
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/net_2_0_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
# nuttzing!
profile-check:
+ @:
PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0
FRAMEWORK_VERSION = 2.0
# Note that we're using the .NET 1.1 MCS but MONO_PATH points to the net_2_0_bootstrap directory.
# We do it this way to get assembly version references right.
#
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/default$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_MCS)
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/default$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(topdir)/class/lib/default/mcs.exe
MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_MCS)
-profile-check:
- @:
+profile-check:
+
+all-local: $(topdir)/class/lib/$(PROFILE)/mcs.exe $(topdir)/class/lib/$(PROFILE)/mcs.exe.config
+
+$(topdir)/class/lib/$(PROFILE)/mcs.exe: $(topdir)/class/lib/default/mcs.exe
+ cp $< $@
+
+$(topdir)/class/lib/$(PROFILE)/mcs.exe.config: $(topdir)/gmcs/gmcs.exe.config
+ cp $< $@
PROFILE_MCS_FLAGS = -d:NET_1_1 -d:BOOTSTRAP_NET_2_0
FRAMEWORK_VERSION = 2.0
NO_SIGN_ASSEMBLY = yes
+
+clean-local: clean-profile
+
+clean-profile:
+ rm -f $(topdir)/class/lib/$(PROFILE)/mcs.exe
+ rm -f $(topdir)/class/lib/$(PROFILE)/mcs.exe.config
INSTALL_BIN = $(INSTALL) -m 755
INSTALL_LIB = $(INSTALL_BIN)
MKINSTALLDIRS = $(SHELL) $(topdir)/mkinstalldirs
-INTERNAL_MCS = $(RUNTIME) $(topdir)/mcs/mcs.exe
+INTERNAL_MCS = $(RUNTIME) $(topdir)/class/lib/$(PROFILE)/mcs.exe
INTERNAL_MBAS = $(RUNTIME) $(topdir)/mbas/mbas.exe
INTERNAL_GMCS = $(RUNTIME) $(topdir)/gmcs/gmcs.exe
INTERNAL_ILASM = $(RUNTIME) $(topdir)/ilasm/ilasm.exe
+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (DIST_PROFILES): New.
+ (dist-local): Create profile-specific directories in the tarball.
+
2004-11-12 Martin Baulig <martin@ximian.com>
* Makefile (SUBDIRS): Added Mono.C5.
all-local $(STD_TARGETS:=-local):
@:
+DIST_PROFILES = basic net_1_1_bootstrap default net_2_0_bootstrap net_2_0
+
dist-local: dist-default
- -$(MKINSTALLDIRS) $(distdir)/lib
+ -$(MKINSTALLDIRS) $(distdir)/lib $(DIST_PROFILES:%=$(distdir)/lib/%)
+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (USE_BOOT_COMPILE): Re-organize to use BOOT_COMPILE
+ during the first pass.
+ (BOOTSTRAP_MCS): Use mscorlib.dll from the net_2_0 profile.
+
2004-11-18 Lluis Sanchez Gual <lluis@novell.com>
* System.dll.sources: Added new files:
System.ComponentModel.Design/Changelog \
Test/test-config-file
-ifdef USE_BOOT_COMPILE
-LIBRARY_COMPILE = $(BOOT_COMPILE)
+lib_file := $(wildcard ../lib/$(PROFILE)/System.dll)
+ifndef lib_file
+USE_BOOT_COMPILE = yes
endif
-ifeq (net_2_0,$(PROFILE))
-
-lib_file := $(wildcard ../lib/net_2_0/System.dll)
-ifndef lib_file
-MCS = MONO_PATH="$(topdir)/class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/net_2_0_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
+ifeq (net_2_0, $(PROFILE))
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/net_2_0_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
endif
+ifdef USE_BOOT_COMPILE
+LIBRARY_COMPILE = $(BOOT_COMPILE)
endif
ifndef CYCLIC_DEP_FILE
+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (LIBRARY_COMPILE): Simplify.
+
2004-10-29 Raja R Harinath <rharinath@novell.com>
* Makefile: Move support for building net_2_0_bootstrap libraries
$(plattestlib).excludes \
Test/ms_run_test.sh
-ifeq (net_2_0, $(PROFILE))
-# Net 2.0 corlib is built with in-tree 'gmcs'
-gmcs = $(topdir)/gmcs/gmcs.exe
-
-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
LIBRARY_COMPILE = $(BOOT_COMPILE)
-endif
include ../../build/library.make
+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (gmcs.exe): Update to new location of bootstrap mcs.exe.
+
2004-11-17 Raja R Harinath <rharinath@novell.com>
* typemanager.cs (TypeHandle.GetTypeHandle): Make private.
cd .. && $(MAKE) PROFILE=net_2_0_bootstrap all
gmcs.exe: $(all_sources) $(bootstrap_libfiles)
- MONO_PATH="../class/lib/net_2_0_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" mono ../mcs/mcs.exe $(DEBUG_FLAGS) -2 /target:exe /debug /out:$@ $(all_sources)
+ MONO_PATH="../class/lib/net_2_0_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(topdir)/class/lib/net_2_0_bootstrap/mcs.exe $(DEBUG_FLAGS) -2 /target:exe /debug /out:$@ $(all_sources)
gmcs2.exe: $(all_sources)
MONO_PATH="../class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" time mcs -2 /target:exe /debug /out:$@ $^ $(DEBUG_FLAGS)
+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (EXTRA_DISTFILES): Remove mcs.exe.config. It's
+ automatically handled by executable.make.
+ (PROGRAM): Make profile-specific.
+
2004-11-18 Marek Safar <marek.safar@seznam.cz>
* expression.cs (DoResolveBase): Fixed wrong warning for out\r
compiler.doc \
compiler.sln \
cs-parser.jay \
- mcs.exe.config \
NOTES \
TODO
-PROGRAM = mcs.exe
+PROGRAM = $(topdir)/class/lib/$(PROFILE)/mcs.exe
PROGRAM_COMPILE = $(BOOT_COMPILE)
PROGRAM_INSTALL_DIR = $(prefix)/lib/mono/1.0
btest: mcs2.exe mcs3.exe
ls -l mcs2.exe mcs3.exe
-mcs2.exe: mcs.exe
- $(TIME) $(RUNTIME) ./mcs.exe $(USE_MCS_FLAGS) /target:exe /out:$@ $(BUILT_SOURCES) @$(response)
+mcs2.exe: $(PROGRAM)
+ $(TIME) $(RUNTIME) $(PROGRAM) $(USE_MCS_FLAGS) /target:exe /out:$@ $(BUILT_SOURCES) @$(response)
mcs3.exe: mcs2.exe
$(TIME) $(RUNTIME) ./mcs2.exe $(USE_MCS_FLAGS) /target:exe /out:$@ $(BUILT_SOURCES) @$(response)
# we need this because bash tries to use its own crappy timer
FRIENDLY_TIME = $(shell which time) -f'%U seconds'
-do-time : mcs.exe
+do-time : $(PROGRAM)
@ echo -n "Run 1: "
@ rm -f mcs2.exe
@ $(MAKE) TIME="$(FRIENDLY_TIME)" mcs2.exe > /dev/null || (echo FAILED; exit 1)
do-corlib:
@ echo -n "corlib: "
@ rm -f ../class/lib/mscorlib.dll
- @ cd ../class/corlib ; $(MAKE) BOOTSTRAP_MCS="$(FRIENDLY_TIME) mono ../../mcs/mcs.exe" > /dev/null || (echo FAILED; exit 1)
+ @ cd ../class/corlib ; $(MAKE) BOOTSTRAP_MCS='$(FRIENDLY_TIME) mono $$(topdir)/class/lib/$(PROFILE)/mcs.exe' > /dev/null || (echo FAILED; exit 1)
PROFILER=default
-profile : mcs.exe
- $(RUNTIME) --profile=$(PROFILER) ./mcs.exe $(USE_MCS_FLAGS) /target:exe /out:mcs2.exe $(BUILT_SOURCES) @$(response)
+profile : $(PROGRAM)
+ $(RUNTIME) --profile=$(PROFILER) $(PROGRAM) $(USE_MCS_FLAGS) /target:exe /out:mcs2.exe $(BUILT_SOURCES) @$(response)