.\"
.\" 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 November 24, 2007
.Dt BUILD.PROJ.MK 5
.Os
.ds vT BSDBuild Reference
.ds oS BSDBuild 2.2
.Sh NAME
.Nm build.proj.mk
.Nd bsdbuild - compilation of IDE "project files"
.Sh SYNOPSIS
.Fd .include
.Sh DESCRIPTION
The
.Nm
module uses the
.Xr premake 1
utility to generate "project files", so that BSDBuild projects can be
opened by various IDEs (Integrated Development Environments).
.Pp
This module adds the target "proj", so that "make proj" will compile
the project files, and pack them into sets of archive files (under
.Ev PROJDIR ,
which defaults to "./ProjectFiles").
.Pp
The various profiles are defined by the space-separated list
.Ev PROJFILES .
Each entry in
.Ev PROJFILES
has the format:
.Bd -literal -offset indent
:::
.Ed
.Pp
"" specifies the operating system and "" is the target IDE name.
The " argument is a flavor or variant identifier (e.g., "nothreads"),
and "" is a comma-separated list of ./configure options
(e.g., "--disable-threads").
.Pp
Valid "" values include:
.Pp
.Bl -tag -compact -width "windows-vista-x64 "
.It windows
Windows 95 and up
.It windows-xp
Windows XP and up
.It windows-xp-x64
Windows XP and up (64-bit)
.It windows-vista
Windows Vista and up
.It windows-vista-x64
Windows Vista and up (64-bit)
.It windows-7
Windows 7 and up
.It windows-7-x64
Windows 7 and up (64-bit)
.El
.Pp
Note: Premake does support other targets ("bsd", "linux" and "macosx"), but
it rarely if ever necessary to generate project files for those targets
since they already provide a proper compilation environment (i.e., BSDBuild
can be used directly on them).
.Pp
Valid "" target names include:
.Pp
.Bl -tag -compact -width "sharpdev "
.It cb-gcc
Code::Blocks with gcc
.It vs6
Visual Studio 6
.It vs2002
Visual Studio 2002
.It vs2003
Visual Studio 2003
.It vs2005
Visual Studio 2005
.It monodev
MonoDevelop
.It sharpdev
ICSharpCode SharpDevelop
.El
.Sh TARGETS
.Bl -tag -width "proj "
.It Ar proj
If
.Dv PROJECT
is defined, generate the project files.
Otherwise, only generate
.Dv PREMAKEOUT
in the current directory.
.El
.Sh VARIABLES
.Bl -tag -width "PROJFILESEXTRA "
.It Ev PROJECT
Name of project.
If a project has multiple subdirectories, this should only be defined in
the top-level directory.
.It Ev PROJFILES
List of project files to generate (see DESCRIPTION above).
.It Ev PROJDIR
Directory to hold generated project file archives.
.It Ev PROJFILESEXTRA
List of additional files to include in all project file archives.
.It Ev PROJINCLUDES
List of additional premake scripts to include everywhere.
.It Ev PREMAKE
Path to
.Xr premake 1
utility.
.It Ev ZIP
Path to
.Xr zip 1
utility.
.It Ev ZIPFLAGS
Flags to
.Xr zip 1 .
.It Ev MKPROJFILES
Path to
.Xr mkprojfiles 1
utility (which is part of BSDBuild).
.It Ev PREMAKEOUT
Filename of premake input generated by BSDBuild
(defaults to
.Pa premake.lua ) .
.It Ev PREMAKEFLAGS
Flags to premake utility.
.El
.Sh SEE ALSO
.Xr build.common.mk 5 ,
.Xr build.prog.mk 5 ,
.Xr build.lib.mk 5
.Sh HISTORY
.Nm
first appeared in BSDBuild 2.2
.Pp
BSDBuild is based on the 4.4BSD build system.