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