[phobos] linux.mak + osx.mak = GNUMakefile

Andrei Alexandrescu andrei at erdani.com
Tue Jul 27 11:24:19 PDT 2010


Walter Bright wrote:
> 
> 
> Andrei Alexandrescu wrote:
>> Hey folks,
>>
>>
>> I was building Phobos on OSX when I ran into a makefile bug that I'd 
>> fixed in linux.mak. It was still present in osx.mak. I noticed the 
>> files are virtually identical, so why not merge them?
>>
>> Since the one thing that linux.mak and osx.mak have in common is the 
>> fact that they're understood by gnu make (as opposed to win32.mak 
>> which is used by Walter's own make utility), I'm thinking the new 
>> makefile should be called GNUMakefile. That name is actually 
>> understood by gmake which means no more -f.
>>
>> I'm operating this change and will check in soon, please let me know 
>> if you foresee any issues.
>>
> 
> I prefer to keep them separate because:
> 
> 1. It's very simple for the user to tell which makefile is for what 
> system. With win32.mak and GNUmakefile it's wtf?

It's "Oh, for gnu make I use GNUMakefile".

> 2. While they may be the same now, in the future they may be fairly 
> different.

I prefer to keep things factored together. Again, I am motivated by the 
heavy current duplication and the fact that I fix bugs in one makefile 
and then encounter them in the second.

By the way, I compel you to start using cygwin and gmake on Windows so 
we can unify the three. We should revisit the "I tried cygwin and I 
don't remember why it didn't work well" status.

> 3. I like to drive make with my own makefile which then sets some macros 
> and calls -flinux.mak, which would make it difficult to have a makefile 
> that is the default name

Why? you can alsways specify the default name explicity, i.e. -fGNUMakefile.

> 4. It's *not* a burden to have two makefiles for different platforms. I 
> think it's convenient and self-documenting to have a 1:1 correspondence 
> between platforms and makefiles.

I stand here to say that there is a significant burden. I've been the 
maintainer of non-Windows makefiles and every single improvement I 
brought to them has been very beneficial for me.

> 5. I like being able to futz with one without risk of breaking all the 
> other platforms that I didn't test it on.

That's what cp or svn are for.

> 6. I find differences in gnu make from system to system, for example, 
> FreeBSD has a much more primitive implementation on it.

We specialize for FreeBSD if so needed. Anyway, one key improvement in 
the recent linux.mak is that it puts much less pressure on the gmake 
version.


Andrei


More information about the phobos mailing list