X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fgmcs%2FMakefile;h=7441b40b117eb045c8bbeab093bd21f8f20dfbee;hb=f17c109a6708ed85816f98862d81fe051a01f165;hp=096bece45ae3fa88dbb3fcb4155d4bb26682878f;hpb=c427b1c4e02a50b40d0456163bcddcb98a1c24d0;p=mono.git diff --git a/mcs/gmcs/Makefile b/mcs/gmcs/Makefile index 096bece45ae..7441b40b117 100644 --- a/mcs/gmcs/Makefile +++ b/mcs/gmcs/Makefile @@ -2,76 +2,59 @@ thisdir := gmcs SUBDIRS := include ../build/rules.make -COMPILER_SOURCES = \ - AssemblyInfo.cs \ - anonymous.cs \ - assign.cs \ - attribute.cs \ - driver.cs \ - cs-tokenizer.cs \ - cfold.cs \ - class.cs \ - codegen.cs \ - const.cs \ - constant.cs \ - convert.cs \ - decl.cs \ - delegate.cs \ - enum.cs \ - ecore.cs \ - expression.cs \ - flowanalysis.cs \ - generic.cs \ - interface.cs \ - iterators.cs \ - literal.cs \ - location.cs \ - modifiers.cs \ - namespace.cs \ - parameter.cs \ - pending.cs \ - report.cs \ - rootcontext.cs \ - statement.cs \ - support.cs \ - typemanager.cs \ - symbolwriter.cs \ - tree.cs - -all_sources = $(COMPILER_SOURCES) cs-parser.cs - -DISTFILES = \ - $(COMPILER_SOURCES) \ - compiler.csproj \ - compiler.csproj.user \ - compiler.doc \ - compiler.sln \ - cs-parser.jay \ - mcs.exe.config \ - NOTES \ - TODO +#uncomment to enable some debug stuff +#DEBUG_FLAGS=/define:MCS_DEBUG +LOCAL_MCS_FLAGS += -d:GMCS_SOURCE + +BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/net_2_0_bootstrap$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/net_2_0_bootstrap/mcs.exe $(DEBUG_FLAGS) + +BUILT_SOURCES = cs-parser.cs + +EXTRA_DISTFILES = cs-parser.jay + +PROGRAM = $(topdir)/class/lib/$(PROFILE)/gmcs.exe +PROGRAM_COMPILE = $(BOOT_COMPILE) + +CLEAN_FILES = y.output *.exe *.mdb + +cs-parser.cs: cs-parser.jay $(topdir)/jay/skeleton.cs + $(topdir)/jay/jay -ctv < $(topdir)/jay/skeleton.cs $< > jay-tmp.out && mv jay-tmp.out $@ + +include ../build/executable.make + +ifeq (net_2_0, $(PROFILE)) +# Utility rule to make debugging somewhat easier. all-local: gmcs.exe +gmcs.exe: $(PROGRAM) + cp -p $< $@ + test ! -f $<.mdb || cp -p $<.mdb $@.mdb +endif -install-local: gmcs.exe - $(MKINSTALLDIRS) $(DESTDIR)$(prefix)/bin - $(INSTALL_BIN) gmcs.exe $(DESTDIR)$(prefix)/bin +clean-local: clean-net_2_0_bootstrap +clean-net_2_0_bootstrap: + cd .. && $(MAKE) PROFILE=net_2_0_bootstrap clean -uninstall-local: - -rm -f $(DESTDIR)$(prefix)/bin/mcs.exe +bootstrap_libs = mscorlib.dll System.dll System.Xml.dll Mono.CompilerServices.SymbolWriter.dll +bootstrap_libfiles = $(bootstrap_libs:%=$(topdir)/class/lib/net_2_0_bootstrap/%) -test-local run-test-local: +$(bootstrap_libfiles): bootstrap-libs + @: +.PHONY: bootstrap-libs +bootstrap-libs: + cd .. && $(MAKE) PROFILE=net_2_0_bootstrap all -clean-local: - rm -f *.exe *.pdb cs-parser.cs y.output +$(PROGRAM): $(bootstrap_libfiles) -dist-local: dist-default +gmcs2.exe: $(PROGRAM) + MONO_PATH="../class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" time $(PROGRAM) -2 /target:exe /debug /out:$@ $^ $(DEBUG_FLAGS) -gmcs.exe: $(all_sources) - $(BOOT_COMPILE) /target:exe /out:$@ $^ +gmcs3.exe: gmcs2.exe + MONO_PATH="../class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" time $(RUNTIME) $(RUNTIME_FLAGS) ./gmcs2.exe $(USE_MCS_FLAGS) $(DEBUG_FLAGS) -2 /target:exe /debug /out:$@ $^ + +gmcs4.exe: gmcs3.exe + MONO_PATH="../class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" time $(RUNTIME) $(RUNTIME_FLAGS) ./gmcs3.exe $(USE_MCS_FLAGS) $(DEBUG_FLAGS) -2 /target:exe /debug /out:$@ $^ -cs-parser.cs: cs-parser.jay $(topdir)/jay/skeleton.cs - $(topdir)/jay/jay -ctv < $(topdir)/jay/skeleton.cs $< >$@ # Testing targets @@ -80,20 +63,14 @@ TIME = # This used to be called test, but that conflicts with the global # recursive target. -btest: mcs2.exe mcs3.exe - ls -l mcs2.exe mcs3.exe - -mcs2.exe: gmcs.exe - $(TIME) $(RUNTIME) ./gmcs.exe $(USE_MCS_FLAGS) /target:exe /out:$@ $(all_sources) - -mcs3.exe: mcs2.exe - $(TIME) $(RUNTIME) ./mcs2.exe $(USE_MCS_FLAGS) /target:exe /out:$@ $(all_sources) +btest: gmcs2.exe gmcs3.exe gmcs4.exe + ls -l gmcs3.exe gmcs4.exe wc: wc -l $(all_sources) ctest: - -rm mcs2.exe mcs3.exe + rm -f gmcs3.exe mcs4.exe make btest USE_MCS_FLAGS= # we need this because bash tries to use its own crappy timer @@ -101,9 +78,9 @@ FRIENDLY_TIME = $(shell which time) -f'%U seconds' do-time : mcs.exe @ echo -n "Run 1: " - $(FRIENDLY_TIME) $(RUNTIME) ./mcs.exe $(USE_MCS_FLAGS) /target:exe /out:mcs2.exe $(all_sources) > /dev/null || (echo FAILED; exit 1) + $(FRIENDLY_TIME) $(RUNTIME) $(RUNTIME_FLAGS) ./mcs.exe $(USE_MCS_FLAGS) /target:exe /out:mcs2.exe $(all_sources) > /dev/null || (echo FAILED; exit 1) @ echo -n "Run 2: " - @ $(FRIENDLY_TIME) $(RUNTIME) ./mcs2.exe $(USE_MCS_FLAGS) /target:exe /out:mcs3.exe $(all_sources) > /dev/null || (echo FAILED; exit 1) + @ $(FRIENDLY_TIME) $(RUNTIME) $(RUNTIME_FLAGS) ./mcs2.exe $(USE_MCS_FLAGS) /target:exe /out:mcs3.exe $(all_sources) > /dev/null || (echo FAILED; exit 1) @ 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) @@ -115,8 +92,7 @@ do-corlib: PROFILER=default -profile : mcs.exe - $(RUNTIME) --profile=$(PROFILER) ./mcs.exe $(USE_MCS_FLAGS) /target:exe /out:mcs2.exe $(all_sources) +profile : gmcs2.exe + -rm -f gmcs3.exe + make gmcs3.exe RUNTIME_FLAGS='--profile=$(PROFILER)' -response: - echo $(all_sources) > res