SYNOPSIS
include <build.lib.mk>
DESCRIPTION
The
build.lib.mk module compiles static and/or shared libraries from a set of source files.
For shared libraries, it uses a bundled copy of GNU libtool.
The module provides built-in support for sources in the following languages:
- Ada (*.adb, *.ads)
- Assembler (*.asm)
- C (*.c)
- C++ (*.cc, *.cpp)
- Objective C (*.m)
- Lex (*.l)
- Yacc (*.y)
TARGETS
| lib${LIB}.a | Compile the source files into a static library. |
| lib${LIB}.la | Compile the source files into static and shared libraries using libtool. |
| lib${LIB}.so | Compile the source files into static and shared libraries (without libtool). |
| clean-lib | Clean up object and library files. |
| cleandir-lib | Clean up for packaging. |
| install-lib | Install library files to the target installation directory (see build.common.mk(5)). |
| deinstall-lib | Uninstall libraries from the installation directory. |
VARIABLES
| SRCS | List of source files to compile into the library. |
| SRCS_GENERATED | List of source files (appearing in ${SRCS}) are auto-generated. Files in this list will be processed before anything else is compiled. |
| LIB | Name of target library. Platform-specific transforms will be applied to the name. |
| LIBDIR | Target installation directory for libraries (usually set by configure). |
| LIB_INSTALL | If set to Yes, the install target will install the library files, otherwise it will be a no-op. Defaults to No. |
| LIB_BUNDLE | If set to an output filename, compile a library bundle or framework into the specified target. |
| LIB_SHARED | If set to Yes, a shared library will be built. Default is No. |
| LIB_MODULE | If set to Yes, a dlopen(3) compatible module will be built. Default is No. |
| LIB_PROFILE | If set to Yes, compile library with profiling instrumentation. |
| LIB_GUID | A Global Unique Identifier (GUID) for the library. Exact interpretation is platform-specific. |
| LIB_CURRENT | Major version number for shared libraries. |
| LIB_REVISION | Minor version number for shared libraries. |
| LIB_AGE | Revision number for shared libraries. |
| LIBS | Specify other libraries to link against this library. Bare filename arguments are interpreted as archive files ("foo.a" or "foo.la"). Arguments of the form "-L/path/to/dir" and "-lfoo" specify shared libraries. |
| USE_LIBTOOL | If set to Yes, use libtool(1) to build the libraries. If set to No, generate the library using the traditional method involving ar(1), ranlib(1), and -fPIC. |
| LIBTOOL | Path to GNU libtool(1). This is usually set by the configure script. BSDBuild-generated configure scripts will select BSDBuild's bundled copy of libtool by default (recommended), but an alternate libtool may be specified using --with-libtool=PATH. |
| LIBTOOLOPTS | Specify general libtool arguments (passed before --mode). Defaults to "--quiet". |
| LIBTOOLOPTS_SHARED | Specify extra libtool arguments for linking of shared libraries. |
| LIBTOOLOPTS_STATIC | Specify extra libtool arguments for linking of static libraries. |
| CC | Compiler for C, C++ and Objective C sources. Defaults to the CC environment variable, or "cc". |
| CFLAGS | Compiler flags for C sources. Defaults to the CFLAGS environment variable. |
| CXXFLAGS | Compiler flags for C++ sources. Defaults to the CXXFLAGS environment variable. |
| OBJCFLAGS | Compiler flags for Objective C sources. Defaults to ${CFLAGS}. |
| ADAPREP | The Ada preprocessor. Defaults to gnatprep(1). |
| ADAPREPFLAGS | Extra flags to the Ada preprocessor. |
| ADAPREPFILE | Definitions file for the Ada preprocessor. |
| CPPFLAGS | Compiler preprocessor flags, for sources in all languages featuring a C preprocessor. |
| ASM | Compiler for assembler sources. Defaults to nasm. |
| ASMFLAGS | Compiler flags for assembler. Defaults to -g -w-orphan-labels. |
| LEX | Path to the lex(1) lexical analyzer generator. |
| YACC | Path to the yacc(1) parser generator. |
| LFLAGS | Options for lex(1), defaults to " . " |
| LIBL | Libraries to use for Lex lexers. Defaults to -ll. |
| WINDRES | (Specific to the win32 platform) Path to the windres(1) utility, which generates windows resource files. |
| WINRES | (Specific to the win32 platform) Resource file to use with windres(1). |
| YFLAGS | Options for yacc(1), defaults to -d. |
| DATAFILES | List of data files to install into ${DATADIR}. The files must have been generated from the build process (i.e., if using a separate build with --srcdir, the specified files must exist in the build directory). |
| DATAFILES_SRC | Files to install into ${DATADIR}. This variable is handled similarly to DATAFILES,except that the specified files must exist in the source directory. |
| INCLDIR | Library header files will be installed into this directory. See build.common.mk(5). |
| INCL | List of library header files. |
| CONFDIR | System-wide configuration files will be installed into this directory. It is usually set relative to ${SYSCONFDIR}, for example ${SYSCONFDIR}/MyLibrary. |
| CONF | List of configuration files to install into ${CONFDIR}. Note that the install target will not override existing configuration files, instead it will output a The following configuration files have been preserved message. |
| CONF_OVERWRITE | Overwrite any existing configuration file on installation. Default is "No". |
| CLEANFILES | Any extra files that the clean target should remove. |
| CLEANDIRFILES | Any extra files that the cleandir target should remove. |
SEE ALSO
build.common.mk(5), build.man.mk(5), build.prog.mk(5), build.www.mk(5)
https://bsdbuild.hypertriton.com/
https://bsdbuild.hypertriton.com/
HISTORY
build.lib.mk first appeared in BSDBuild 1.0.
BSDBuild is based on the 4.4BSD build system.
BSDBuild is based on the 4.4BSD build system.
