[Mono-devel-list] Features of the new MCS build system

Peter Williams peter at newton.cx
Mon Jul 14 19:36:37 EDT 2003


Hey everyone,

	[This may be a double post]

	To follow up on Gonzalo's commit of the new build system, here I am to
run down the new features. The most important point is:

	* I probably broke lots of stuff. If you lost a beloved target or
something isn't working right, email me and I'll fix it. Most developers
shouldn't have to worry about Makefiles, so I don't want to waste
everyone's time with weird new problems. I'll try and hang out in #mono
(peterw) tonight, so you can talk to me there if something is wacky.

Anyway, here are some of the goodies in the new build system:

	* Unified build system for Windows and Linux. Windows is still fairly
untested, but "should work." Unfortunately I don't have a Windows
machine to test on, but Gonzalo can get corlib to build I think and
that's about as complicated as it gets.

	* Profile support. 'make PROFILE=profilename' or 'export
PROFILE=profilename ; make' will work. Profiles are defined in
build/profiles/profilename.make ; right now there isn't too much going
on. The 'bootstrap' profile will build the way makefile.gnu did on
Linux, by setting MONO_PATH and using mcs/mcs.exe; the default profile
will build against the existing system libraries and compile with 'mcs',
which should reduce a lot of 'corlib out of sync' warnings.

	* Important variables are shared among makefiles now; you can edit
build/config.make (see build/config-default.make for a template) and
give global settings, or just have a much saner time of writing new
makefiles.

	* Response files, stamps, and other build trivia now all land in
build/deps/, making the library build directories cleaner.

	* Test libraries now live in class/Library/Library_test.dll, not
class/Library/Test. 'make test' will build the test DLL, 'make run-test'
will actually run the nunit tests. Set the variable TEST_HARNESS to run
with a program other than nunit-console (for example, nunit-gtk).

	* Standardized recursive targets: all, clean, install, test, run-test.
Read build/README.makefiles for definitions of what they should do

	* (Relatively) sane 'make dist' target; 'make distcheck' support; cute
'make monocharge' and 'make monocharge-lite' targets. They're made
possible because 'make install' now supports DESTDIR a la automake,
which I'm sure someone cares about.

	That's all I can think of at the moment. If there are any problems,
please tell me; I'm more than willing to fix them.

	Share and enjoy,
		Peter

-- 
Peter Williams                          peter at newton.cx

"[Ninjas] are cool; and by cool, I mean totally sweet."
                              -- REAL Ultimate Power




More information about the Mono-devel-list mailing list