[Mono-dev] the draft of GSoC Proposal for FreshBuild

=?GB2312?B?U2hhcnAgQmxhZGXO3rrx1q7I0A==?= sharper.than.bladez at gmail.com
Tue Apr 5 09:59:52 EDT 2011

Here's my the draft of GSoC Proposal for FreshBuild,would there be
anyone like to be my mentor ?


GSoC Proposal for FreshBuild

Personal Information

Name: Jiacheng Jiang (Sharper than Blade)
Email: sharper.than.bladez at gmail.com

FreshBuild : Add MSVC and GCC Supprot to XBuild/MSBuild and Translate
Makefiles to MSBuild Project Files


    This project is  to improve the XBuild so as to provide MSVC and
GCC support and translate makefiles to MSBuild project files.It is
intended to simplify the building process on both the Windows and
Linux platform and cut down building  problems.Also,many opensource
projects would benefit from the MSVC compiler in   performance, which
can usually produce faster bytecode.FreshBuild is based on XBuild and
would eventually merged into it.

Benefits to the Mono and other Open Source Communities

    Mono is made up of C++ and C# source code ,and ,just like many
other opensource projects, it currently use GNU Make to build
itself,including compiling,generating docs and running unit tests.It
also provides XBuild,the counterpart of MSBuild,to build C# projects
.However ,it has fallen behind since the MSBuild 4 has been updated to
support VC++ compiler,which unified the building process on windows

    Building is not easy.Many opensource softwares are mostly
targeting on Linux,such as ruby ,nginx,memcached and so on. To build
those softwares on Windows,you have to install Cygwin and use GCC,even
though the MSVC compiler is available.And to take the advantage of
GCC,you have to use GNU Make,which requires you to write
makefiles.While Java and .Net developers would prefer to some easy to
use ,more advanced and XML based build systems , such as Ant,Maven and
MSBuild.I really hope to develop a makefile to MSBuild project file
translator to migrate the GNU Make based projects,which would help me
to get rid of those makefiles.Mono would then be able to be built by

    1.A MSBuild extension to support MSVC on windows,which is the same
as the official one .
    2.A MSBuild extension to support GCC on both Windows and Linux
    3.A makefile translator.
    4.A visualizing tool to edit MSBuild project files
    5.A build server for FreshBuild
    6.Some docs ,some examples and a test suite.

    For such a project,I don't  have to worry about tests.So I would
take the ruby installer as my target.I'll translate its makefiles and
compile it with MSVC.

Project Details

    MSBuild is an Ant-like build system for Visual Studio,which
supports VB and C# and is very extendible.Ever since VS2010 and
MSBuild 4,it supports C++ projects.XBuild is the opensource edition of
MSBuild.I would start from XBuild,add MSVC and GCC support to it and
implent some missing features.It is not difficult,but it needs a lot
of tests. I would also provide a MSBuild project file editor,in

    As to the makefile translator ,It is a challenge for
me.However,Microsoft also provided a NMake(the previous MSVC build
tool) file to MSBuild   project file converter. Since the capacity of
MSBuild is a superset  of GNU Make and it's so easy to extend ,it is
possible to develop such a translator.I 'll write a makefile parser
,analyze the makefile structure ,do some replacement,and then generate
the XML form build scripts.I have some experience in developing a
compiler with Antlr.

Project Schedule

    I wouldn't wait for the summer vocation to start the
development,though I would be less active before it.And during the
development process, I am eager to communicate with my community

    My schedule is made up of 16 weeks,starting from April 8,

    Week 1-2 : Learn about the usage of MSBuild,go through the source
of XBuild and try to do extend it.Considering I have some experience
using and extending the MSBuild ,it wouldn't be a matter for me.

    Week 3-4 : Create sample VC++ projects for tests,and start to
develop the MSVC extension for XBuild.I just need to follow the
MSBuild api in MSDN ,still ,it would not be a matter to me.

    Week 5-7 : Create sample GCC projects from the  VC++ projects,dive
into the GCC Manual and try to compile some softwares by Cygwin.I have
to do a lot of reading,so it would cost a two weeks.And then I will
spend one week to develop the GCC extension .

    Week 9-10 : Study the GNU Make grammar and read through its
manual.Also I should do some experiments on it.

    Week 11-13 : Start writing the translator.I would write a lot of
unit tests and develop the parser with Antlr.And I need to solve a lot
of problems.Also,I need to try it on Linux.

    Week 14-15 : Develop the MSBuild Project file editor and build
server.If necessary ,I would also need to fix some bugs.

    Week 16 : Hunt bugs and get feedback from community users.


       MIT License


    I am a junior student in the South China University of
Technology.I have a lot of experience in C#,Java,PHP and Ruby.I have
great interest  in developing high performance compilers and
servers.I've wrote a Javafx-like language grammar and a matlab
language grammar with antlr.I like opensource softwares ,but sometimes
have problem in compiling,installing and fixing dependencies,which
costs me a lot of effort and makes me angry.So I came up with this

       Eligibility: In many ways,I am an eligible student.

More information about the Mono-devel-list mailing list