[Mono-devel-list] Build system

Ben Maurer bmaurer at users.sourceforge.net
Fri May 23 11:43:48 EDT 2003


Here is my best shot at this, remember, I am a build file newbie.

I think we should make a rule such as the following (this is in
pseudo-make, I said I was a newbie ;-)

%.dll : %/$CONFIG getCsFiles(%/$CONFIG))
makeargsfromconfigfile(%/$CONFIG, out.args)
mcs @out.args

We would make a config file for each type of build (linux, windows,
corcompare, etc). The file could look something like this:

<cut>
[DEFINES]
VERSION_1_1
PLATFORM_UNIX
ECMA_COMPAT

[REFERENCES]
corlib
System
System.Xml

[FLAGS]
/debug
/unsafe

[SOURCES_INCLUDE]
#INCLUDE ./src.inc
[SOURCES_EXCLUDE]
#INCLUDE ./src.inc
Platform/Windows/*.cs
</endcut>

We could then on the command line specify
make CONFIG=unix.bld

We could add a default in the makefile so that we didn't have to specify
the options every time.

Is it possible to do anything like this?

Sincerely,
Ben Maurer

-----Original Message-----
From: mono-devel-list-admin at lists.ximian.com
[mailto:mono-devel-list-admin at lists.ximian.com] On Behalf Of Miguel de
Icaza
Sent: Thursday, May 22, 2003 8:22 PM
To: mono-devel-list at ximian.com; peter at ximian.com
Subject: [Mono-devel-list] Build system

Hello everyone,

   Today on IRC we were discussing a few problems we have with the build
system.  The major one being that we have a dual build system: one with
nant for Windows and one with makefiles.

   The elements that come into play are:

	* The makefile.gnu system is pretty complete, and is only used
	  in Linux.  The toplevel `makefile' on the other hand is used
	  to drive the process: on Windows it does some make, and some
	  nant and on Linux it does the full process using makefile.gnu

	* The Nant system today is used to build not only the standard
	  classes, but also versions of the library for use in
	  CorCompare.

	* We need a mechanism to pass a set of defines.  The problem
	  arised when we tried to target both .NET 1.0 and .NET 1.1
	  APIs, but this problem will repeat when we target the
	  CompactFramework and the ECMA-only builds.

	  Maintaining two places with defines just does not work.

   What I would like to do is:

	* Move the whole build system to the makefile.gnu setup, and
	  drop entirely nant, and the toplevel makefile.

	* Rename `makefile.gnu' everywhere to `makefile', so the process
	  becomes just `make' instead of the old `make -f makefile.gnu'

	* We need probably help from Peter here, but I want to be able
	  to define at the toplevel a set of MCS flags to pass, like:
	  -d:CORE -d:NET_1_1, etc.  

   Thoughts?

Miguel


-- 
Miguel de Icaza <miguel at ximian.com>
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list at lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list




More information about the Mono-devel-list mailing list