BuildDj

BuildDj is a project definition format based on JSON that aims to provide an easy to learn, machine readable, human writable project definition format to build source files. It is oriented to support the Freedesktop/GNOME stack (C, C++, Python, Vala, intltool, gtk-doc, .desktop, XDG dirs...)

It is mostly a format definition, the current reference implementation is being done with waf since it's the tool that provides the best balance between ease of deployment and implementations of the features set. However waf is

Main Goals

  • Ease of use: Intuitive and consistency

  • Best practices: The format encourages people to use best practices such as avoiding hardcoded paths by providing tools to reference resources like icons, autogeneration of .pc files automatic i18n support and such.

  • Single file workflow: configuration, dependency checking, everything is meant to be defined in one file.

  • Cross compilable/relocatable: The format is designed around the idea of projects being relocatable and cross compilable by default, although some areas of this goal are yet to be tested and refined.

  • Split definition/functionality: Tools like Autotools, Waf

Specification

The format is under heavy development testing at the moment, ideas are more than welcome.

Spec

Example

Here is an example of the current format draft:

{
        "project":
        {
                "name":    "CC Test",
          "version": "0.0.1",
          "url":     "http://www.codethink.co.uk"
        },
        "requires":
        {
                "gtk+-2.0": 
                {
                        "type":      "package",
                        "version":   "2.14",
                        "mandatory": "True"
                }
        },
        "targets":
        {
                "my_gtk_program":
                {
                        "type":     "program",
                        "tool":     "cc",
                        "input":    ["gtk_program.c"],
                        "packages": ["gtk+-2.0"]
                }
        }
}

Attic/BuildSystem/BuildDj (last edited 2013-11-26 21:16:27 by WilliamJonMcCann)