Button: A fast, correct, and elegantly simple build system.

Atila Neves via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Wed Jun 15 11:38:47 PDT 2016


On Wednesday, 15 June 2016 at 15:39:47 UTC, Andrei Alexandrescu 
wrote:
> On 06/15/2016 08:05 AM, John Colvin wrote:
>> On Wednesday, 15 June 2016 at 11:47:00 UTC, Walter Bright 
>> wrote:
>>> On 6/15/2016 4:07 AM, Edwin van Leeuwen wrote:
>>>> How about using reggae?
>>>>
>>>> https://github.com/atilaneves/phobos/blob/reggae/reggaefile.d
>>>
>>> I haven't studied either.
>>
>> If you do study that reggae file, remember that it's a 
>> deliberate
>> transliteration of the makefile and therefore is a lot more 
>> verbose than
>> it *could* be if done from a clean slate or as a proper 
>> translation.
>> IIRC it was done to show that reggae could do literally 
>> everything the
>> makefile does, in the same way.
>
> Does it do -j? -- Andrei

Short answer: yes.

Long answer: it has multiple backends. I assume the one that'd be 
used for dmd/druntime/phobos would be the binary (compiled D 
code) one since that one doesn't have dependencies on anything 
else. It does what ninja does, which is to use the number of 
cores on the system. There are also the ninja, make and tup 
backends and those do what they do.

I've been meaning to update my reggae branch for a while but 
haven't been able to gather enough motivation. The part that just 
builds the library is easy (I haven't tried compiling the code 
below):

alias cObjs = objectFiles!(Sources!("etc/c/zlib"),
                            Flags("-m64 -fPIC -O3"));
alias dObjs = objectFiles!(Sources!(["std", "etc"]),
                            Flags("-conf= -m64 -w -dip25 -O 
-release"),
                            ImportPaths("../druntime/import"));
auto static_phobos = 
link("$project/generated/linux/release/64/libphobos",
                           cObjs ~ dObjs,
                           "-lib");

The problem is all the other targets, and I can't break any of 
them, and they're all annoying in their own special way. The 
auto-tester only covers a fraction and I have no idea if all of 
them are still being used by anyone. Does anyone do MinGW builds 
with posix.mak for instance? I'm half convinced it's broken.

Atila



More information about the Digitalmars-d-announce mailing list