On Thursday, 29 November 2012 at 20:47:49 UTC, Jacob Carlborg wrote:
What's the difference compared to any other build tool. Where you have to learn some kind of special syntax. This is a special syntax as well, just happens to be a real language as well.

In D could be quite elegant. Here a simplified sample how I think it could look like:

-----------------------
// Builder Library
module dlang.builder;

struct Target
{
    string output;
    string[] source;
    string[] libs;
}

alias Target Executable;

alias Target StaticLib;

struct Environment
{
    bool tests = false;
    bool verbose = false;
    string[] importDirs;
}

mixin template Builder()
{
    int main(string[] args)
    {
        // enumerate and build the targets...
    }
}

-----------------------
// build.d in project folder
#!/usr/bin/env rdmd

import dlang.builder;

// version(X) to differentiate
Environment env = {
    tests: true,
    verbose: true,
    importDirs: ["../deimos"]
}

Executable myapp = {
    output: "myapp.exe",
    source: ["app/a.d", "app/b.d"],
    libs: ["libutil"]
}

StaticLib libutil = {
    source: ["util/*.d"]
}

mixin Builder;

------------------------
invocation would be basically rdmd build.d
./build.d --variant=release --toolset=dmd_2_060

Reply via email to