Skip to content

Instantly share code, notes, and snippets.

@sharper-than-blade
Created April 6, 2011 08:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sharper-than-blade/905344 to your computer and use it in GitHub Desktop.
Save sharper-than-blade/905344 to your computer and use it in GitHub Desktop.
GSoC Proposal for FreshBuild
Here's my the draft of GSoC Proposal for FreshBuild.
I'd welcome any feedbacks and anyone who would like to be my mentor.
And I need a more impressive name for this ambitious project.
=========================================================================
FreshBuild : Add MSVC and GCC Supprot to XBuild/MSBuild and Translate Makefiles to MSBuild project Files
Jiacheng Jiang (sharper than blade)
# Contact Information:
Email: sharper.than.bladez@gmail.com
Google ID: sharper.than.bladez
IRC: Sharp
# Abstract:
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 and cut down building problem on both the Windows and Linux platforms.Also,many opensource projects would benefit from the MSVC compiler in performance, which can usually produce faster bytecode than GCC.FreshBuild is based on XBuild and would eventually merged back into it.
# Benefits:
Building is not easy.Many opensource softwares are based on the GNU tool chain,which use makefiles as their build scripts. To build those softwares on Windows,you have to install Cygwin to use GCC and Make,even though the MSVC compiler is available.And to use GNU Make,you have 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, which is a lot more friendly to us.In my own experience, I often get mad when I am required to install GCC and a lot of other compile tools while installing a small Ruby gem in Windows.
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 platform.This project would help Mono to build itself with XBuild on both Windows and Linux.So you do not have to worry about Cygwin when you are in Windows.
To migrate the GNU Make based projects ,I really hope to develop a makefile to MSBuild project file translator ,which would help me to get rid of those makefiles.I have been planning this for years,especially every time building problem occurs.
# Deliverables:
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 (which is less important)
5.A build server for FreshBuild (which is also less important)
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 compiling the ruby installer as my goal.I shall translate its makefiles and compile it with MSVC in the end.
# Project Details:
Some Backgrounds:
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 implement some missing features if necessary.It is not difficult,but it needs a lot of tests.
-- I would also provide a MSBuild project file editor and a build server if possible.It may be developed in WinForms, Silverlight/Moonlight or HTML.If time is not enough,I would cancel this.
-- 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,it would help.
-- All code will be hosted on a GitHub repository. Once the project is finished, it will be merged back into XBuild.It would be writen in C#.
-- MSDN would be the best document for this project, so my document would focus on the Linux cases. I would also provide some GCC samples.
-- As I mentioned before, the final goal of this project would be compiling the Windows Ruby installer with MSVC.
-- The development process is divided into multiple stages and during each stage it is mostly iterative and test-driven .I will firstly do some experiments,read the manual ,make up the test suit and then try to pass it.At last I would fix the remaining bugs.
# 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 users.
My schedule is made up of 14 weeks,started soon after from April 8,
Week 1 : 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 2-3 : 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 4-6 : 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 two weeks.And then I will spend one week to develop the GCC extension .And I would also try GNU Make.
Week 7 : Study the GNU Make grammar and read through its manual.Also I should do some experiments on it.
Week 8-11 : 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 12-13 : Develop the MSBuild Project file editor and build server.If necessary ,I would also need to fix some bugs.
Week 14 : Hunt bugs and get feedback from community users.
# License:
MIT License
# Bio:
I am a junior student in the South China University of Technology.This is my first Google Summer of Code Project. I learnt computer programming (in Delphi) since my junior high school time.I have a lot of experience in C#,Java,PHP and Ruby.I have great interest in developing advanced compilers and high performance 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 project.
# Eligibility:
In many ways,I am an eligible student.I can provide identification if required.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment