[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