Response files

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sat Mar 21 18:25:54 PDT 2009


Walter Bright wrote:
> Georg Wrede wrote:
>> 'Round here we say "maassa maan tavalla", which is probably something 
>> like "When in Rome, do like the Romans do".
>>
>> Makefiles aren't just a C(++) thing. Unix has a culture of its own, 
>> Windows (I wouldn't say have a culture, but still) does it another 
>> way. So do we import the Unix way to Windows or the other way around? 
>> I'd go with the Romans in Rome.
>>
>> If there were a vote (outside of this NG!!) with D users, probably 
>> there are more folks who write in D /and/ in C or another language /on 
>> their own/ OS, than folks who write D apps (big enough to need 
>> makefiles) for both Windows and Linux.
> 
> 
> There is no standard for makefiles, I've run across dozens of different 
> make programs that use different syntax and have different extensions. 
> So, if you're going to have the same makefile across systems, you have 
> to start with finding a make program that is fairly identical across 
> those systems.
> 
> Then you have the \ vs / problems. Some people assure me that Windows 
> now works flawlessly with /, but that simply isn't so. I keep running 
> into odd cases where it doesn't, so I don't use / on Windows.
> 
> File name case sensitivity differs.
> 
> The command line utilities called by makefiles differ in their names, 
> switches, and how they work.

dmd's flags are the same. Other than that, you only need to configure 
how files are deleted and how the C compiler is invoked.

> .o on Linux, .obj on Windows.

OBJSUFFIX_win32 = .obj
OBJSUFFIX_linux = .o
...
OS = linux
...
... file$(OBJSUFFIX_$(OS)) ...

> nothing on Linux, .exe on Windows.

See above.

> .a on Linux, .lib on Windows.

See above.

> It just goes on and on.

No. At some point it stops and you are gained by understanding where OS 
matters for your product and how.

> You could try and parameterize all of it, but 
> then the makefile becomes an inscrutable mess. You could have scripts 
> generate makefiles, embed scripts in the makefiles, etc., but is this 
> really worthwhile? It's just a makefile. I spend almost zero time on 
> them. I like them simple even if that means they're more verbose.

This is because you don't really need to. I work on Phobos a fair 
amount, and I don't want to update four-odd places whenever I add a 
module. There is something to be said about once and only once. I've 
overhauled Phobos' makefile twice, and every time I've been gained by it.

And again this brings a basic disagreement I have about making a 
hodge-podge of particular cases instead of searching the higher ground 
of proper abstraction.

More code in makefiles doesn't necessarily improve things quite a lot. 
druntime has a lot of makefiles; apparently every single blessed thing 
has a makefile dedicated to it. But that complicates things without benefit.


Andrei



More information about the Digitalmars-d mailing list