[Ironruby-core] Very Very initial CMake support

Tomas Matousek Tomas.Matousek at microsoft.com
Wed Nov 3 21:42:03 EDT 2010


Which directories do you have on mind? I only see a single csproj file here

https://github.com/ironruby/ironruby/tree/8acfd2f7e6c6a7e5484a8141c84065ec269aab62/Languages/Ruby/Ruby

There are two here:
https://github.com/ironruby/ironruby/tree/8acfd2f7e6c6a7e5484a8141c84065ec269aab62/Languages/Ruby/Console

one set up to build 32bit only exe and the other with AnyPlatform (64bit on 64bit machines).

If you see *.build.csproj files somewhere let me know. Those were part of an internal Microsoft infrastructure and should have been deleted, but maybe I missed some.

Tomas

From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Andrius Bentkus
Sent: Wednesday, November 03, 2010 5:16 PM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] Very Very initial CMake support


On Wed, Nov 3, 2010 at 7:56 PM, Tomas Matousek <Tomas.Matousek at microsoft.com<mailto:Tomas.Matousek at microsoft.com>> wrote:
Please don't add yet another build system.

I completely agree with that, though I'm interested why there are 3 sets of all csproj in every project directory? As far

Generating .csproj files is not the right way to go. The project files are and should be the primary metadata storage for the build system. If you work in VS and add a new file VS will add it into csproj.
If you would like to build some packages (like rpms) you can write a .proj file that does that. Like we do for building .msis (see Msi\Installer.proj). If there is something msbuild/xbuild doesn't support you can write a custom task that does that.
If there is some bug in xbuild that prevents you to do what you need the bug needs to be fixed in xbuild.

Other than supporting packages, what's exactly is the scenario that doesn't work today that you want to support? I don't understand what do you mean by "Allows multiple (as many as you want) out of tree builds ...". Can you be more specific?

Tomas

-----Original Message-----
From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org> [mailto:ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>] On Behalf Of Alistair Bush
Sent: Wednesday, November 03, 2010 11:18 AM
To: ironruby-core at rubyforge.org<mailto:ironruby-core at rubyforge.org>
Subject: Re: [Ironruby-core] Very Very initial CMake support

> Having multiple building systems is counterproductive, it's hard to
> maintain all of them.
>

In General I agree. thats is why ultimately I would like cmake to support
creating of csproj files.   That would need to be implemented,  but has already
been proven possible by cmakes other VS proj support.

For this project I don't believe that maintaining cmake will be all that difficult.  it supports wildcards (Dir/*.cs) when selecting which files to build which means that in most cases no changes will need to be made.  There is an exception to this which im planning on raising in a separate thread.
Currently that work I have done with cmake has encountered a large number of
"abandoned" files within the repo.   It seems these classes have been migrated
into System.* but only removed from the proj file.   This is really really
messy.

> Is cmake using xbuild to buil the dlls or does it all the file linking
> by itself?

Nope it calls the compiler directly.   Sadly I think it would be very difficult
to maintain xbuild to do what I want it to do.  Ultimately we need to get the Runtime/ directory out of the tree (or at least make linking against it optional).  There are also other benefits.

* It also makes pkg-config support very easy.
* Allows multiple (as many as you want) out of tree builds so that you can for example run tests on standard debug build as well as a silverlight build simultaneously.  You also don't have to be constantly switch configs. you can easy target multiple versions of mono/.NET etc etc etc.
* supports creating of debs and rpms directly.

>
> On Wed, Nov 3, 2010 at 11:54 AM, Alistair Bush <ali_bush at gentoo.org<mailto:ali_bush at gentoo.org>> wrote:
> > I have started playing around with cmake to see whether it could help out
> > iron* and dlr.  I have therefore started implementing CMake makefiles to
> > build
> > the dlr (Runtime) part of ironruby, install those dlls into the gac and
> > generate *.pc files for them.  I have tested it on mono-2.8 (requires
> > mono-2.8)
> > and am aware that windows .NET support is broken (but very possible)
> >
> > cmake also supports creating deb's and rpm's which will be done in the
> > future
> > hopefully.  The potential is also there for it to generate csproj files
> > (already supports other VS file types)
> >
> > To play around with it
> >
> > git clone git://github.com/alistair/ironruby.git<http://github.com/alistair/ironruby.git>
> > mkdir build
> > mkdir install
> > cd build  (out of tree builds,   oh how I love them )
> > cmake ../repo/Runtime/
> > make
> > make DESTDIR=../install install
> >
> >
> > After this you should have
> >
> > install $ find
> > .
> > ./usr
> > ./usr/lib64
> > ./usr/lib64/mono
> > ./usr/lib64/mono/Microsoft.Scripting.Metadata
> >
> > ./usr/lib64/mono/Microsoft.Scripting.Metadata/Microsoft.Scripting.Metadat
> > a.dll ./usr/lib64/mono/Microsoft.Dynamic
> > ./usr/lib64/mono/Microsoft.Dynamic/Microsoft.Dynamic.dll
> > ./usr/lib64/mono/Microsoft.Scripting
> > ./usr/lib64/mono/Microsoft.Scripting/Microsoft.Scripting.dll
> > ./usr/lib64/mono/Microsoft.Scripting.Core
> > ./usr/lib64/mono/Microsoft.Scripting.Core/Microsoft.Scripting.Core.dll
> > ./usr/lib64/mono/gac
> > ./usr/lib64/mono/gac/Microsoft.Scripting.Metadata
> >
> > ./usr/lib64/mono/gac/Microsoft.Scripting.Metadata/1.1.0.10__7f709c5b71357
> > 6e1
> >
> > ./usr/lib64/mono/gac/Microsoft.Scripting.Metadata/1.1.0.10__7f709c5b71357
> > 6e1/Microsoft.Scripting.Metadata.dll
> > ./usr/lib64/mono/gac/Microsoft.Dynamic
> > ./usr/lib64/mono/gac/Microsoft.Dynamic/1.1.0.10__7f709c5b713576e1
> >
> > ./usr/lib64/mono/gac/Microsoft.Dynamic/1.1.0.10__7f709c5b713576e1/Microso
> > ft.Dynamic.dll ./usr/lib64/mono/gac/Microsoft.Scripting
> > ./usr/lib64/mono/gac/Microsoft.Scripting/1.1.0.10__7f709c5b713576e1
> >
> > ./usr/lib64/mono/gac/Microsoft.Scripting/1.1.0.10__7f709c5b713576e1/Micro
> > soft.Scripting.dll ./usr/lib64/mono/gac/Microsoft.Scripting.Core
> > ./usr/lib64/mono/gac/Microsoft.Scripting.Core/1.1.0.10__7f709c5b713576e1
> >
> > ./usr/lib64/mono/gac/Microsoft.Scripting.Core/1.1.0.10__7f709c5b713576e1/
> > Microsoft.Scripting.Core.dll ./usr/local
> > ./usr/local/lib
> > ./usr/local/lib/pkgconfig
> > ./usr/local/lib/pkgconfig/microsoft.scripting.metadata.pc
> > ./usr/local/lib/pkgconfig/microsoft.scripting.core.pc
> > ./usr/local/lib/pkgconfig/microsoft.dynamic.pc
> > ./usr/local/lib/pkgconfig/microsoft.scripting.pc
> >
> > still lots of work to do,   but hopefully you enjoy.
> >
> > Alistair.
> > _______________________________________________
> > Ironruby-core mailing list
> > Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
> > http://rubyforge.org/mailman/listinfo/ironruby-core
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core

_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20101104/22f4eea7/attachment.html>


More information about the Ironruby-core mailing list