[Mono-devel-list] PATCH: monolite-bootstrap

Raja R Harinath rharinath at novell.com
Thu May 20 02:26:25 EDT 2004


Hi,

"Jaroslaw Kowalski" <jaak at zd.com.pl> writes:

> Hi guys!
>  
> I've developed a patch that provides 2 additional targets for
> bootstrapping mono: 
>  
> $ make monolite-bootstrap
[snip]  
> May I commit it ?

I don't know how you want to do it: I can work on 'make faststrap' and
hopefully check it in tomorrow, or monday.  If you want to have a
monolite-bootstrap before that, I guess you can check in something for
the time being.

> -.PHONY: tmpinst-dir tmpinst-runtime bootstrap stage1 stage2 stage3 stage1-mono stage1-mcs bootstrap-clean bootstrap-check
> +.PHONY: tmpinst-dir tmpinst-runtime bootstrap stage1 stage2 stage3 stage1-mono stage1-$(BOOTSTRAP_MODE) bootstrap-clean bootstrap-check

Just add stage1-monolite to this.  Don't use BOOTSTRAP_MODE here.

> +stage1-local-monolite: 
> +	rm -f $(mcs_topdir)/mcs/mcs.exe $(mcs_topdir)/class/lib/default/mscorlib.dll
> +	rm -f $(mcs_topdir)/class/lib/default/System.dll $(mcs_topdir)/class/lib/default/System.Xml.dll
> +	cd $(mcs_topdir)/jay && $(MAKE)
> +	rm -rf monolite_download
> +	mkdir monolite_download
> +	cd monolite_download && cp ../../monolite-latest.tar.gz . && tar zxvf monolite-latest.tar.gz
> +	cp monolite_download/monolite-*/*.dll $(mcs_topdir)/class/lib/default/
> +	cp monolite_download/monolite-*/mcs.exe $(mcs_topdir)/mcs/mcs.exe
> +	rm -rf monolite_download

OK.  Call this stage1-monolite.  But, once I put in 'make faststrap',
this'll become 'tmpinst-runtime', and can directly put stuff into
_tmpinst/lib.

>  # Use stage1 'mcs', 'mscorlib.dll' and 'System.dll' to build fuller versions
> @@ -77,6 +101,7 @@
>  	cd $$mcs_topdir/mcs && $(MAKE) PROFILE=default ; \
>  	cd $$mcs_topdir/class/corlib && $(MAKE) PROFILE=default ; \
>  	cd $$mcs_topdir/class/System && $(MAKE) PROFILE=default ; \
> +	cd $$mcs_topdir/class/System.XML && $(MAKE) PROFILE=default ; \
>  	cd $$mcs_topdir/class/Mono.CSharp.Debugger && $(MAKE) PROFILE=default
>  	$(MAKE) tmpinst-runtime

Re-run the build in System after System.XML.
  
> @@ -106,7 +131,7 @@
>  tmpinst-runtime:
>  	tmpinst=`cd _tmpinst && pwd` && \
>  	mv -f $(mcs_topdir)/mcs/mcs.exe $$tmpinst/lib && \
> -	mv -f $(mcs_topdir)/class/lib/default/mscorlib.dll $(mcs_topdir)/class/lib/default/System.dll $$tmpinst/lib && \
> +	mv -f $(mcs_topdir)/class/lib/default/mscorlib.dll $(mcs_topdir)/class/lib/default/System.dll $(mcs_topdir)/class/lib/default/System.Xml.dll $$tmpinst/lib && \
>  	if test -f $(mcs_topdir)/class/lib/default/Mono.CSharp.Debugger.dll; then \
>  	  mv -f $(mcs_topdir)/class/lib/default/Mono.CSharp.Debugger.dll $$tmpinst/lib ; else : ; fi

I think you need to put in a check for the existance of System.Xml.dll,
before moving it.

In the mcs/ tree:

> Index: Makefile
> ===================================================================
> RCS file: /cvs/public/mcs/Makefile,v
> retrieving revision 1.12
> diff -u -r1.12 Makefile
> --- Makefile	17 May 2004 08:52:42 -0000	1.12
> +++ Makefile	19 May 2004 10:43:06 -0000
> @@ -1,5 +1,5 @@
>  thisdir := .
> -SUBDIRS := build jay mcs class mbas nunit20 monoresgen ilasm tools tests errors docs
> +SUBDIRS := build jay mcs monoresgen class mbas nunit20 ilasm tools tests errors docs
>  OVERRIDE_BARE_TARGETS = hells yeah
>  include build/rules.make

Then, monoresgen has to be compiled with BOOT_COMPILE instead of
CSCOMPILE.  This may need some tinkering with build/executable.make.
  
> Index: build/profiles/default.make
> ===================================================================
> RCS file: /cvs/public/mcs/build/profiles/default.make,v
> retrieving revision 1.10
> diff -u -r1.10 default.make
> --- build/profiles/default.make	27 Apr 2004 06:00:57 -0000	1.10
> +++ build/profiles/default.make	19 May 2004 10:43:07 -0000
> @@ -20,6 +20,7 @@
>  else
>  MCS = $(PLATFORM_RUNTIME) $(BOOTSTRAP_MCS) /lib:$(topdir)/class/lib/$(PROFILE)
>  endif
> +RESGEN = MONO_PATH="$(topdir)/class/lib/$(PROFILE):$$MONO_PATH" $(RUNTIME) --debug $(topdir)/monoresgen/monoresgen.exe

To match the style of the rest, put

  INTERNAL_RESGEN = $(RUNTIME) $(topdir)/monoresgen/monoresgen.exe

in rules.make, and just use

  MONO_PATH=$(topdir)/class/lib/$(PROFILE):$$MONO_PATH $(INTERNAL_RESGEN) $<

in Npgsql/Makefile.

- Hari



More information about the Mono-devel-list mailing list