# The buildrc file

The buildrc file tells the ribosome build system where how to access CVS and where to look for BIF files. In order to find your buildrc file, build looks in the following places:

1. $BUILDRC
2. $HOME/.buildrc
3. $HOMEDRIVE/$HOMEPATH/.buildrc
4. "buildrc" in the System Folder:Preferences if you use macpython

As you can see there are lots of ways to specify where your buildrc file goes.

The buildrc file has the same syntax as a python file, but there are only two functions available to call:

AddCVS(name, root [, shadow])
arguments: name(string), root(string), shadow(string)
returns: none
This function adds a cvs repository and gives it a name. If you are using maccvs, then root should be the name of a CVSSESSION file, otherwise it should be a standard CVSROOT. The name can later be used from a BIF file or in a BIF file search path.

Example: `AddCVS("helix",":pserver:yourname@localhost:/cvs")`

If the shadow parameter is present, it is assumed to be a mirror repository which will be used for the initial checkout. The `CVS/Root` file in each directory will then be updated to point to the real cvs repository.

AddBIFPath(prefix, path)
arguments: prefix(string), path(string)
returns: none
This function adds a search path for BIF files. The prefix is used to give unique names to targets in BIF files, so don't use the same prefix twice. Also, the prefix must be a valid file name. The path can either be a normal file system path, or a reference to a cvs repository. To reference a CVS repository, you must use a string like: "[cvsname]/cvsmodule/subdir" In this case 'cvsname' is the name of a CVS repository which should be added using AddCVS.

If no AddBIFPath is present in your buildrc file, or if there is no buildrc file, some backwards compatible default will be used.

Example: `AddBIFPath("common","[helix]/common/build/BIF")`

SetBIFShadow(bif_id)
arguments: bif_id(string)
returns: none
This function instructs the build system to parse the specified BIF file after reading any other BIF file. This BIF file can thus redefine modules and modify builds accordingly.

AddProfilePath(prefix, path)
arguments: prefix(string), path(string)
returns: none
This function adds a search path for profile files. The prefix is used to give unique names to profiles in case there are duplicates, so don't use the same prefix twice. Also, the prefix must be a valid file name. The path can either be a normal file system path, or a reference to a cvs repository. To reference a CVS repository, you must use a string like: "[cvsname]/cvsmodule/subdir" In this case 'cvsname' is the name of a CVS repository which should be added using AddCVS.

If no AddProfilePath is present in your buildrc file, or if there is no buildrc file, some backwards compatible default will be used.

Example: `AddProfilePath("common","[helix]/common/build/umakepf")`

SetSDKPath(sdk_name, path)
arguments: sdk_name(string), path(string)
returns: none
This function tells the build system where to find an SDK. It is required in order for the build system to be able to find directx and other third party libraries. These paths can later be used in your Umake files and should also be declared in your BIF files.