Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Build instructions for new Tango structure

On November 10th 2009, Tango trunk changed its structure. Library construction is now handled by Bob, and there's a couple of variations for the various platforms:

windows

Use Bob, the build tool residing in build\bin\win32:

build\bin\win32\bob -vu -rdmd -cdmd <pathToTangoRoot>

Executing this will build a library including the userlibrary (-u) and with the dmd runtime (-r), using the dmd compiler (-c) for the win32 platform (-p), based upon the code residing in <pathToTangoRoot>. The resultant library will be tango.lib according to the -l switch, and progress will be displayed on the console (-v).

Object files will remain in the current directory when the quick (-q) flag is enabled, and will be reused where an object file is newer than the corresponding source file.

linux & freeBSD

Bob also works for 32 bit linux and freeBSD:

build/bin/linux/bob -vu -rdmd -cdmd <pathToTangoRoot>

to get a full library from the given Tango path.

Executing this will build a library including the userlibrary (-u) and with the dmd runtime (-r), using the dmd compiler (-c) for the linux platform (-p), based upon the code residing in <pathToTangoRoot>. The resultant library will be tango.a according to the -l switch, and progress will be displayed on the console (-v).

Object files will remain in the current directory - these will be reused when the quick (-q) option is specified and an object file is newer than the corresponding source file.

posix

From build/script/ the bob.sh or bob.rb scripts can be used to build a library. These should be easier to use where Tango has less support, or no binary bob. We appreciate help to bootstrap binary bob where otherwise the just mentioned scripts will run.

Bob options

[-v]                   verbose output
[-q]                   quick execution
[-i]                   inhibit execution
[-u]                   include user modules
[-rdmd|gdc|ldc]        include a runtime target
[-cdmd|gdc|ldc]        specify a compiler to use
[-gbasic|cdgc|stub]    specity which garbage collector to use
[-o"options"]          specify D compiler options
[-llibname]            specify lib name (sans .ext)
[-pwindows|linux]      determines package filtering

The required <pathToTangoRoot> parameter should point to the directory where object.di, license.txt and readme.txt reside. If you get this path wrong, Bob will typically say "0 files" before quitting.