.\" .\" Copyright (c) 2007 Hypertriton, Inc. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd July 18, 2007 .Dt BUILD.PROG.MK 5 .Os .ds vT BSDBuild Reference .ds oS BSDBuild 1.0 .Sh NAME .Nm build.prog.mk .Nd bsdbuild - compilation of executables .Sh SYNOPSIS .Fd .include .Sh DESCRIPTION The .Nm module is used to compile an executable program from a set of source files. The module provides built-in support for sources in the following languages: .Bl -bullet -compact .It C (*.c) .It C++ (*.cc or *.cpp) .It Objective C (*.m) .It Assembler (*.asm) .It Lex (*.l) .It Yacc (*.y) .El .Sh TARGETS .Bl -tag -width "deinstall-prog " .It Ar ${PROG} Compile/link the ${PROG} executable from the specified source files. .It Ar ${GMONOUT} Compile/link a profiled version of ${PROG}. .It Ar clean-prog Clean up object and executable files. .It Ar cleandir-prog Clean up for packaging. .It Ar install-prog Install program to the target installation directory (see .Xr csoft.common.mk 5 ) . .It Ar deinstall-prog Uninstall program from the installation directory. .El .Sh VARIABLES .Bl -tag -width "CONF_OVERWRITE " .It Ev PROG Filename of target executable. Platform-specific transforms may be applied to the name. .It Ev PROG_TYPE Type of application. Set to .Sq CLI for a command-line utility, .Sq GUI for a graphical interface and .Sq DAEMON for a server program. Defaults to .Sq CLI . The interpretation of this setting is platform-specific. On the Windows platform, this instructs the compiler to select the appropriate PE header subsystem. .It Ev BINDIR Target installation directory for executables (usually set by configure). .It Ev PROG_INSTALL If set to .Sq Yes , the .Ar install target will install the program, otherwise it will be a no-op. Defaults to .Sq Yes . .It Ev PROG_GUID A Global Unique Identifier (GUID) for the program. Exact interpretation is platform-specific. .It Ev GMONOUT Output filename for profiled version of the program. .It Ev CC Compiler for C, C++ and Objective C sources. Defaults to .Sq cc . .It Ev CFLAGS Compiler flags for C sources. Defaults to .Sq -O2 -g . .It Ev CXXFLAGS Compiler flags for C++ sources. Defaults to .Sq . .It Ev OBJCFLAGS Compiler flags for Objective C sources. Defaults to .Sq ${CFLAGS} . .It Ev CPPFLAGS Compiler preprocessor flags, for sources in all languages featuring a C preprocessor. .It Ev ASM Compiler for assembler sources. Defaults to .Sq nasm . .It Ev ASMFLAGS Compiler flags for assembler. Defaults to .Sq -g -w-orphan-labels . .It Ev LEX Path to the .Xr lex 1 lexical analyzer generator. .It Ev YACC Path to the .Xr yacc 1 parser generator. .It Ev LFLAGS Options for .Xr lex 1 , defaults to .Sq . .It Ev YFLAGS Options for .Xr yacc 1 , defaults to .Sq -d . .It Ev LIBL Libraries to use for Lex lexers. Defaults to .Sq -ll . .It Ev WINDRES (Specific to the win32 platform) Path to the .Xr windres 1 utility, which generates windows resource files. .It Ev WINRES (Specific to the win32 platform) Resource file to use with .Xr windres 1 . .It Ev DATAFILES List of data files to install into .Dv ${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). .It Ev DATAFILES_SRC Files to install into .Dv ${DATADIR} . This variable is handled similarly to .Ev DATAFILES , except that the specified files must exist in the source directory. .It Ev CONFDIR System-wide configuration files will be installed into this directory. It is usually set relative to .Sq ${SYSCONFDIR} , for example .Sq ${SYSCONFDIR}/MyApplication . .It Ev CONF List of configuration files to install into .Dv ${CONFDIR}. Note that the .Ar install target will not override existing configuration files, instead it will output a .Dq The following configuration files have been preserved message. .It Ev CONF_OVERWRITE Overwrite any existing configuration file on installation. Default is "No". .El .Sh SEE ALSO .Xr build.common.mk 5 , .Xr build.lib.mk 5 .Sh HISTORY .Nm first appeared in BSDBuild 1.0. .Pp BSDBuild is based on the 4.4BSD build system.