For detailed information on using, building, and modifying Weld, please visit:
http://www.agottem.com/weld

Weld provides a variety of options when building.  When building, the following variables may be set
either in your environment or on the command line:

    source_path   -- set to the root of the project
    build_path    -- set to the directory all build output should be directed to
    config_file   -- arbitrary file to include with the build which may set additional settings
    mode          -- set to 'release' or 'debug' to build the desired binary
    arch          -- set to the desired architecture such as 'i686' or 'amd64'
    platform      -- set to the desired platform target such as 'unix' or 'win32'
    c_toolchain   -- set to the toolchain to use for the build such as 'gcc'
    show_progress -- set to 1 to print the name of each artifact being built
    debug_weld    -- set to 1 to print out internal weld debugging info

The above variables may be simply set in your weld project's top-level makefile or in a config file
which is specified by the "config_file" variable.  For instance, you could define the config file
"example_config.mk" below:

example_config.mk:
    source_path := /my/projects/fun
    build_path  := /my/projects/build
    mode        := debug
    arch        := i686
    platform    := linux
    c_toolchain := gcc

You could then build with the command line:
    make config_file=example_config.mk

Alternatively you could simply add these options to your project's top-level makefile:

makefile:
    source_path := /my/projects/fun
    build_path  := /my/projects/build
    mode        := debug
    arch        := i686
    platform    := linux
    c_toolchain := gcc

    include $(weld_path)/weld.mk

With the above, you could then simply build with the command line:
    make

Once your weld project is setup, you can build by specifying the following targets

    # build everything
    make
    make build

    # clean everything
    make clean

    # build just a single component and its dependencies
    make my_component_name

    # build just a single source file for a component
    make my_component_name/source.o

    # install just a component's headers
    make my_component_name_headers

    # clean just a component's headers
    make clean_my_component_name_headers

    # install just a component's resources
    make my_component_name_resources

    # clean just a component's resources
    make clean_my_component_name_resources

    # make just a library
    make libmy_component_name.a

    # make just a binary
    make bin/my_component_name

The above make commands may be a bit verbose for your taste as each command is echoed
to the terminal.  For something a little easier to read, you might prefer:
    make --quiet show_progress=1

There are quite a few options and possibilities involved here.  For the best experience,
I recommend doing something like this:
    alias weld="make -C /my/project/root --quiet show_progress=1""

The above will enable you to, from any directory, do the following:
    weld my_component
    weld clean
    weld
