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.