Perforce Jam was an
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
build system developed by Christopher Seiwald of
Perforce Software. It was used as a replacement for
make. Its primary feature was its ability to express build patterns in an
imperative language which supported structured namespaces (similar to
Pascal records) and simple
lists
A ''list'' is any set of items in a row. List or lists may also refer to:
People
* List (surname)
Organizations
* List College, an undergraduate division of the Jewish Theological Seminary of America
* SC Germania List, German rugby union ...
. Jam could be used with
autoconf, although it was often not necessary because of Jam's
portability
Portability may refer to:
*Portability (social security), the portability of social security benefits
* Porting, the ability of a computer program to be ported from one system to another in computer science
** Software portability, the portability ...
features. Perforce Jam ran on
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
(including many clones),
OpenVMS
OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Ope ...
,
Windows NT
Windows NT is a proprietary graphical operating system produced by Microsoft, the first version of which was released on July 27, 1993. It is a processor-independent, multiprocessing and multi-user operating system.
The first version of Wi ...
(including
Windows 2000
Windows 2000 is a major release of the Windows NT operating system developed by Microsoft and oriented towards businesses. It was the direct successor to Windows NT 4.0, and was released to manufacturing on December 15, 1999, and was official ...
and
Windows XP
Windows XP is a major release of Microsoft's Windows NT operating system. It was release to manufacturing, released to manufacturing on August 24, 2001, and later to retail on October 25, 2001. It is a direct upgrade to its predecessors, Wind ...
),
Mac OS
Two major famlies of Mac operating systems were developed by Apple Inc.
In 1984, Apple debuted the operating system that is now known as the "Classic" Mac OS with its release of the original Macintosh System Software. The system, rebranded " ...
, and
BeOS
BeOS is an operating system for personal computers first developed by Be Inc. in 1990. It was first written to run on BeBox hardware.
BeOS was positioned as a multimedia platform that could be used by a substantial population of desktop users a ...
. It was also possible to configure it to work on
Windows 9x
Windows 9x is a generic term referring to a series of Microsoft Windows computer operating systems produced from 1995 to 2000, which were based on the Windows 95 kernel and its underlying foundation of MS-DOS, both of which were updated in sub ...
using
MinGW or
Cygwin.
The company announced that version 2.6 released in August 2014 was the last Perforce Jam release.
Popular variants of Jam
FT Jam
FT Jam is a popular variant and fully
backward compatible, although its features are being integrated into Perforce Jam. Users of FT Jam often refer to Perforce Jam as "Classic Jam".
Boost.Jam
The
Boost C++ Libraries is using a Jam variant called "Boost.Jam" (or "BJam"). It is incompatible with other variants, and is not a standalone tool, but part o
Boost.Build
Haiku Jam
Haiku Jam is a custom fork of Perforce's Jam used by
Haiku
is a type of short form poetry originally from Japan. Traditional Japanese haiku consist of three phrases that contain a ''kireji'', or "cutting word", 17 ''On (Japanese prosody), on'' (phonetic units similar to syllables) in a 5, 7, 5 pattern, ...
.
JamPlus
JamPlus adds new features to Jam and integrates a number of patches from the Jamming mailing list and the Perforce Public Depot.
Jambase
Jam comes with a set of rules called "Jambase", which define rules for building various things. Jambase is "smart" and knows, for instance, that if a
header file
Many programming languages and other computer files have a directive, often called include (sometimes copy or import), that causes the contents of the specified file to be inserted into the original file. These included files are called copybooks ...
is modified, all files that include it must be rebuilt. Unlike with makefiles, the writer of the Jamfile need not manage these
dependencies, only list the source code files themselves. Jambase is usually compiled into the executable file itself.
Jambase is notorious{{Citation needed, date=April 2010 among Jam users for its
bugs and the infrequency with which fixes are integrated into the distribution, though few bugs are critical. There are some packages such as
AutoJam designed to solve some of the problems of Jambase.
License
Jam was
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
.
See also
*
Boost
Boost, boosted or boosting may refer to:
Science, technology and mathematics
* Boost, positive manifold pressure in turbocharged engines
* Boost (C++ libraries), a set of free peer-reviewed portable C++ libraries
* Boost (material), a material b ...
— includes a package called Boost.Build, which uses a special version of Jam called Boost.Jam
*
Perforce — the main product of
Perforce Software, a commercial, proprietary revision control system
References
External links
Perforce SoftwareFT JamHaiku Jam GuideAutoJam, a set of rules for the Jam build toolBoost.Build, a build system originally based on JamJamPlus
Compiling tools
Jam