The module compiles a set of source files and links the resulting object files with any required libraries into a target executable or compiled code.

It supports source in the following languages:
  • Ada (*.adb, *.ads)
  • Assembler (*.asm)
  • C (*.c)
  • C++ (*.cc or *.cpp)
  • Lex (*.l)
  • Objective C (*.m)
  • Yacc (*.y)


${PROG} Compile/link the ${PROG} executable from the specified source files.
clean-prog Clean up object and executable files.
cleandir-prog Clean up for packaging.
install-prog Install program to the target installation directory (see
deinstall-prog Uninstall program from the installation directory.


SRCS List of source files to compile into the target executable.
SRCS_GENERATED List of source files (subset of ${SRCS}) which are auto-generated. Files in this list will be processed before anything else is compiled.
PROG Filename of target executable. Platform-specific transforms may be applied to the name. If cross-compiling to WebAssembly (using "emscripten" target), ${PROG} is expected to have the extension ".html", ".js", ".mjs" or ".wasm".
PROG_TYPE Platform-specific program type. Set to "CLI" (command-line utility), "GUI" (graphical user interface) or "DAEMON" (server program). Defaults to "CLI".
PROG_INSTALL Program can be installed. Defaults to "Yes". Setting this to "No" makes the install target a no-op.
PROG_PREFIX Prepend this string to installed executable name.
PROG_SUFFIX Append this string to installed executable name.
PROG_TRANSFORM Apply this sed expression to installed executable name.
PROG_GUID An optional Global Unique Identifier (GUID).
ADA Compiler for Ada sources. Defaults to "ada" or "gcc".
ADABIND Ada binder. Defaults to "gnatbind".
CC Compiler for C, C++ and Objective C sources. Defaults to "cc", "clang" or "gcc".
PROG_PROFILE Set "Yes" to compile with profiling instrumentation.
PROG_LINKER_TYPE Set to "C" for C-style linker (the default), "CL65" for cc65 (the default if HAVE_CC65 is set) or "ADA" (the default if SRCS contains *.ad[bs] files exclusively).
ADAFLAGS Compiler flags for Ada sources.
ADABFLAGS Flags to pass to the Ada binder.
CFLAGS Compiler flags for C sources. Defaults to "-O2 -g".
CXXFLAGS Compiler flags for C++ sources. Defaults to "".
OBJCFLAGS Compiler flags for Objective C sources. Defaults to "${CFLAGS}".
CPPFLAGS C preprocessor flags. Defaults to "".
ASM Compiler for assembler sources. Defaults to "nasm".
ASMFLAGS Compiler flags for assembler. Defaults to "-g -w-orphan-labels".
LEX Path to the lex lexical analyzer generator.
YACC Path to the yacc parser generator.
LFLAGS Options for lex. Defaults to "".
YFLAGS Options for yacc. Defaults to "-d".
LIBL Libraries to use for Lex lexers. Defaults to "-ll".
WINDRES (win32) Path to the windres utility.
WINRES (win32) Windows resource files for windres.
DATAFILES List of data files to install into ${DATADIR}. The files must exist in the build directory (which may be separate from the source directory if configure --srcdir was used).
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.
BINDIR Target installation directory for executables.
CONFDIR System-wide configuration files will be installed into this directory. Typically set to "${SYSCONFDIR}" or "${SYSCONFDIR}/MyApplication".
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.



HISTORY first appeared in BSDBuild 1.0.

BSDBuild is based on the 4.4BSD build system. ElectronTubeStore