Name

Property library — Specify which library should contain the object files generated by building this package.

Synopsis

cdl_package <name> {
  library <library name>
  …
}

Description

By default all object files that get built for all packages end up in a single library, libtarget.a. This makes things easier for the typical application developer because it is only necessary to link with a single library, rather than with separate libraries for each package. It is possible to specify an alternative library for specific files as an option to the compile and make_object properties, and there is one library libextras.a which serves a specific purpose in the build system. The library property allows an alternative library to be specified for all the object files that will be generated for a given package.

The use of the library property should be avoided, since it makes things more difficult for application developers. The property is intended only for special cases, for example if there are legal objections to mingling object files from different packages in a single library. It could also be used to work around name clash problems if two packages happen to define an exported symbol with the same name, but any attempt to use multiple libraries in this way is error-prone and should be avoided.

The library property takes a single argument, the name of a library, which should follow the standard naming convention of lib<something>.a. A library property can only occur in the body of a cdl_package command and applies to all object files generated for that package (except where explicitly overwritten with a -library= option to one of the build-related properties). A cdl_package body can contain at most one library property.

Example

cdl_package <SOME_PACKAGE> {
  …
  library  libSomePackage.a
}

See Also

Properties compile, make, and make_object, command cdl_package.