November 23, 2010
Russel Winder, el 22 de noviembre a las 19:10 me escribiste:
> On Mon, 2010-11-22 at 16:41 +0000, Manfred_Nowak wrote:
> > Russel Winder wrote:
> > 
> > > but it has come to the end of its useful life
> > 
> > why. I ask because I just realized, that llvm still uses it.
> 
> For really small systems compiled on a single platform, Make can still "cut it".  But being an external DSL, the separation of relationship specification notation and action notation, and especially the platform specific action notation lead to insurmountable problems.  Go is trying to persevere with Make but the cracks show readily.  Also Make shows the cracks for large projects, it doesn't really scale.

False.

> Autotools was a brave attempt to make Make make big projects for Posix-compliant platforms.  CMake is a bold attempt to ensure Make

Automake is one of the biggest mistakes *ever*.

> handles things in a more platform independent way.  Autotools is, I think also reaching the end of its useful life -- it was an immense bit of m4 hackery, and deserves respect, just as Make does.

There is no point of comparison between Make and Autotools, Autotools is a huge hack. Make is limited in scope, but it does what it's supposed to do extremely well.

> The alternative to all this is to use an internal DSL, i.e. use a programming language directly.  SCons and Waf plough this furrow -- to name but the main two in a C, C++, D, LaTeX context.  SCons and Waf both suffer some serious issues, but they are the current market leaders for a more modern system.

I tried quite a few build systems for a big project (cmake, waf, aap, scons, omake) and all had their own issues and specially limitations. Eventually I decided to learn Make seriously, wrote a good Makefile and never looked back...

Make can be very hard to learn, specially because people tend to use it wrongly and there are very few good examples and tutorials/docs.

PS: I'm really talking about GMake :)

-- 
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
- Los romanos no tenían paz, loco... Necesitaban un poco de chala...
November 23, 2010
Leandro Lucarella wrote:
> Make can be very hard to learn, specially because people tend to use it
> wrongly and there are very few good examples and tutorials/docs.
> 
> PS: I'm really talking about GMake :)

Gmake != make.
That I would say is the #1 problem with make. It has 200 different incompatible dialects.


November 23, 2010
Leandro Lucarella wrote:

> Russel Winder, el 22 de noviembre a las 19:10 me escribiste:
>> On Mon, 2010-11-22 at 16:41 +0000, Manfred_Nowak wrote:
>> > Russel Winder wrote:
>> > 
>> > > but it has come to the end of its useful life
>> > 
>> > why. I ask because I just realized, that llvm still uses it.
>> 
>> For really small systems compiled on a single platform, Make can still "cut it".  But being an external DSL, the separation of relationship specification notation and action notation, and especially the platform specific action notation lead to insurmountable problems.  Go is trying to persevere with Make but the cracks show readily.  Also Make shows the cracks for large projects, it doesn't really scale.
> 
> False.
> 
>> Autotools was a brave attempt to make Make make big projects for Posix-compliant platforms.  CMake is a bold attempt to ensure Make
> 
> Automake is one of the biggest mistakes *ever*.
> 
>> handles things in a more platform independent way.  Autotools is, I think also reaching the end of its useful life -- it was an immense bit of m4 hackery, and deserves respect, just as Make does.
> 
> There is no point of comparison between Make and Autotools, Autotools is a huge hack. Make is limited in scope, but it does what it's supposed to do extremely well.
> 
>> The alternative to all this is to use an internal DSL, i.e. use a programming language directly.  SCons and Waf plough this furrow -- to name but the main two in a C, C++, D, LaTeX context.  SCons and Waf both suffer some serious issues, but they are the current market leaders for a more modern system.
> 
> I tried quite a few build systems for a big project (cmake, waf, aap, scons, omake) and all had their own issues and specially limitations. Eventually I decided to learn Make seriously, wrote a good Makefile and never looked back...
> 
> Make can be very hard to learn, specially because people tend to use it wrongly and there are very few good examples and tutorials/docs.
> 
> PS: I'm really talking about GMake :)
> 

Wow, GMake is almost a full blown programming language! If you have one of those few good examples handy, would you mind sharing a link?
November 23, 2010
"Leandro Lucarella" <luca@llucax.com.ar> wrote in message news:20101123050406.GJ8411@llucax.com.ar...
> Nick Sabalausky, el 22 de noviembre a las 12:54 me escribiste:
>> "Manfred_Nowak" <svv1999@hotmail.com> wrote in message news:Xns9E38B3AFCD756svv1999hotmailcom@65.204.18.192...
>> > Russel Winder wrote:
>> >
>> >> but it has come to the end of its useful life
>> >
>> > why. I ask because I just realized, that llvm still uses it.
>> >
>>
>> Make's in the same boat as C++: Highly significant in the past, and still used because of intertia, but garbage by modern standards.
>
> !?
>
> Generally people that say that is people that don't understand Make.
>

See, that's a big part of the issue I have with make. I've spent an enormus amout of time with it and with various documentation for it (including O'Rielly books), and trying to use it still feels like complete voodoo. I *don't* understand make despite my many attempts. That's the problem. Every non-make-based alternative that I've tried, I've understood just fine.

> Make is not a build system, make is a unix tool, it does one thing and it do it well, and that thing is rebuilding something based on dependencies. Usually Make is a tool to use as a building block when you need something more complex.
>
> Make is a great tool, just don't ask it to do things it doesn't suppose to do.
>

In other words, it's great as long as you have limited requirements or like to toss a pile of different programs, likely each with their own DSL, at a single damn task (project building)...and if you actually understand it.


November 23, 2010
Don, el 23 de noviembre a las 09:06 me escribiste:
> Leandro Lucarella wrote:
> >Make can be very hard to learn, specially because people tend to use it wrongly and there are very few good examples and tutorials/docs.
> >
> >PS: I'm really talking about GMake :)
> 
> Gmake != make.

I know, that's why I clarified.

> That I would say is the #1 problem with make. It has 200 different incompatible dialects.

I don't find that problematic at all, just use the standard for simple things or GMake for more complex stuff (it has some features that can be a life saver). I don't find using GMake problematic because is available virtually everywhere, is almost a de facto standard.

-- 
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
<Damian_Des> Me anDa MaL eL CaPSLoCK
November 23, 2010
On 22-11-2010 19:10, Russel Winder wrote:
> On Mon, 2010-11-22 at 01:50 +0000, bioinfornatics wrote:
>> hello community,
>> I have start a project for generate easily a build system for D
>> project. Currently in d world everyone use his own build system for
>> build a new project with a new system is a bit hard for everyone, for
>> debug  same thing. My tool generate
>> makefile system for your project in one command:
>
> Not entirely true.  Many people use make even though it is past it's
> "use by" date.  Many people use SCons, many others use Waf, and some use
> CMake.
>
> GIven that your system is a Makefile manager, you problably need to
> argue why a new system and not add-ins to CMake -- which is now the
> default makefile manager system.

Did I miss a memo? I never heard of CMake, and suddenly it's the default?

L.
November 23, 2010
Nick Sabalausky, el 23 de noviembre a las 08:54 me escribiste:
> "Leandro Lucarella" <luca@llucax.com.ar> wrote in message news:20101123050406.GJ8411@llucax.com.ar...
> > Nick Sabalausky, el 22 de noviembre a las 12:54 me escribiste:
> >> "Manfred_Nowak" <svv1999@hotmail.com> wrote in message news:Xns9E38B3AFCD756svv1999hotmailcom@65.204.18.192...
> >> > Russel Winder wrote:
> >> >
> >> >> but it has come to the end of its useful life
> >> >
> >> > why. I ask because I just realized, that llvm still uses it.
> >> >
> >>
> >> Make's in the same boat as C++: Highly significant in the past, and still used because of intertia, but garbage by modern standards.
> >
> > !?
> >
> > Generally people that say that is people that don't understand Make.
> 
> See, that's a big part of the issue I have with make. I've spent an enormus amout of time with it and with various documentation for it (including O'Rielly books), and trying to use it still feels like complete voodoo. I *don't* understand make despite my many attempts. That's the problem. Every non-make-based alternative that I've tried, I've understood just fine.

I agree with a lot of that. I had several attempts at learning it and
failed a lot of times. I found Ask Mr. Make (and the GMake ML) very good
resources for learning:
http://www.cmcrossroads.com/ask-mr-make

Is really hard to learn, but when you get it, it makes sense. That doesn't mean it doesn't have quite a few things that can be improved (like detecting file changes using some hash instead of mtime). But still I think is a pretty good tool, very flexible.

> > Make is not a build system, make is a unix tool, it does one thing and it do it well, and that thing is rebuilding something based on dependencies. Usually Make is a tool to use as a building block when you need something more complex.
> >
> > Make is a great tool, just don't ask it to do things it doesn't suppose to do.
> 
> In other words, it's great as long as you have limited requirements or like to toss a pile of different programs, likely each with their own DSL, at a single damn task (project building)...and if you actually understand it.

Yes, or you can use something done by somebody else (like dmake, cmake,
etc. :). I think of Make as some kind of C of build systems. You can
write C directly but is hard, you can provide a decently easy to use
C interface to do complex thing with a high level specification, or you
can directly build a tool that spits C to do the work. And I don't think
C is obsolete or going away in a near future.

My real problem with other build system was, they were not flexible enough, or harder to use/maintain than a good makefile, and I looked hard.

-- 
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
Robar un alfajor es revolucionario, pues rompe con la idea de propiedad,
incluso más que si se tratara de dinero.
	-- publikazion anarkista mdp (hablando de los destrozos de la
	   Cumbre de las Americas en Mar del Plata, 2005)
November 23, 2010
On Tue, 2010-11-23 at 23:43 +0800, Lionello Lunesu wrote:
> On 22-11-2010 19:10, Russel Winder wrote:
[ . . . ]
> > GIven that your system is a Makefile manager, you problably need to argue why a new system and not add-ins to CMake -- which is now the default makefile manager system.
> 
> Did I miss a memo? I never heard of CMake, and suddenly it's the default?

There are defaults and defaults.  Perhaps what I should have said was: for those people who wish to continue to use Make as the build tool underneath a modern framework then CMake is the de facto standard tool for managing Make files.

Personally I do not like the CMake language, I much prefer Python, Lisp, etc. hence I prefer Waf and SCons.   There is no doubt though that many people prefer CMake over SCons, Waf, Autotools , and Make.

If anyone involved in any aspect of build has not heard of all of these tools then it is almost certainly in that person's best interest to do a little bit of investigation and learning.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@russel.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


November 23, 2010
On 11/23/10 7:52 AM, Leandro Lucarella wrote:
> Don, el 23 de noviembre a las 09:06 me escribiste:
>> Leandro Lucarella wrote:
>>> Make can be very hard to learn, specially because people tend to use it
>>> wrongly and there are very few good examples and tutorials/docs.
>>>
>>> PS: I'm really talking about GMake :)
>>
>> Gmake != make.
>
> I know, that's why I clarified.
>
>> That I would say is the #1 problem with make. It has 200 different
>> incompatible dialects.
>
> I don't find that problematic at all, just use the standard for simple
> things or GMake for more complex stuff (it has some features that can be
> a life saver). I don't find using GMake problematic because is available
> virtually everywhere, is almost a de facto standard.

A further problem with gmake is that there are important differences between even minor releases, and each computer seems to have a different one.

I'm well fluent with gmake and I'd agree with Leandro, except the portability argument pretty much invalidates the entire point.


Andrei
November 23, 2010
bioinfornatics schrieb:
> hello community,
> I have start a project for generate easily a build system for D project. Currently in d world everyone use his own build system for build a new project with a new system is a bit hard for everyone, for debug  same thing. My tool generate
> makefile system for your project in one command:
> $ dmake --path src --lib src/myProject/
> and for user he need ony do:
> $ make
> $ make install
> 
> At this time only works for build a library.
> This system is usefull for support ldc, gdc and dmd compiler
> 
> You can found the project here: http://gitorious.org/dmake/dmake
> 
> Any help are welcome

I think this is a good thing :-)

D compilers are available in many linux distributions (debian, ubuntu and archlinux have gdc and ldc, fedora has ldc, don't know about other distributions), but D specific build-tools/systems like rebuild, dsss, xfbuild etc aren't.
Make is part of any linux distribution, of course.

So now you can use dmake to conveniently create a makefile so anybody who uses one of the aforementioned linux distributions can easily compile your software - he just needs to install [lg]dc and make from the distributions repository.

This could really help any open source D application, because
1. they're painless to compile and install for users
2. your application being packaged in a linux distribution is more likely, because the build dependencies (well, at least the compiler and the make tool) already exist in the distribution

Now all we need are killer open source applications written in D ;-)

Cheers,
- Daniel