mirror of
https://github.com/boostorg/build.git
synced 2026-02-18 01:52:17 +00:00
Build of distribution archives. Remove now outdated Jam docs.
[SVN r32860]
This commit is contained in:
15
historic/jam/build_dist.bat
Normal file
15
historic/jam/build_dist.bat
Normal file
@@ -0,0 +1,15 @@
|
||||
@ECHO OFF
|
||||
|
||||
REM ~ Copyright 2006 Rene Rivera.
|
||||
REM ~ Distributed under the Boost Software License, Version 1.0.
|
||||
REM ~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
setlocal
|
||||
|
||||
cd doc
|
||||
del /F /S /Q html
|
||||
bjam --v2
|
||||
del /F /S /Q ..\src\images ..\src\jam ..\src\*.html ..\src\*.png ..\src\*.css ..\src\LICENSE*.txt
|
||||
xcopy /S /I /Y html ..\src
|
||||
cd ..\src
|
||||
call .\build.bat --- dist
|
||||
13
historic/jam/build_dist.sh
Normal file
13
historic/jam/build_dist.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
#~ Copyright 2002-2005 Rene Rivera.
|
||||
#~ Distributed under the Boost Software License, Version 1.0.
|
||||
#~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
cd doc
|
||||
rm -Rf html
|
||||
bjam --v2
|
||||
rm -Rf ../src/images ../src/jam ../src/*.html ../src/*.png ../src/*.css ../src/LICENSE*.txt
|
||||
cp -R html/* ../src
|
||||
cd ../src
|
||||
. ./build.sh --- dist
|
||||
@@ -2,7 +2,7 @@
|
||||
[quickbook 1.3]
|
||||
[version 3.1.12]
|
||||
[authors [Rivera, Rene], [Abrahams, David], [Prus, Vladimir]]
|
||||
[copyright 2003 2004 2005 Rene Rivera, David Abrahams, Vladimir Prus]
|
||||
[copyright 2003 2004 2005 2006 Rene Rivera, David Abrahams, Vladimir Prus]
|
||||
[category tool-build]
|
||||
[id jam]
|
||||
[dirname jam]
|
||||
|
||||
@@ -9,14 +9,14 @@ xml bjam
|
||||
bjam.qbk
|
||||
;
|
||||
|
||||
stage html-$(BOOST_VERSION)
|
||||
stage html
|
||||
:
|
||||
../../../LICENSE_1_0.txt
|
||||
../../../boost.png
|
||||
../../../doc/html/boostbook.css
|
||||
;
|
||||
|
||||
stage html-$(BOOST_VERSION)/images
|
||||
stage html/images
|
||||
:
|
||||
[ path.glob ../../../doc/html/images : *.png ]
|
||||
;
|
||||
@@ -26,13 +26,13 @@ boostbook standalone
|
||||
bjam
|
||||
:
|
||||
<format>html
|
||||
<name>html-$(BOOST_VERSION)
|
||||
<dependency>html-$(BOOST_VERSION)
|
||||
<dependency>html-$(BOOST_VERSION)/images
|
||||
<name>html
|
||||
<dependency>html
|
||||
<dependency>html/images
|
||||
<xsl:param>boost.root=.
|
||||
<xsl:param>nav.layout=none
|
||||
;
|
||||
|
||||
# Copyright Rene Rivera 2005. Use, modification, and distribution are
|
||||
# Copyright Rene Rivera 2005-2006. Use, modification, and distribution are
|
||||
# subject to the Boost Software License, Version 1.0. (See accompanying
|
||||
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
15
historic/jam/index.html
Normal file
15
historic/jam/index.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0; URL=../../doc/html/jam.html" />
|
||||
|
||||
<title></title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
Automatic redirection failed, please go to <a href=
|
||||
"../../doc/html/jam.html">../../doc/html/jam.html</a>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,931 +0,0 @@
|
||||
<HTML>
|
||||
<TITLE>
|
||||
Jambase Reference
|
||||
</TITLE>
|
||||
<BODY>
|
||||
<CENTER>
|
||||
<a href=http://www.perforce.com/jam/jam.html>
|
||||
Jam/MR
|
||||
</a>
|
||||
<H1>
|
||||
<A NAME="TOP">
|
||||
Jambase Reference
|
||||
</A>
|
||||
</H1>
|
||||
</CENTER>
|
||||
<P>
|
||||
Jambase is a base set of Jam/MR rules which
|
||||
provide roughly make(1)-like functionality for
|
||||
<a href="Jam.html"><b>jam</b></A>, the Jam/MR executable program.
|
||||
This document, which started out as the Jambase(5) man page,
|
||||
is a reference guide to the
|
||||
<A href="#RULES">rules</A>,
|
||||
<A href="#PSEUDOTARGETS">pseudotargets</A>,
|
||||
and <A href="#VARS">variables</A>
|
||||
defined in Jambase for use in Jamfiles.
|
||||
<P>
|
||||
For further information see:
|
||||
<UL>
|
||||
<LI>
|
||||
<a href="Jamfile.html">Using Jamfiles and Jambase</A>
|
||||
<LI>
|
||||
<a href="Jam.html">The Jam/MR Executable Program</A>
|
||||
</UL>
|
||||
<P>
|
||||
Jam/MR documentation and source are available from the
|
||||
<A HREF=http://public.perforce.com/public/index.html>Perforce Public Depot</a>.
|
||||
For detailed information about any of the rules summarized below,
|
||||
see the
|
||||
<A HREF=http://public.perforce.com/public/jam/src/Jambase>Jambase</a>
|
||||
file itself.
|
||||
<HR>
|
||||
<H2>
|
||||
<A NAME="RULES">
|
||||
Jambase Rules
|
||||
</A>
|
||||
</H2>
|
||||
<P>
|
||||
<B>As</B> <I>obj.o</I> : <I>source.s</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Assemble the file <I>source.s.</I> Called by the Object
|
||||
rule.
|
||||
</BLOCKQUOTE>
|
||||
<B>Bulk</B> <I>directory</I> : <I>sources</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Copies <I>sources</I> into <I>directory.</I>
|
||||
</BLOCKQUOTE>
|
||||
<B>Cc</B> <I>object</I> : <I>source</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Compile the file <I>source</I> into <I>object,</I> using the C
|
||||
compiler $(CC), its flags $(CCFLAGS) and $(OPTIM),
|
||||
and the header file directories $(HDRS). Called by
|
||||
the Object rule.
|
||||
</BLOCKQUOTE>
|
||||
<B>C++</B> <I>obj.o</I> : <I>source.cc</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Compile the C++ source file <I>source.cc.</I> Called by
|
||||
the Object rule.
|
||||
</BLOCKQUOTE>
|
||||
<B>Chmod</B> <I>target</I> ;
|
||||
<BLOCKQUOTE>
|
||||
<I>(Unix and VMS only.)</I>
|
||||
Change file permissions on <I>target</I> to
|
||||
target-specific $(MODE) value set by Link, File,
|
||||
Install*, and Shell rules.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<B>Clean</B> <I>clean</I> : <I>targets</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Removes existing <I>targets</I> when <I>clean</I> is built.
|
||||
clean is not a dependency of all, and must be built
|
||||
explicitly for targets to be removed.
|
||||
</BLOCKQUOTE>
|
||||
<B>FDefines</B> <I>defines</I> ; <BLOCKQUOTE>
|
||||
Expands a list of definitions into a list of compiler
|
||||
(or preprocessor) switches (such as
|
||||
-D<I>symbol</I>=<I>val</I> on Unix)
|
||||
to pass the definitions.
|
||||
</BLOCKQUOTE>
|
||||
<B>File</B> <I>target</I> : <I>source</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Copies <I>source</I> into <I>target.</I>
|
||||
</BLOCKQUOTE>
|
||||
<B>FIncludes</B> <I>dirs</I> ; <BLOCKQUOTE>
|
||||
Expands a list of directories into a list of compiler
|
||||
(or preprocessor) switches (such as -I<I>dir</I> on Unix)
|
||||
to add the directories to the header inclusion search path.
|
||||
</BLOCKQUOTE>
|
||||
<B>Fortran</B> <I>obj.o</I> : <I>source.f</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Compile the Fortran source file <I>source.f.</I> Called
|
||||
by the Object rule.
|
||||
</BLOCKQUOTE>
|
||||
<B>FQuote</B> <I>files</I> ; <BLOCKQUOTE>
|
||||
Returns each of <I>files</I> suitably quoted so as to hide shell
|
||||
metacharacters (such as whitespace and filename matching wildcards)
|
||||
from the shell.
|
||||
</BLOCKQUOTE>
|
||||
<P>
|
||||
<B>GenFile</B> <I>target</I> : <I>image</I> <I>sources</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Runs the command "<I>image</I> <I>target</I> <I>sources</I>"
|
||||
to create <I>target</I> from <I>sources</I> and
|
||||
<I>image</I>. (where <I>image</I> is an
|
||||
executable built by the Main rule.)
|
||||
</BLOCKQUOTE>
|
||||
<B>HardLink</B> <I>target</I> : <I>source</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Makes <I>target</I> a hard link to <I>source,</I> if it isn't one
|
||||
already. (Unix only.)
|
||||
</BLOCKQUOTE>
|
||||
<B>HdrRule</B> <I>source</I> : <I>headers</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Arranges the proper dependencies when the file
|
||||
<I>source</I> includes the files <I>headers</I> through the
|
||||
"#include" C preprocessor directive.
|
||||
<P>
|
||||
This rule is not intended to be called explicitly.
|
||||
It is called automatically during header scanning on
|
||||
sources handled by the Object rule (e.g., sources in
|
||||
Main or Library rules).
|
||||
</BLOCKQUOTE>
|
||||
<B>InstallBin</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
|
||||
Copy <I>sources</I> into <I>dir</I> with mode
|
||||
$(EXEMODE).
|
||||
</BLOCKQUOTE>
|
||||
<B>InstallLib</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
|
||||
Copy <I>sources</I> into <I>dir</I> with mode
|
||||
$(FILEMODE).
|
||||
</BLOCKQUOTE>
|
||||
<B>InstallMan</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
|
||||
Copy <I>sources</I> into the appropriate subdirectory
|
||||
of <I>dir</I> with mode $(FILEMODE). The subdirectory
|
||||
is man<I>s,</I> where <I>s</I> is the suffix of
|
||||
each of sources.
|
||||
</BLOCKQUOTE>
|
||||
<B>InstallShell</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
|
||||
Copy <I>sources</I> into <I>dir</I> with mode
|
||||
$(SHELLMODE).
|
||||
</BLOCKQUOTE>
|
||||
<B>Lex</B> <I>source.c</I> : <I>source.l</I> ; <BLOCKQUOTE>
|
||||
Process the lex(1) source file <I>source.l</I> and
|
||||
rename the lex.yy.c to <I>source.c.</I> Called by
|
||||
the Object rule.
|
||||
</BLOCKQUOTE>
|
||||
<B>Library</B> <I>library</I> : <I>sources</I> ; <BLOCKQUOTE>
|
||||
Compiles <I>sources</I> and archives them into
|
||||
<I>library.</I> The intermediate <I>objects</I>
|
||||
are deleted. Calls Objects and LibraryFromObjects.
|
||||
<P>
|
||||
If Library is invoked with no suffix on <I>library</I>,
|
||||
the $(SUFLIB) suffix is used.
|
||||
</BLOCKQUOTE>
|
||||
<B>LibraryFromObjects</B> <I>library</I> : <I>objects</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Archives <I>objects</I> into <I>library.</I> The
|
||||
<I>objects</I> are then deleted.
|
||||
<P>
|
||||
If <I>library</I> has no suffix, the $(SUFLIB) suffix is used.
|
||||
</BLOCKQUOTE>
|
||||
<B>Link</B> <I>image</I> : <I>objects</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Links <I>image</I> from <I>objects</I> and sets
|
||||
permissions on <I>image</I> to $(EXEMODE).
|
||||
<I>Image</I> must be actual filename; suffix is not
|
||||
supplied.
|
||||
Called by Main.
|
||||
|
||||
</BLOCKQUOTE>
|
||||
<B>LinkLibraries</B> <I>image</I> : <I>libraries</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Makes <I>image</I> depend on <I>libraries</I> and
|
||||
includes them during the linking.
|
||||
<P>
|
||||
<I>Image</I> may be referenced without a suffix in this
|
||||
rule invocation; LinkLibraries supplies the suffix.
|
||||
</BLOCKQUOTE>
|
||||
<B>Main</B> <I>image</I> : <I>sources</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Compiles <I>sources</I> and links them into <I>image.</I>
|
||||
Calls Objects and MainFromObjects.
|
||||
<P>
|
||||
<I>Image</I> may be referenced without a suffix in this
|
||||
rule invocation; Main supplies the suffix.
|
||||
</BLOCKQUOTE>
|
||||
<B>MainFromObjects</B> <I>image</I> : <I>objects</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Links <I>objects</I> into <I>image.</I> Dependency
|
||||
of exe. MainFromObjects supplies the suffix on <I>image</I>
|
||||
filename.
|
||||
</BLOCKQUOTE>
|
||||
<B>MakeLocate</B> <I>target</I> : <I>dir</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Creates <I>dir</I> and causes <I>target</I> to be built
|
||||
into <I>dir</I>.
|
||||
</BLOCKQUOTE>
|
||||
<B>MkDir</B> <I>dir</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Creates <I>dir</I> and its parent directories.
|
||||
</BLOCKQUOTE>
|
||||
<B>Object</B> <I>object</I> : <I>source</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Compiles a <I>single</I> source file source into
|
||||
<I>object.</I> The Main and Library rules use
|
||||
this rule to compile source files.
|
||||
<P>
|
||||
Causes <I>source</I> to be scanned for "#include"
|
||||
directives and calls HdrRule to make all included
|
||||
files dependedencies of <I>object</I>.
|
||||
<P>
|
||||
Calls one of the following rules to do the actual
|
||||
compiling, depending on the suffix of source:
|
||||
<PRE>
|
||||
*.c: Cc
|
||||
*.cc: C++
|
||||
*.cpp: C++
|
||||
*.C: C++
|
||||
*.l: Lex
|
||||
*.y: Yacc
|
||||
*.*: UserObject
|
||||
</PRE>
|
||||
</BLOCKQUOTE>
|
||||
<B>ObjectC++Flags</B> <I>source</I> : <I>flags</I> ;
|
||||
<BR>
|
||||
<B>ObjectCcFlags</B> <I>source</I> : <I>flags</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Add <I>flags</I> to the source-specific
|
||||
value of $(CCFLAGS) or $(C++FLAGS) when compiling <I>source.</I>
|
||||
Any file suffix on <I>source</I> is ignored.
|
||||
</BLOCKQUOTE>
|
||||
<B>ObjectDefines</B> <I>object</I> : <I>defines</I> ; <BLOCKQUOTE>
|
||||
Adds preprocessor symbol definitions to the (gristed)
|
||||
target-specific $(CCDEFS) for the <I>object</i>.
|
||||
</BLOCKQUOTE>
|
||||
<B>ObjectHdrs</B> <I>source</I> : <I>dirs</I> ; <BLOCKQUOTE>
|
||||
Add <I>dirs</I> to the source-specific value of
|
||||
$(HDRS) when scanning and compiling <I>source.</I>
|
||||
Any file suffix on <I>source</I> is ignored.
|
||||
</BLOCKQUOTE>
|
||||
<B>Objects</B> <I>sources</I> ; <BLOCKQUOTE>
|
||||
For each source file in <I>sources,</I> calls
|
||||
Object to compile the source file into a similarly
|
||||
named object file.
|
||||
</BLOCKQUOTE>
|
||||
<B>RmTemps</B> <I>targets</I> : <I>sources</I> ; <BLOCKQUOTE>
|
||||
Marks <I>sources</I> as temporary with the TEMPORARY
|
||||
rule, and deletes <I>sources</I> once <I>targets</I>
|
||||
are built. Must be the last rule invoked on
|
||||
<I>targets.</I> Used internally by LibraryFromObjects rule.
|
||||
</BLOCKQUOTE>
|
||||
<B>Setuid</B> <I>images</I> ; <BLOCKQUOTE>
|
||||
Sets the setuid bit on each of <I>images</I> after
|
||||
linking. (Unix only.)
|
||||
|
||||
</BLOCKQUOTE>
|
||||
<B>SoftLink</B> <I>target</I> : <I>source</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Makes <I>target</I> a symbolic link to <I>source,</I> if it isn't one
|
||||
already. (Unix only.)
|
||||
</BLOCKQUOTE>
|
||||
<B>SubDir</B> <I>VAR d1 ... dn</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Sets up housekeeping for the source files located
|
||||
in <I><CODE>$(VAR)/d1/.../dn</CODE></I>:
|
||||
<UL>
|
||||
<LI>Reads in rules file associated with <I>VAR</I>,
|
||||
if it hasn't already been read.
|
||||
<LI>Initializes variables for search paths,
|
||||
output directories, compiler
|
||||
flags, and grist, using <I>d1 ... dn</I> tokens.
|
||||
</UL>
|
||||
<P>
|
||||
<I>VAR</I> is the name of a variable;
|
||||
<I>d1</I> thru <I>dn</I> are elements
|
||||
of a directory path.
|
||||
</BLOCKQUOTE>
|
||||
<B>SubDirC++Flags</B> <I>flags</I> ;
|
||||
<BR>
|
||||
<B>SubDirCcFlags</B> <I>flags</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Adds <I>flags</I> to the compiler flags for source files
|
||||
in SubDir's directory.
|
||||
</BLOCKQUOTE>
|
||||
<B>SubDirHdrs</B> <I>d1 ... dn</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Adds the path <I>d1/.../dn/</I> to the header search paths for
|
||||
source files in SubDir's directory. <I>d1</I> through <I>dn</I>
|
||||
are elements of a directory path.
|
||||
</BLOCKQUOTE>
|
||||
<B>SubInclude</B> <I>VAR d1 ... dn</I> ;
|
||||
<BLOCKQUOTE>
|
||||
Reads the Jamfile in <I><CODE>$(VAR)/d1/.../dn/</CODE></I>.
|
||||
</BLOCKQUOTE>
|
||||
<B>Shell</B> <I>image</I> : <I>source</I> ; <BLOCKQUOTE>
|
||||
Copies <I>source</I> into the executable sh(1)
|
||||
script <I>image.</I> Ensures that the first line of
|
||||
the script is $(SHELLHEADER) (default #!/bin/sh).
|
||||
</BLOCKQUOTE>
|
||||
<B>Undefines</B> <I>images</I> : <I>symbols</I> ; <BLOCKQUOTE>
|
||||
Adds flags to mark <I>symbols</I> as undefined
|
||||
on link command for <I>images</I>.
|
||||
<I>Images</I> may be referenced unsuffixed; the
|
||||
Undefines rule supplies the suffix.
|
||||
</BLOCKQUOTE>
|
||||
<B>UserObject</B> <I>object</I> : <I>source</I> ; <BLOCKQUOTE>
|
||||
This rule is called by Object for source
|
||||
files with unknown suffixes, and should be defined
|
||||
in Jamrules
|
||||
with a user-provided rule to handle the source file
|
||||
types not handled by the Object rule.
|
||||
The Jambase UserObject rule merely issues a
|
||||
complaint when it encounters <I>source</I> with
|
||||
files suffixes it does not recognize.
|
||||
</BLOCKQUOTE>
|
||||
<B>Yacc</B> <I>source.c</I> : <I>source.y</I> ; <BLOCKQUOTE>
|
||||
Process the yacc(1) file <I>source.y</I> and renamed
|
||||
the resulting y.tab.c and y.tab.h to <I>source.c.</I>
|
||||
Produces a y.tab.h and renames it to <I>source.h.</I>
|
||||
Called by the <B>Object</B> rule.
|
||||
</BLOCKQUOTE>
|
||||
<P>
|
||||
<HR>
|
||||
<A NAME="PSEUDOTARGETS">
|
||||
<H3>
|
||||
Jambase Pseudotargets
|
||||
</H3>
|
||||
</A>
|
||||
<P>
|
||||
There are two kinds of Jam targets: file targets and pseudotargets.
|
||||
File targets are objects that can be found in the filesystem.
|
||||
Pseudotargets are symbolic, and usually represent other targets.
|
||||
Most Jambase rules that define file targets also define pseudotargets
|
||||
which are dependent on types of file targets. The Jambase pseudotargets
|
||||
are:
|
||||
<CENTER>
|
||||
<TABLE CELLPADDING=5%>
|
||||
<TR><TD>exe
|
||||
<TD>Executables linked by the Main or MainFromObjects rules
|
||||
|
||||
<TR><TD>lib
|
||||
<TD>Libraries created by the Library or LibraryFromObjects rules
|
||||
|
||||
<TR><TD>obj
|
||||
<TD>Compiled objects used to create Main or Library targets
|
||||
|
||||
<TR><TD>dirs
|
||||
<TD>Directories where target files are written
|
||||
|
||||
<TR><TD>file
|
||||
<TD>Files copied by File and Bulk rules
|
||||
|
||||
<TR><TD>shell
|
||||
<TD>Files copied by Shell rule
|
||||
|
||||
<TR><TD>clean
|
||||
<TD>Removal of built targets (except files copied by Install* rules)
|
||||
|
||||
<TR><TD>install
|
||||
<TD>Files copied by Install* rules
|
||||
|
||||
<TR><TD>uninstall
|
||||
<TD>Removal of targets copied by Install* rules
|
||||
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
<P>
|
||||
In addition, Jambase makes the <b>jam</b> default target "all"
|
||||
depend on "exe", "lib", "obj", "files", and "shell".
|
||||
<P>
|
||||
|
||||
<HR>
|
||||
<A NAME="VARS">
|
||||
<H3>
|
||||
Jambase Variables
|
||||
</H3>
|
||||
</A>
|
||||
<P>
|
||||
Most of the following variables have default values for
|
||||
each platform; refer to the Jambase file to see what those
|
||||
defaults are.
|
||||
<P>
|
||||
ALL_LOCATE_TARGET
|
||||
<BLOCKQUOTE>
|
||||
Alternative location of built targets. By default,
|
||||
Jambase rules locate built targets in the source
|
||||
tree. By setting $(ALL_LOCATE_TARGET)
|
||||
in Jamrules, you can cause <b>jam</b>
|
||||
to write built targets to a location outside
|
||||
the source tree.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
AR
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The archive command used to update Library
|
||||
and LibraryFromObjects targets.
|
||||
</BLOCKQUOTE>
|
||||
AS
|
||||
<BLOCKQUOTE>
|
||||
The assembler for As rule targets.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
ASFLAGS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Flags handed to the assembler for As.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
AWK
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The name of awk interpreter, used when copying a
|
||||
shell script for the Shell rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
BCCROOT
|
||||
<BLOCKQUOTE>
|
||||
Selects Borland compile and link actions on NT.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
|
||||
BINDIR
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Not longer used.
|
||||
(I.e., used only for backward compatibility with the
|
||||
obsolete INSTALLBIN rule.)
|
||||
</BLOCKQUOTE>
|
||||
|
||||
CC
|
||||
|
||||
<BLOCKQUOTE>
|
||||
C compiler used for Cc rule targets.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
CCFLAGS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Compile flags for Cc rule targets.
|
||||
The Cc rule sets target-specific $(CCFLAGS)
|
||||
values on its targets.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
C++
|
||||
|
||||
<BLOCKQUOTE>
|
||||
C++ compiler used for C++ rule targets.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
C++FLAGS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Compile flags for C++ rule targets.
|
||||
The C++ rule sets target-specific $(C++FLAGS)
|
||||
values on its targets.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
CHMOD
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Program (usually chmod(1)) used to set file
|
||||
permissions for Chmod rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
CP
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The file copy program, used by File and Install* rules.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
CRELIB
|
||||
|
||||
<BLOCKQUOTE>
|
||||
If set, causes the Library rule to invoke the CreLib
|
||||
rule on the target library before attempting to archive
|
||||
any members, so that the library can be created if
|
||||
needed.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
CW
|
||||
|
||||
<BLOCKQUOTE>
|
||||
On Macintosh, the root of the Code Warrior Pro 5 directory.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
DEFINES
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Preprocessor symbol definitions for Cc and C++ rule targets.
|
||||
The Cc and C++ rules set target-specific $(CCDEFS)
|
||||
values on their targets, based on $(DEFINES). (The
|
||||
"indirection" here is required to support compilers,
|
||||
like VMS, with baroque command line syntax for
|
||||
setting symbols).
|
||||
</BLOCKQUOTE>
|
||||
|
||||
DOT
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The operating system-specific name for the current directory.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
DOTDOT
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The operating system-specific name for the parent directory.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
EXEMODE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Permissions for executables linked with Link, Main,
|
||||
and MainFromObjects, on platforms with a Chmod action.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
FILEMODE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Permissions for files copied by File or Bulk,
|
||||
on platforms with a Chmod action.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
FORTRAN
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The Fortran compiler used by Fortran rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
FORTRANFLAGS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Fortran compiler flags for Fortran rule targets.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
GROUP
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<I>(Unix only.)</I>
|
||||
The group owner for Install* rule targets.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
HDRGRIST
|
||||
|
||||
<BLOCKQUOTE>
|
||||
If set, used by the HdrRule to distinguish header files
|
||||
with the same name in diffrent directories.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
HDRPATTERN
|
||||
|
||||
<BLOCKQUOTE>
|
||||
A regular expression pattern that matches
|
||||
C preprocessor "#include" directives in source files
|
||||
and returns the name of the included file.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
HDRRULE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Name of the rule to invoke with the results of header file
|
||||
scanning. Default is "HdrRule".
|
||||
<P>
|
||||
This is a jam-special variable. If both HDRRULE and HDRSCAN
|
||||
are set on a target,
|
||||
that target will be scanned for lines
|
||||
matching $(HDRSCAN), and $(HDDRULE) will be
|
||||
invoked on included files found in the matching $(HDRSCAN) lines.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
HDRS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Directories to be searched for header files.
|
||||
This is used by the Object rule to:
|
||||
<UL>
|
||||
<LI>set up search paths for finding files returned
|
||||
by header scans
|
||||
<LI>add -I flags on compile commands
|
||||
</UL>
|
||||
(See STDHDRS.)
|
||||
</BLOCKQUOTE>
|
||||
|
||||
HDRSCAN
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Regular expression pattern to use for header file
|
||||
scanning. The Object rule sets this to $(HDRPATTERN).
|
||||
This is a jam-special variable; see HDRRULE.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
HDRSEARCH
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Used by the HdrRule to fix the list of directories where
|
||||
header files can be found for a given source file.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
INSTALLGRIST
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Used by the Install* rules to grist paths to installed
|
||||
files; defaults to "installed".
|
||||
</BLOCKQUOTE>
|
||||
|
||||
JAMFILE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Default is "Jamfile"; the name of the user-written
|
||||
rules file found in each source directory.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
JAMRULES
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Default is "Jamrules"; the name of a rule definition
|
||||
file to be read in at the first SubDir rule invocation.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
KEEPOBJS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
If set, tells the LibraryFromObjects rule not to delete
|
||||
object files once they are archived.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LEX
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The lex(1) command and flags.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LIBDIR
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Not longer used.
|
||||
(I.e., used only for backward compatibility with the
|
||||
obsolete INSTALLLIB rule.)
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LINK
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The linker. Defaults to $(CC).
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LINKFLAGS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Flags handed to the linker. Defaults to $(CCFLAGS).
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LINKLIBS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
List of external libraries to link with. The target image
|
||||
does not depend on these libraries.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LN
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The hard link command for HardLink rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LOCATE_SOURCE
|
||||
<BLOCKQUOTE>
|
||||
Used to set the location of generated source files.
|
||||
The Yacc, Lex, and GenFile rules set LOCATE on
|
||||
their targets to $(LOCATE_SOURCE).
|
||||
$(LOCATE_SOURCE) is initialized by the SubDir rule
|
||||
to the source directory itself.
|
||||
(Also, see ALL_LOCATE_TARGET.)
|
||||
</BLOCKQUOTE>
|
||||
|
||||
LOCATE_TARGET
|
||||
<BLOCKQUOTE>
|
||||
Used to set the location of built binary targets.
|
||||
The Object rule, and hence the Main and Library rules,
|
||||
set LOCATE on their targets to $(LOCATE_TARGET).
|
||||
$(LOCATE_TARGET) is initialized by the
|
||||
SubDir rule to the source directory itself.
|
||||
(See ALL_LOCATE_TARGET.)
|
||||
</BLOCKQUOTE>
|
||||
|
||||
|
||||
MANDIR
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Not longer used.
|
||||
(I.e., used only for backward compatibility with the
|
||||
obsolete INSTALLMAN rule.)
|
||||
</BLOCKQUOTE>
|
||||
|
||||
MKDIR
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The 'create directory' command used for the MkDir
|
||||
rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
MODE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The target-specific file mode (permissions) for targets
|
||||
of the Shell, Setuid, Link, and Install* rules.
|
||||
Used by the Chmod action; hence relevant to NT and VMS
|
||||
only.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
MSVC
|
||||
<BLOCKQUOTE>
|
||||
Selects Microsoft Visual C 16-bit compile & link
|
||||
actions on NT.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
MSVCNT
|
||||
<BLOCKQUOTE>
|
||||
Selects Microsoft Visual C NT compile & link
|
||||
actions on NT.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
|
||||
MV
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The file rename command and options.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
NEEDLIBS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The list of libraries used when linking an executable.
|
||||
Used by the Link rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
NOARSCAN
|
||||
|
||||
<BLOCKQUOTE>
|
||||
If set, indicates that library members' timestamps can't
|
||||
be found, and prevents the individual objects from being
|
||||
deleted, so that their timestamps can be used instead.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
NOARUPDATE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
If set, indicates that libraries can't be updated, but only
|
||||
created whole.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
OPTIM
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The C compiler flag for optimization, used by Cc and C++
|
||||
rules.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
OSFULL
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The concatenation of $(OS)$(OSVER)$(OSPLAT), used when jam
|
||||
builds itself to determine the target binary directory.
|
||||
$(OS) and $(OSPLAT) are determined by jam at its compile
|
||||
time (in jam.h). $(OSVER) can optionally be set by the user.
|
||||
|
||||
</BLOCKQUOTE>
|
||||
|
||||
OWNER
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The owner of installed files. Used by Install* rules.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
RANLIB
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The name of the ranlib command. If set, causes
|
||||
the Ranlib action to be applied after the
|
||||
Archive action to targets of the Library rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
RELOCATE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
If set, tells the Cc rule to move the output object
|
||||
file to its target directory because the cc command
|
||||
has a broken -o option.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
RM
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The command and options to remove a file.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SEARCH_SOURCE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The directory to find sources listed with Main,
|
||||
Library, Object, Bulk, File, Shell, InstallBin,
|
||||
InstallLib, and InstallMan rules. This works by
|
||||
setting the jam-special variable SEARCH to the
|
||||
value of $(SEARCH_SOURCE) for each of the rules'
|
||||
sources. The SubDir rule initializes SEARCH_SOURCE
|
||||
for each directory.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SHELLHEADER
|
||||
|
||||
<BLOCKQUOTE>
|
||||
A string inserted to the first line of every file
|
||||
created by the Shell rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SHELLMODE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Permissions for files installed by Shell rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SOURCE_GRIST
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Set by the SubDir to a value derived from the
|
||||
directory name, and used by Objects and related
|
||||
rules as 'grist' to perturb file names.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
STDHDRS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Directories where headers can be found without
|
||||
resorting to using the flag to the C compiler.
|
||||
The $(STDHDRS) directories are used to find
|
||||
headers during scanning, but are not passed to the
|
||||
compiler commands as -I paths.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SUBDIR
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The path from the current directory to the directory
|
||||
last named by the SubDir rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
TOP
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The path from the current directory to the directory
|
||||
that has the Jamrules file. Used by the SubDir rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SUFEXE
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The suffix for executable files, if none provided.
|
||||
Used by the Main rule.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SUFLIB
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The suffix for libraries. Used by the Library and
|
||||
related rules.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
SUFOBJ
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The suffix for object files. Used by the Objects
|
||||
and related rules.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
UNDEFFLAG
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The flag prefixed to each symbol for the Undefines
|
||||
rule (i.e., the compiler flag for undefined symbols).
|
||||
</BLOCKQUOTE>
|
||||
|
||||
WATCOM
|
||||
<BLOCKQUOTE>
|
||||
Selects Watcom compile and link actions on OS2.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
YACC
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The yacc(1) command.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
YACCFILES
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The base filename generated by yacc(1).
|
||||
</BLOCKQUOTE>
|
||||
|
||||
YACCFLAGS
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The yacc(1) command flags.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
YACCGEN
|
||||
|
||||
<BLOCKQUOTE>
|
||||
The suffix used on generated yacc(1) output.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<A HREF="#TOP">Back to top.</A>
|
||||
<P>
|
||||
Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
|
||||
<BR>
|
||||
Comments to <A HREF="mailto:info@perforce.com">info@perforce.com</A>
|
||||
<BR>
|
||||
Last updated: Dec 31, 2000
|
||||
<BR>
|
||||
$Id$
|
||||
</BODY>
|
||||
</HTML>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,68 +0,0 @@
|
||||
Notes on porting Jam - revised 12/31/2000
|
||||
|
||||
1) Working out system dependencies in the Jam code.
|
||||
|
||||
Jam's OS footprint is fairly small. For OS independent work Jam
|
||||
liberally uses standard libc functions like stdio, malloc, and
|
||||
string. The OS dependent interfaces are:
|
||||
|
||||
From filesys.h:
|
||||
|
||||
file_parse() - split a file name into dir/base/suffix/member
|
||||
file_build() - build a filename given dir/base/suffix/member
|
||||
file_dirscan() - scan a directory for files
|
||||
file_archscan() - scan an archive for files
|
||||
file_time() - get the timestamp of a file, if not already
|
||||
done by file_dirscan().
|
||||
|
||||
From execcmd.h:
|
||||
|
||||
execcmd() - execute a shell script
|
||||
execwait() - wait for any outstanding execcmd()'s.
|
||||
|
||||
The current implementations are:
|
||||
|
||||
filemac.c - mac MPW
|
||||
filent.c - NT
|
||||
fileos2.c - OS/2
|
||||
fileunix.c - all UNIX
|
||||
filevms.c - VMS
|
||||
|
||||
execmac.c - mac MPW
|
||||
execunix.c - UNIX, OS/2, NT
|
||||
execvms.c - VMS
|
||||
|
||||
2) Defining OSMAJOR, OSMINOR in jam.h
|
||||
|
||||
So that the Jambase and Jamfile know their host, Jam defines $(OS)
|
||||
to be something useful for each platform. Make sure that there is
|
||||
code in jam.h to generate a useful value for $(OS), and key it off
|
||||
the platform specific C-preprocessor symbol. If the C-preprocessor
|
||||
doesn't itself defines such a symbol, add a define to the Makefile.
|
||||
|
||||
In addition to $(OS), you can also set $(OSPLAT) if the OS runs on
|
||||
multiple platforms (like Linux or NT).
|
||||
|
||||
3) Working out system dependencies in the Jambase
|
||||
|
||||
With the value of $(OS) available, the Jambase can be extended to
|
||||
support special variables or rules for new platforms. See the
|
||||
current support for VMS, NT, and Mac.
|
||||
|
||||
4) Yacc troubles
|
||||
|
||||
The generated files jamgram.h and jamgram.c are distributed for the
|
||||
poor souls without yacc.
|
||||
|
||||
5) Known problematic systems:
|
||||
|
||||
- Pyramid has no malloc.h, memory.h
|
||||
|
||||
- Encore has no stdlib.h
|
||||
|
||||
- Bull DPX has sys/file.h problems
|
||||
|
||||
6) Send the results back.
|
||||
|
||||
If you do porting work, the result can be integrated into future
|
||||
releases if you send it back to the author's address in the README.
|
||||
@@ -1,150 +0,0 @@
|
||||
Jam/MR (aka "jam - make(1) redux")
|
||||
|
||||
/+\
|
||||
+\ Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
|
||||
\+/
|
||||
|
||||
This is Release 2.4 of Jam/MR, a make-like program.
|
||||
|
||||
License is hereby granted to use this software and distribute it
|
||||
freely, as long as this copyright notice is retained and modifications
|
||||
are clearly marked.
|
||||
|
||||
ALL WARRANTIES ARE HEREBY DISCLAIMED.
|
||||
|
||||
FEATURES
|
||||
|
||||
-> Jam is a make(1) replacement that makes building simple things
|
||||
simple and building complicated things manageable.
|
||||
|
||||
-> Jam's language is expressive, making Jamfiles (c.f. Makefiles)
|
||||
compact. Here's a sample:
|
||||
|
||||
Main smail : main.c map.c resolve.c deliver.c
|
||||
misc.c parser.y alias.c pw.c headers.c
|
||||
scanner.l getpath.c str.c ;
|
||||
|
||||
This builds "smail" from a dozen source files. Jam handles
|
||||
header file dependencies automatically and on-the-fly.
|
||||
|
||||
-> Jam is very portable: it runs on UNIX, VMS, Mac, and NT.
|
||||
Most Jamfiles themselves are portable, like the sample above.
|
||||
|
||||
-> Jam is unintrusive: it is small, it has negligible CPU
|
||||
overhead, and it doesn't create any of its own funny files
|
||||
(c.f. Odin, nmake, SunOS make).
|
||||
|
||||
-> Jam can build large projects spread across many directories
|
||||
in one pass, without recursing, tracking the relationships
|
||||
among all files. Jam can do this with multiple, concurrent
|
||||
processes.
|
||||
|
||||
-> Jam isn't under the blinkin GNU copyright, so you can
|
||||
incorporate it into commercial products.
|
||||
|
||||
|
||||
INFORMATION GUIDE
|
||||
|
||||
Jam.html jam and language reference.
|
||||
|
||||
Jambase.html Reference for the Jambase boilerplate file.
|
||||
|
||||
Jamfile.html Easy reading on creating a Jamfile and using jam.
|
||||
|
||||
RELNOTES Release 2.3 release notes.
|
||||
|
||||
Porting Notes on porting jam to wildcat platforms.
|
||||
|
||||
README This file. Includes installation instructions.
|
||||
|
||||
jam.c Contains the jam command's main() as well as an
|
||||
introduction to the code, for serious hackers.
|
||||
|
||||
|
||||
INSTALLING
|
||||
|
||||
The Makefile (UNIX, NT), build.com (VMS), Build.mpw (Mac MPW) are
|
||||
for bootstrapping. Once jam is built, it can rebuild itself.
|
||||
|
||||
UNIX
|
||||
|
||||
Build jam with make(1) on:
|
||||
|
||||
Platform $(OS)
|
||||
-------------------------
|
||||
AIX AIX *
|
||||
BSD/386 1.0 BSDI
|
||||
COHERENT/386 COHERENT
|
||||
DGUX 5.4 DGUX
|
||||
FreeBSD FREEBSD
|
||||
HPUX 9.0 HPUX
|
||||
IRIX 5.0 IRIX
|
||||
Linux LINUX
|
||||
NEXTSTEP 3.2 NEXT
|
||||
OSF/1 OSF
|
||||
PTX V2.1.0 PTX
|
||||
Solaris 2 SOLARIS *
|
||||
SunOS4.1 SUNOS
|
||||
Ultrix 4.2 ULTRIX
|
||||
BeOS BEOS *
|
||||
GNU/kFreeBSD KFREEBSD
|
||||
|
||||
* requires editing Makefile
|
||||
|
||||
Windows
|
||||
|
||||
Build jam with nmake on:
|
||||
|
||||
Platform $(OS)
|
||||
-------------------------
|
||||
NT NT *
|
||||
OS/2 OS2 *
|
||||
|
||||
The NT MAXLINE (command line length) is still set in jam.h to
|
||||
996, which was apparently the NT 3.5 limit. On 4.0, the limit
|
||||
is somewhere around 10K. For now, you can increase MAXLINE in
|
||||
jam.h so that a jam running on 4.0 will use the full command
|
||||
line length, but that jam.exe will fail miserably on the older OS.
|
||||
|
||||
On NT, a variable must be set before invoking jam to tell
|
||||
it where the C compiler lives. The name of this variable
|
||||
depends on which compiler you are using:
|
||||
|
||||
BCCROOT: The Borland C compiler
|
||||
MSVCNT: The Microsoft Compiler 5.0 (for NT)
|
||||
MSVC: The Microsoft Compiler 1.5 (for Windows)
|
||||
|
||||
Only MSVCNT has really been tested and is known to work.
|
||||
|
||||
Macintosh
|
||||
|
||||
Build jam with Build.mpw on:
|
||||
|
||||
Platform $(OS)
|
||||
-------------------------
|
||||
Macintosh MAC
|
||||
|
||||
You'll need to edit Build.mpw to set CW.
|
||||
|
||||
VMS
|
||||
|
||||
Build jam with @build.com on:
|
||||
|
||||
Platform $(OS)
|
||||
-------------------------
|
||||
VMS 5.4 VMS
|
||||
OPENVMS OPENVMS
|
||||
|
||||
Comments to the author!
|
||||
|
||||
November, 1993 - release 1.0
|
||||
March, 1995 - release 2.0
|
||||
February, 1996 - release 2.1
|
||||
November, 1997 - release 2.2
|
||||
December, 2000 - release 2.3
|
||||
March, 2002 - release 2.4
|
||||
|
||||
|
||||
Christopher Seiwald
|
||||
|
||||
seiwald@perforce.com
|
||||
@@ -1,941 +0,0 @@
|
||||
Release notes for Jam/MR 2.4
|
||||
(aka Jam - make(1) redux)
|
||||
|
||||
0. Changes between 2.4rc1 and 2.4rc2:
|
||||
|
||||
THESE NOTES WILL BE REMOVED WITH THE FINAL 2.4 RELEASE, SINCE THEY
|
||||
REFER EXCLUSIVELY TO ADJUSTMENTS IN BEHAVIORS NEW BETWEEN 2.3 and
|
||||
2.4:
|
||||
|
||||
Make MATCH generate empty strings for () subexpressions that
|
||||
match nothing, rather than generating nothing at all.
|
||||
Thanks to David Abrahams.
|
||||
|
||||
GLOB now applies the pattern to the directory-less filename,
|
||||
rather than the whole path. Thanks to Niklaus Giger.
|
||||
|
||||
Make Match rule do productized results, rather than
|
||||
using just $(1[1]) as pattern and $(2[1]) as the string.
|
||||
|
||||
1. Release info:
|
||||
|
||||
Jam/MR 2.4
|
||||
March, 21, 2002
|
||||
VERSION 2.4
|
||||
|
||||
2. Compatibility
|
||||
|
||||
Jam 2.4 is upward compatible with Jam 2.3
|
||||
|
||||
The Jam 2.4 language is a superset of the 2.3 language;
|
||||
Jamfiles, Jambase, and other rulesets used in 2.3 can be used
|
||||
with the 2.4 language support.
|
||||
|
||||
3. Changes since 2.3.
|
||||
|
||||
3.1. Changes to Jam Language
|
||||
|
||||
The mechanism for calling rules that return values - "[ rule
|
||||
args ...]", (and 'return' in the rule body), is now a
|
||||
documented part of the language.
|
||||
|
||||
Add "on <target> <rulename> <field1> ..." syntax, to invoke a
|
||||
rule under the influence of a target's specific variables.
|
||||
|
||||
Add "[ on targ rule ... ]" to call a rule returning a value,
|
||||
under the influence of a target's specific variables.
|
||||
|
||||
New 'Glob' builtin that returns a list of files in a list of
|
||||
directories, given a list of patterns.
|
||||
|
||||
New 'while expr { block }' construct.
|
||||
|
||||
New :E=value modifier provides default value if variable unset.
|
||||
|
||||
New :J=joinval modifier concatenates list elements into single
|
||||
element, separated by joinval.
|
||||
|
||||
\ can now be used to escape a space (or any single whitespace
|
||||
character), so that you don't have to resort to quotes.
|
||||
|
||||
New 'Match regexp : string' rule matches regexp against string
|
||||
and returns list of results.
|
||||
|
||||
Rules can now be invoked indirectly, through variable names.
|
||||
If the variable expands to an empty list, no rule is run.
|
||||
If the variable expands to multiple entries, each rule is
|
||||
run with the same arguments. The result of the rule invocation
|
||||
is the concatenation of the results of the rules invoked.
|
||||
|
||||
'Echo' and 'Exit' now have aliases 'echo' and 'exit', since it
|
||||
is really hard to tell that these are built-in rules and not
|
||||
part of the language, like 'include'. Real rules continue to
|
||||
start with a capital.
|
||||
|
||||
3.2. Jambase Changes
|
||||
|
||||
Support for YACCGEN, the suffix used on generated yacc output.
|
||||
|
||||
Fix ups to have jam and p4 build with borland C 5.5,
|
||||
and minor win98 jam support for jam clean
|
||||
|
||||
SubDirHdrs now takes directory names in the same format as
|
||||
SubInclude : one directory element per word.
|
||||
|
||||
More portable support for specifying includes and #defines:
|
||||
New ASHDRS, CCHDRS, CCDEFS, DEFINES, ObjectDefines, FQuote,
|
||||
FIncludes, FDefines. Ordering of cc and c++ flags grossly
|
||||
rearranged.
|
||||
|
||||
Jambase has been compacted by applying the new E: and J:
|
||||
expansion modifiers.
|
||||
|
||||
New SoftLink rule, courtesy of David Lindes. It currently
|
||||
assumes you can pass a -s flag to $(LN).
|
||||
|
||||
3.3 'jam' Changes (See Jam.html)
|
||||
|
||||
Added '-q' (quit quick) option; jam will exit promptly (as if it
|
||||
received an interrupt), as soon as any target fails.
|
||||
|
||||
Added experimental '-g' (build newest sources first) option:
|
||||
all things being equal, normally targets are simply built in
|
||||
the order they appear in the Jamfiles. With this flag, targets
|
||||
with the newest sources are built first. From an idea by Arnt
|
||||
Gulbrandsen. Undocumented (outside this note).
|
||||
|
||||
3.4. Jam internal code changes
|
||||
|
||||
jamgram.yy now defines YYMAXDEPTH to 10000, what it is on
|
||||
FreeBSD, for older yaccs that left it at 150 or so. This is
|
||||
needed for the right-recursion now used in the grammar.
|
||||
|
||||
Optimize rule compilation, with right-recursion instead of left.
|
||||
|
||||
Split jam's built-in rules out to builtins.c from compile.c,
|
||||
so that compile.c only deals with the language.
|
||||
|
||||
Split jam's pathsys.h from filesys.h, since they are really
|
||||
two different pieces.
|
||||
|
||||
evaluate_if(), which evaluated the condition tree for 'if' and
|
||||
returned an int, has been replaced with compile_eval(), which does
|
||||
essentially the same but returns a LIST.
|
||||
|
||||
4. Fixed bugs
|
||||
|
||||
Missing TEMPORARY targets with multiple parents no longer spoil one
|
||||
parent's time with another. The parents' time is used for comparison
|
||||
with dependents, but no longer taken on as the target's own time.
|
||||
|
||||
'actions updated', not 'actions together', now protects targets
|
||||
from being deleted on failed/interrupted updates.
|
||||
|
||||
Fixed broken $(v[1-]), which always returned an empty expansion.
|
||||
Thanks to Ian Godin <ian@sgrail.com>.
|
||||
|
||||
Defining a rule within another rule, and invoking the enclosing
|
||||
rule more than once, would result in giving the first rule a
|
||||
null definition. Fixed.
|
||||
|
||||
$(d:P) now works properly on the mac, climbing up directories.
|
||||
Thanks to Miklos Fazekas <boga@mac.com>.
|
||||
|
||||
No longer (sometimes) treat \ as a directory separator on
|
||||
UNIX. It isn't supposed to be, but was due to bungled ifdefs.
|
||||
|
||||
Applying just :U or :D (or :E, :J) mods no longer causes the
|
||||
variable value to be treated as a filename (parsed and rebuilt
|
||||
using the OS specific pathsys routines). Previously, if _any_
|
||||
mods were present then the value was parsed and rebuilt as if
|
||||
a filename, and that could in certain cases munge the value.
|
||||
Only the file modifiers (:GDBSM) treat the value as a
|
||||
filename.
|
||||
|
||||
Four rules makeCommon, makeGrist, makeString, makeSubDir from
|
||||
jam 2.2 missing in 2.3 have been re-added, with apologies to
|
||||
dtb@cisco.com.
|
||||
|
||||
Return status more likely to be correct when using -d0, now that
|
||||
targets are could as being built even with no debugging output.
|
||||
Thanks to Miklos Fazekas <boga@mac.com>.
|
||||
|
||||
yyacc now suffixes all terminals it defines with _t, so that they
|
||||
don't conflict with other symbols (like RULE with the typedef
|
||||
in rules.h). Thanks to Michael Allard.
|
||||
|
||||
InstallInto now handles multiple sources properly, rather than
|
||||
acting as if each installed target depended on all sources to
|
||||
be installed. $(INSTALLGRIST) is now the default grist for
|
||||
installed targets, rather than the hardcoded 'installed'. Thanks
|
||||
to Stephen Goodson.
|
||||
|
||||
5. Porting
|
||||
|
||||
[MACINTOSH] Paths are now downshifted (internally) so as to
|
||||
handle its case insensitivity. Thanks to Miklos Fazekas
|
||||
<boga@mac.com>.
|
||||
|
||||
[NT] MS changed the macro for the IA64 Windows NT 64bit
|
||||
compiler.
|
||||
|
||||
[CYGWIN] Cygwin jam porting: dance around bison and yyacc.
|
||||
Use bison's -y flag to use yacc's output file naming
|
||||
conventions, and don't use yyacc on systems whose SUFEXE is
|
||||
set.
|
||||
|
||||
[VMS] The Jambase itself was not formatting the CCHDRS and
|
||||
CCDEFS properly: on VMS they can't be appended to, because
|
||||
multiple /define or /include directives don't work. Instead
|
||||
now CCHDRS and CCDEFS is reformatted from HDRS and DEFINES
|
||||
anytime those latter two change. This requires the recent
|
||||
change to jam to allow access to target-specific variables
|
||||
when setting other variables.
|
||||
|
||||
[VMS] Remove exception call when file_dirscan() can't, for
|
||||
some reason, scan a directory. Use a better set of #ifdefs to
|
||||
determine if we're on a vax, rather than relying on the C
|
||||
compiler being a specific version: we're able to build with
|
||||
the C++ compiler now.
|
||||
|
||||
[VMS] Port new jam to run with just cxx compiler.
|
||||
(The C compiler being a extra-cost item).
|
||||
|
||||
[NT] Add entry for DevStudio when the settings are already in the
|
||||
system environment.
|
||||
|
||||
[NT] default $(MV) to "move /y" in Jambase.
|
||||
|
||||
[MINGW] Mingw port by Max Blagai.
|
||||
|
||||
===============================================================================
|
||||
===============================================================================
|
||||
|
||||
|
||||
======= end
|
||||
Release notes for Jam/MR 2.3
|
||||
(aka Jam - make(1) redux)
|
||||
|
||||
0. Bugs fixed since 2.3.1
|
||||
|
||||
PATCHLEVEL 2 - 3/12/2001
|
||||
|
||||
NOCARE changed back: it once again does not applies to targets
|
||||
with sources and/or actions. In 2.3 it was changed to apply to
|
||||
such targets, but that broke header file builds: files that are
|
||||
#included get marked with NOCARE, but if they have source or
|
||||
actions, they still should get built.
|
||||
|
||||
1. Release info:
|
||||
|
||||
Jam/MR 2.3
|
||||
November 16, 2000
|
||||
VERSION 2.3
|
||||
PATCHLEVEL 1
|
||||
|
||||
2. Compatibility
|
||||
|
||||
Jam 2.3 is upward compatible with Jam 2.2.
|
||||
|
||||
The Jam 2.3 language is a superset of the 2.2 language;
|
||||
Jamfiles, Jambase, and other rulesets used in 2.2 can be used
|
||||
with the 2.3 language support.
|
||||
|
||||
3. Changes since 2.2
|
||||
|
||||
3.1. Changes to Jam Language
|
||||
|
||||
Rules now can have values, which can expanded into a list with
|
||||
the new "[ rule args ... ]" syntax. A rule's value is the value
|
||||
of its last statement, though only the following statements have
|
||||
values: if (value of the leg chosen), switch (ditto), set (value
|
||||
of the resulting variable), return (its arguments). Note that
|
||||
'return' doesn't actually return. This support is EXPERIEMENTAL
|
||||
and otherwise undocumented. (2.3.1)
|
||||
|
||||
Because of the new way lists are processed, if a rule has no
|
||||
targets a warning message is no longer issued.
|
||||
|
||||
NOCARE now applies to targets with sources and/or actions,
|
||||
rather than just those without.
|
||||
|
||||
3.2. Jambase Changes
|
||||
|
||||
The HDRPATTERN variable now allows for leading blanks before
|
||||
the #include, to keep up with ANSI. By john@nanaon-sha.co.jp
|
||||
(John Belmonte) (2.2.3).
|
||||
|
||||
HDRPATTERN has been adjusted to avoid mistaking cases like:
|
||||
|
||||
# include <time.h> /* could be <sys/time.h> */
|
||||
|
||||
MkDir now NOUPDATE's $(DOT), so that there are no dependencies
|
||||
on the current directory's timestamp. By john@nanaon-sha.co.jp
|
||||
(John Belmonte).
|
||||
|
||||
The old mock functions like makeDirName, which assigned their
|
||||
results to the variable named as their first argument, have
|
||||
been replaced with real functions using the new [] synxtax.
|
||||
E.g. "makeDirName foo : bar ola" is now "foo = [ fDirName bar ]"
|
||||
|
||||
Install now always does a cp/chmod/etc, rather than using
|
||||
the system's install(1), which invariably seems broken.
|
||||
|
||||
3.3. Jam internal code changes
|
||||
|
||||
$JAMUNAME is set on UNIX. (2.2.4).
|
||||
|
||||
Jam ANSI-fied (2.3.0).
|
||||
|
||||
jam.h now defines a bunch of symbols used by the other source
|
||||
files, so as minimize compiler- and platform-specific ifdefs.
|
||||
|
||||
OSVER is no longer set by jam.h (it was only set for AIX).
|
||||
Jam does not depend on this variable at all, except to set
|
||||
$(OSFULL), which is used to determine jam's build directory.
|
||||
If the user needs to distinguish between various revs of
|
||||
OSs, he must set OSVER in the environment.
|
||||
|
||||
4. Fixed bugs
|
||||
|
||||
Redefining a rule while it was executing could cause jam to
|
||||
crash. Reference counts are now used to prevent that, thanks
|
||||
to Matt Armstrong.
|
||||
|
||||
Logic for computing chunk size when executing PIECEMEAL rules
|
||||
has been reworked to be a little more accurate, without danger
|
||||
of overflow, at the cost of being a little more compute intensive.
|
||||
Instead of computing an estimate chunksize in the (now gone)
|
||||
make1chunk(), make1cmds() now just goes full bore and tries to
|
||||
use all args. When that fails, it backs off by 10% of the source
|
||||
args until the command fits. It takes a little bit more compute
|
||||
time compared to the old logic, but when you're executing actions
|
||||
to build all of Shinola it's still pretty small in the scheme
|
||||
of things.
|
||||
|
||||
The NT handle leak in execunix.c has been fixed, thanks to
|
||||
Gurusamy Sarathy. (2.2.1).
|
||||
|
||||
5. Porting
|
||||
|
||||
Platforms newly supported or updated:
|
||||
|
||||
AmigaOS (with gcc), courtesy of Alain Penders (2.2.2).
|
||||
|
||||
Beos
|
||||
|
||||
CYGWIN 1.1.4, courtesy of John Belmonte <john@nanaon-sha.co.jp>.
|
||||
|
||||
IBM AS400 via Visual Age on NT (primitive)
|
||||
|
||||
IBM OS/390 Unix System Services
|
||||
|
||||
Linux SuSE on OS390
|
||||
|
||||
Linux Mips, ARM
|
||||
|
||||
Lynx
|
||||
|
||||
HPUX 11, IA64
|
||||
|
||||
Mac OS X Server, courtesy of Jeff_Sickel@sickel.com (2.2.5).
|
||||
|
||||
Mac Rhapsody
|
||||
|
||||
MPE IX 6.0
|
||||
|
||||
NetBSD
|
||||
|
||||
QNX RTP (QNX 6.0)
|
||||
|
||||
Siemens Sinix
|
||||
|
||||
UNICOS
|
||||
|
||||
VMS 6.2, 7.1
|
||||
|
||||
Windows NT IA64
|
||||
|
||||
5.1. NT Porting Notes
|
||||
|
||||
Always create tmp .bat file for actions if JAMSHELL is set.
|
||||
That way, if JAMSHELL is a .bat file itself, it can handle
|
||||
single-command actions with more than 9 cmd line args.
|
||||
|
||||
COMSPEC is no longer examined: cmd.exe is always used
|
||||
instead. Only cmd.exe can execute the Jambase rules anyhow.
|
||||
|
||||
Jam can be built with Borland C++ 5.5.
|
||||
|
||||
OS2 fixes: InstallBin now works. Filenames are now downshifted,
|
||||
so mixed case works better there, too. file_dirscan() can now scan
|
||||
the root ("c:\" or "\") directory, which it couldn't handle before.
|
||||
|
||||
var_defines now ignores OS=Windows_NT, because it conflicts
|
||||
with Jam's setting of OS (to NT).
|
||||
|
||||
5.2. Mac OS 8/9 Notes
|
||||
|
||||
The support for Mac is curious at best. It runs under MPW.
|
||||
|
||||
It requires CodeWarrior Pro 5, but no longer requires GUSI.
|
||||
|
||||
Use Build.mpw to bootstrap the build.
|
||||
|
||||
The Mac specific definitions in the Jambase are not intended
|
||||
to be of general purpose, but are sufficient to have Jam build
|
||||
itself.
|
||||
|
||||
===============================================================================
|
||||
===============================================================================
|
||||
|
||||
|
||||
Release Notes for Jam 2.2
|
||||
|
||||
1. Release info:
|
||||
|
||||
Jam 2.2
|
||||
October 22, 1997
|
||||
VERSION 2.2
|
||||
PATCHLEVEL 1
|
||||
|
||||
2. Compatibility
|
||||
|
||||
Jam 2.2 is a roll-up of 'Jam - make(1) redux' release 2.1+.
|
||||
Most of the changes described below were available before this,
|
||||
in the jam.2.1.plus.tar ball.
|
||||
|
||||
The Jam 2.2 language is a superset of the 2.1 language;
|
||||
Jamfiles, Jambase, and other rulesets used in 2.1 can be used
|
||||
with the 2.2 language support.
|
||||
|
||||
See 'Jambase Changes', below, to see if your Jamfiles need any
|
||||
changes to work with the 2.2 Jambase.
|
||||
|
||||
|
||||
3. Changes Since 2.1
|
||||
|
||||
New product name: Jam. (Executable program is still named 'jam'.)
|
||||
|
||||
Documentation rewritten; HTML versions supplied.
|
||||
|
||||
|
||||
3.1 Changes to Jam Language
|
||||
|
||||
Rules may now have more fields than just $(<) and $(>).
|
||||
|
||||
Local variables are now supported.
|
||||
|
||||
The expression 'if $(A) in $(B)' is now supported.
|
||||
|
||||
New variable modifiers :U and :L result in uppercased or lowercased
|
||||
values.
|
||||
|
||||
New variable modifier :P reliably results in parent directory
|
||||
of either a file or directory. (Previously, :D was used, but on VMS
|
||||
:D of a directory name is just the directory name.)
|
||||
|
||||
The :S variable modifier now results in the _last_ suffix if a
|
||||
filename has more than one dot (.) in it.
|
||||
|
||||
New predefined $(JAMDATE) variable is initialized at runtime for
|
||||
simple date stamping.
|
||||
|
||||
New predefined variables $(OSVER) and $(OSPLAT) are used to
|
||||
distinguish among operating system versions and hardware platforms,
|
||||
when possible.
|
||||
|
||||
New 'bind' qualifier on action definitions allows variables
|
||||
other than $(<) and $(>) to be bound with SEARCH and LOCATE paths.
|
||||
|
||||
Action buffer size is no longer limited by MAXCMD. Instead, each
|
||||
line in an action is limited by MAXLINE, defined for each OS, and
|
||||
the entire action size is limited by CMDBUF.
|
||||
|
||||
|
||||
3.2 Jambase Changes (See Jamfile.html)
|
||||
|
||||
Jambase has been reworked to incorporate new language features.
|
||||
|
||||
A handful of new utility rules has been added: makeString,
|
||||
makeDirName, etc.
|
||||
|
||||
New HDRGRIST variable in Jambase allows for headers with the same
|
||||
name to be distinguished.
|
||||
|
||||
LOCATE_TARGET now has a new flavor, LOCATE_SOURCE, that is used by
|
||||
rules that generate source files (e.g., Yacc and Lex).
|
||||
|
||||
Header file includes now happen in the proper order. The limit of
|
||||
10 include files has been eliminated.
|
||||
|
||||
The old "Install" rule is no longer available. Use InstallBin,
|
||||
InstallFile, InstallLib, InstallMan, or InstallShell instead.
|
||||
|
||||
|
||||
3.3 'jam' Changes (See Jam.html)
|
||||
|
||||
'jam' can now be built as a stand-alone program, with Jambase
|
||||
compiled into the executable. An external or alternate Jambase can
|
||||
still be referenced explicitly with -f.
|
||||
|
||||
On command failure, 'jam' now emits the text of the command that
|
||||
failed. This is a compromise between the normal -d1 behavior (where
|
||||
commands were never seen) and -d2 (where commands are always seen).
|
||||
|
||||
'jam' now exits non-zero if it doesn't have a total success. A parse
|
||||
error, sources that can't be found, and targets that can't be built
|
||||
all generate non-zero exit status.
|
||||
|
||||
The debugging levels (-d flags) have been slightly redefined.
|
||||
|
||||
The supplied Jamfile now builds 'jam' into a platform specific
|
||||
subdirectory. This lets you use the same source directory to
|
||||
build 'jam' for more than one platform.
|
||||
|
||||
The supplied Jamfile does not rebuild generated source files by
|
||||
default. (They are supplied with the distribution.) See Jamfile
|
||||
for more information.
|
||||
|
||||
|
||||
4. Fixed Bugs
|
||||
|
||||
The 'include' bug has finally been fixed, so that include
|
||||
statements take effect exactly when they are executed,
|
||||
rather than after the current statement block. This also
|
||||
corrects the problem where an 'include' within an 'if'
|
||||
block would wind up including the file one token after the
|
||||
'if' block's closing brace. Credit goes to Thomas Woods
|
||||
for suggesting that the parse tree generation and parse
|
||||
tree execution be paired in their own loop, rather than
|
||||
having the parser execute the tree directly.
|
||||
|
||||
The setting and extracting of grist has been regularized:
|
||||
normally, if you set a component of a filename (using the
|
||||
:DBSMG= modifiers), you are supposed to include the delimiters
|
||||
that set off the component: that is, you say "$(x:S=.suffix)",
|
||||
including the ".". But with grist it was inconsistent
|
||||
between setting and getting: setting grist required no
|
||||
<>'s, while getting grist included them. Getting grist
|
||||
continues to return the <>'s, but now setting grist can
|
||||
either include them (the new way) or not (the old way).
|
||||
|
||||
'actions together' now suppresses duplicate sources from
|
||||
showing up in $(>).
|
||||
|
||||
Accessing variables whose names contained ['s (as happens with
|
||||
MkDir on VMS) wasn't working, because it treated the [ as an
|
||||
array subscript. Now [ and ] are, like :, handled specially so
|
||||
that they can appear in variable values.
|
||||
|
||||
The 'if' statement now compares all elements in expressions;
|
||||
previously, it only compared the first element of each list.
|
||||
|
||||
If a command line in an action is longer than MAXLINE (formerly
|
||||
MAXCMD), 'jam' now issues an error and exits rather than dumping
|
||||
core.
|
||||
|
||||
If a Jamfile ended without a trailing newline, jam dumped core.
|
||||
This has been fixed.
|
||||
|
||||
|
||||
5. Porting
|
||||
|
||||
See jam.h for the definitive list of supported platforms.
|
||||
Since 2.1, support has been added for:
|
||||
|
||||
Macintosh MPW
|
||||
Alpha VMS
|
||||
Alpha NT
|
||||
NT PowerPC
|
||||
BeOS
|
||||
MVS OE
|
||||
UNIXWARE
|
||||
QNX
|
||||
SINIX (Nixdorf)
|
||||
OS/2
|
||||
Interactive UNIX (ISC), courtesy of Matthew Newhook
|
||||
|
||||
|
||||
5.1 NT Support Fixes
|
||||
|
||||
The NT command executor now handles multiple line actions, by writing
|
||||
multi-line actions to a batch file and executing that.
|
||||
|
||||
Targets are universally lowercased on NT. (Matthew Newhook)
|
||||
|
||||
Concurrent process support is fully enabled for NT.
|
||||
(Gurusamy Sarathy <gsar@engin.umich.edu>)
|
||||
|
||||
Path handling: Jam now knows that the directory component of "D:\"
|
||||
is "D:\", just as on unix it knows that the directory component of
|
||||
"/" is "/". It also now successfully gets the timestamp for "D:\"
|
||||
or just plain "\".
|
||||
|
||||
|
||||
5.2 VMS Support Fixes
|
||||
|
||||
VMS support is much, much better now. The path name manipulation
|
||||
routines (in pathvms.c) were more or less rewritten, and they now
|
||||
handle the vagaries of combining directory and file names properly.
|
||||
|
||||
Targets are universally lowercased on VMS.
|
||||
|
||||
Multi-line command blocks on VMS are now executed in a single system()
|
||||
call rather than separate ones for each line, so that actions can
|
||||
be DCL scripts.
|
||||
|
||||
===============================================================================
|
||||
===============================================================================
|
||||
|
||||
|
||||
Release notes for Jam 2.1.
|
||||
|
||||
1. Release info:
|
||||
Jam 2.1
|
||||
February 1, 1996
|
||||
VERSION 2.1
|
||||
PATCHLEVEL 0
|
||||
|
||||
2. Porting
|
||||
|
||||
Linux is now supported.
|
||||
|
||||
FREEBSD is now supported.
|
||||
|
||||
SCO ("M_XENIX") now supported.
|
||||
|
||||
NCR now supported.
|
||||
|
||||
NEXT support from karthy@dannug.dk (Karsten Thygesen)
|
||||
|
||||
DECC support from zinser@axp614.gsi.de (Martin P.J. Zinser)
|
||||
|
||||
I have changes for OS/2, but no way to test them. Volunteers?
|
||||
I have VMS multiprocess support, but no way to test it. Volunteers?
|
||||
|
||||
2.1. NT Support fixes.
|
||||
|
||||
The NT support is considerably more real than it was in 2.0.
|
||||
Filent.c had its syntax error corrected, it no longer skips the
|
||||
first entry when scanning directories, and it handles string
|
||||
tables in archives (for long object file names).
|
||||
|
||||
The Jambase was changed a bit to support the various C/C++
|
||||
compilers on NT, although it has only been thorougly tested
|
||||
with MSVC20.
|
||||
|
||||
You still need to set MSVCNT or BCCROOT to the root of the
|
||||
the compiler's directory tree, and you'll get an error if you
|
||||
don't set it (rather than getting a pile of mysterious errors).
|
||||
|
||||
2.2. Other porting fixes.
|
||||
|
||||
SPLITPATH now set up for UNIX (:), NT (;), VMS (,)
|
||||
|
||||
Jambase support for Solaris works better now: the location of
|
||||
AR is hardwired to /usr/ccs/bin/ar and it knowns "install"
|
||||
doesn't take -c. Solaris -- how the mighty have fallen.
|
||||
|
||||
To handle Linux's wacko yacc, jamgram.h is now included after
|
||||
scan.h so that YYSTYPE is define.
|
||||
|
||||
3. Jambase Changes (see Jamfile.html)
|
||||
|
||||
SubDir now computes the root directory for the source tree, if
|
||||
the variable naming the root directory isn't set in the environment.
|
||||
It counts the number of directory elements leading from the root
|
||||
to the current directory (as passed to SubDir) and uses that many
|
||||
"../"'s to identify the root. This means that to use SubDir you
|
||||
no longer have to have anything special set in the environment.
|
||||
|
||||
InstallFile is now an alias for InstallLib.
|
||||
|
||||
'first' is now dependency of all pseudo-targets (all, files,
|
||||
exe, lib, shell), so that jamming any of these pseudo-targets
|
||||
also builds any dependencies of 'first'.
|
||||
|
||||
The File rule definition in the Jambase was missing an &.
|
||||
|
||||
The File rule now calls the Clean rule, so that installed files
|
||||
get cleaned.
|
||||
|
||||
4. Jam changes (see Jam.html)
|
||||
|
||||
Variables may now be set on the command line with -svar=value.
|
||||
|
||||
Targets marked with NOUPDATE are now immune to the -a (anyhow)
|
||||
flag. Previously, the MkDir rule would try to recreate directories
|
||||
that already exist when jam was invoked with -a.
|
||||
|
||||
A new variable, $(JAMVERSION), joins the small list of built-in
|
||||
variables. It it set to the release of jam, currently "2.1".
|
||||
|
||||
If an actions fails, jam now deletes the target(s). It won't
|
||||
delete libraries or other targets that are composites. This is
|
||||
now consistent with jam's behavior on interrupts (it deletes the
|
||||
targets).
|
||||
|
||||
Jam had a nasty bug when setting multiple variables to the same
|
||||
value: if the first two variable names were the same, the variable
|
||||
value got trashed. This also affected "on target" variables if
|
||||
the first two targets were the same. For example:
|
||||
|
||||
FOO on bar.c bar.c foo.c = a b c ;
|
||||
|
||||
This would mangle the value of FOO for bar.c and foo.c. This has
|
||||
been fixed.
|
||||
|
||||
Jam would generate bogus numbers when reporting the number of
|
||||
targets updated after an interrupt. It now is more careful about
|
||||
counting.
|
||||
|
||||
The debugging flag -d has been extended. In addition to supporting
|
||||
-dx (turn on debugging for all levels up to x) there is also now
|
||||
-d+x (turn on debugging at only level x). The default output
|
||||
level is -d1 (-or d2 if -n is given); this can be turned off with
|
||||
-d0. The debug levels are listed in jam.1 and jam.h.
|
||||
|
||||
The parsing debug output now uses indenting to indicate when
|
||||
one rule invokes another.
|
||||
|
||||
===============================================================================
|
||||
===============================================================================
|
||||
|
||||
|
||||
Release notes for Jam 2.0.
|
||||
|
||||
1. Release info:
|
||||
Jam 2.0
|
||||
March 10, 1994
|
||||
VERSION 2.0
|
||||
PATCHLEVEL 5
|
||||
|
||||
2. Porting
|
||||
|
||||
Windows/NT is now (crudely) supported, courtesy of Brett Taylor
|
||||
and Laura Wingerd.
|
||||
|
||||
COHERENT/386 is now supported, courtesy of Fred Smith.
|
||||
|
||||
Solaris archive string table for long archive names is now
|
||||
supported, thanks to Mike Matrigali.
|
||||
|
||||
3. Compatibility
|
||||
|
||||
Jam 2.0 syntax is a superset of Jam 1.0 syntax, and thus it can
|
||||
interpret a Jam 1.0 Jambase.
|
||||
|
||||
The Jam 2.0 Jambase is a superset of the Jam 1.0 Jambase, and
|
||||
thus it can include a Jamfile written for Jam 1.0.
|
||||
|
||||
4. Changes from Jam 1.0 to Jam 2.0
|
||||
|
||||
4.1. Documentation changes
|
||||
|
||||
New Jamfile.5 manual page, with lots of examples and easy
|
||||
reading. It replaces both the old "Examples" file as well as
|
||||
the old Jambase.5 manual page.
|
||||
|
||||
jam.1 edited by Stephen W. Liddle and Diane Holt.
|
||||
|
||||
4.2. Jambase Changes (see Jamfile.5)
|
||||
|
||||
4.2.1. New rules:
|
||||
|
||||
There are new rules to make handling subdirectories easier:
|
||||
SubDir, SubInclude, SubDirCcFlags, SubDirHdrs.
|
||||
|
||||
There are new rules to handle file-specific CCFLAGS and HDRS:
|
||||
ObjectCcFlags and ObjectHdrs.
|
||||
|
||||
Misc new rules: HardLink, InstallShell, MkDir.
|
||||
|
||||
New rule "clean" that deletes exactly what jam has built, and
|
||||
"uninstall" that deletes exactly what was installed.
|
||||
|
||||
New rules for handling suffixes .s, .f, .cc, .cpp, .C.
|
||||
|
||||
4.2.2. Old rules:
|
||||
|
||||
The InstallBin, Lib, Man, and the new Shell rules now take the
|
||||
destination directory as the target and the files to be copied
|
||||
as sources. These rules formerly took the files to be copied
|
||||
as targets, and used built-in destination directories of
|
||||
$(BINDIR), $(LIBDIR), $(MANDIR), and $(BINDIR).
|
||||
|
||||
The InstallBin, Lib, Man, and Shell rules use the install(1)
|
||||
program now, instead of doing their own copying.
|
||||
|
||||
The Cc rule now uses -o when possible, rather than moving the
|
||||
result. Some platforms (Pyramid?) have a broken -o.
|
||||
|
||||
Jambase rules taking libraries, objects, and executables now
|
||||
all ignore the suffixes provided and use the one defined in the
|
||||
Jambase for the platform.
|
||||
|
||||
Stupid yyacc support moved out of Jambase, as jam is its only
|
||||
likely user.
|
||||
|
||||
Jambase now purturbs library sources with a "grist" of
|
||||
SOURCE_GRIST.
|
||||
|
||||
4.2.3. Misc:
|
||||
|
||||
The names of the default rules defined in Jambase have been
|
||||
lowercased and un-abbreviated, to be more imake(1) like.
|
||||
|
||||
The Jambase has been reorganized and sorted, with VMS and NT
|
||||
support moved in from their own files.
|
||||
|
||||
The Jambase has been relocated on UNIX from /usr/local/lib/jam
|
||||
to /usr/local/lib.
|
||||
|
||||
4.3. Jam changes (see jam.1)
|
||||
|
||||
4.3.1. Flags:
|
||||
|
||||
New -a (anyhow) flag: means build everything.
|
||||
|
||||
New -j<x> flag: run jobs in parallel.
|
||||
|
||||
Old -t now rebuilds the touched target, rather that just the
|
||||
target's parents.
|
||||
|
||||
-n now implies -d2, so that you see what's happening. The
|
||||
debug level can be subsequently overridden.
|
||||
|
||||
New -v to dump version.
|
||||
|
||||
4.3.2. Rules:
|
||||
|
||||
New ALWAYS rule behaves like -t: always builds target.
|
||||
|
||||
New EXIT rule makes it possible to raise a fatal error.
|
||||
|
||||
New LEAVES rule which say target depends only on the update
|
||||
times of the leaf sources.
|
||||
|
||||
New NOUPDATE rule says built targets only if they don't exist.
|
||||
|
||||
NOTIME has been renamed NOTFILE, to more accurately reflect its
|
||||
meaning (it says a target is not to be bound to a file).
|
||||
|
||||
4.3.3. Variables:
|
||||
|
||||
New special variable JAMSHELL: argv template for command execution
|
||||
shell.
|
||||
|
||||
Variables, both normal and target-specific, can have their
|
||||
value appended with the syntax "var += value" or "var on target
|
||||
+= value".
|
||||
|
||||
"?=" is now synonymous with "default =".
|
||||
|
||||
Imported enviroment variable values are now split at blanks
|
||||
(:'s if the variable name ends in PATH), so that they become
|
||||
proper list values.
|
||||
|
||||
4.3.4. Misc:
|
||||
|
||||
Files to be sourced with "include" are now bound first, so
|
||||
$(SEARCH) and $(LOCATE) affect them. They still can't be
|
||||
built, though.
|
||||
|
||||
New modifier on "actions": "existing" causes $(>) to expand
|
||||
only those files that currently exist.
|
||||
|
||||
4.3.5. Bug fixes:
|
||||
|
||||
When scanning tokens known to be argument lists (such as the
|
||||
arguments to rule invocations and variable assignment), the
|
||||
parser now tells the scanner to ignore alphabetic keywords, as
|
||||
all such lists terminate with punctuation keywords (like : or
|
||||
;). This way, alphabetic keywords don't need to be quoted when
|
||||
they appear as arguments.
|
||||
|
||||
The scanner has been fixed to handle oversized tokens,
|
||||
unterminated quotes, unterminated action blocks, and tokens
|
||||
abutting EOF (i.e. a token with no white space before EOF).
|
||||
|
||||
The progress report "...on xth target..." used to count all
|
||||
targets, rather than just those with updating actions. Since
|
||||
the original pronouncement of targets to be udpated included
|
||||
only those with updating actions, the progress report has been
|
||||
changed to match.
|
||||
|
||||
'If' conditionals now must be single arguments. Previously,
|
||||
they could be zero or more arguments, which didn't make much
|
||||
sense, and made things like 'foo == bar' true. The comparison
|
||||
operator is '=', and '==' just looked like the second of three
|
||||
arguments in the unary "non-empty argument list" conditional.
|
||||
|
||||
Header files indirectly including themselves were mistakenly
|
||||
reported as being dependent on themselves. Recursing through
|
||||
header file dependencies is now done after determining the fate
|
||||
of the target.
|
||||
|
||||
The variable expansion support was expanding $(X)$(UNDEF) as if
|
||||
it were $(X). It now expands to an empty list, like it
|
||||
should.
|
||||
|
||||
The UNIX version of file_build() didn't handle "dir/.suffix"
|
||||
right. Now it does.
|
||||
|
||||
The VMS command buffer was assumed to be as large as 1024 bytes,
|
||||
which isn't the case everywhere as it is related to some weird
|
||||
quota. It has been lowered to 256.
|
||||
|
||||
$(>) and $(<) wouldn't expand in action blocks if the targets
|
||||
were marked with NOTIME. Now they expand properly.
|
||||
|
||||
Malloc() return values are now checked.
|
||||
|
||||
The variable expansion routine var_expand() is now a little
|
||||
faster, by taking a few often needed shortcuts.
|
||||
|
||||
The VMS version of file_build() used the wrong length when
|
||||
re-rooting file names that already had directory compoents.
|
||||
This was fixed.
|
||||
|
||||
Various tracing adjustments were made.
|
||||
|
||||
5. Limitations/Known Bugs
|
||||
|
||||
The new Windows/NT support has only been marginally tested. It
|
||||
is dependent on certain variables being set depending on which
|
||||
compiler you are using. You'll need to look in the file
|
||||
Jambase and see what variables are expected to be set.
|
||||
|
||||
The VMS support has been tested, courtesy of the DEC guest
|
||||
machine, but has not been hammered fully in release 2.0. It
|
||||
was used quite a bit in Jam 1.0.
|
||||
|
||||
Jam clean when there is nothing to clean claims it is updating
|
||||
a target.
|
||||
|
||||
Because the include statement works by pushing a new file in
|
||||
the input stream of the scanner rather than recursively
|
||||
invoking the parser on the new file, multiple include
|
||||
statements in a rule's procedure causes the files to be
|
||||
included in reverse order.
|
||||
|
||||
If the include statement appears inside an if block, the
|
||||
parser's attempt to find the else will cause the text of the
|
||||
included file to appear after the first token following the
|
||||
statement block. This is rarely what is intended.
|
||||
|
||||
In a rule's actions, only $(<) and $(>) refer to the bound file
|
||||
names: all other variable references get the unbound names.
|
||||
This is a pain for $(NEEDLIBS), because it means that library
|
||||
path can't be bound using $(SEARCH) and $(LOCATE).
|
||||
|
||||
With the -j flag, errors from failed commands can get
|
||||
staggeringly mixed up. Also, because targets tend to get built
|
||||
in a quickest-first ordering, dependency information must be
|
||||
quite exact. Finally, beware of parallelizing commands that
|
||||
drop fixed-named files into the current directory, like yacc(1)
|
||||
does.
|
||||
|
||||
A poorly set $(JAMSHELL) is likely to result in silent
|
||||
failure.
|
||||
@@ -16,7 +16,7 @@ _VERSION_ = 3 1 12 ;
|
||||
NAME = boost-jam ;
|
||||
VERSION = $(_VERSION_:J=$(.)) ;
|
||||
RELEASE = 1 ;
|
||||
LICENSE = 1_0 ;
|
||||
LICENSE = LICENSE_1_0 ;
|
||||
|
||||
# Generate development debug binaries?
|
||||
if --debug in $(ARGV)
|
||||
@@ -713,22 +713,28 @@ rule .hdr.scan
|
||||
}
|
||||
.scan [ GLOB . : *.c ] ;
|
||||
|
||||
# Distribution making from here on out.
|
||||
# Distribution making from here on out. Assumes that
|
||||
# the docs are already built as html at ../doc/html. If
|
||||
# they aren't, then the docs are not included in the dist
|
||||
# archive.
|
||||
dist.license =
|
||||
#~ [ GLOB . : LICENSE_$(LICENSE).txt ] [ GLOB [ .path .. .. .. ] : LICENSE_$(LICENSE).txt ] ;
|
||||
[ GLOB . : LICENSE_$(LICENSE).txt ]
|
||||
[ GLOB [ .path .. .. .. ] : LICENSE_$(LICENSE).txt ]
|
||||
[ GLOB [ .path .. boost ] : LICENSE_$(LICENSE).txt ] ;
|
||||
[ GLOB . : $(LICENSE).txt ]
|
||||
;
|
||||
dist.license = $(dist.license:D=)
|
||||
[ GLOB [ .path .. .. .. ] : $(LICENSE).txt ]
|
||||
[ GLOB [ .path .. boost ] : $(LICENSE).txt ] ;
|
||||
dist.docs =
|
||||
$(dist.license[1])
|
||||
index.html
|
||||
Porting
|
||||
Jam.html
|
||||
[ GLOB . : *.png *.css *.html ]
|
||||
;
|
||||
dist.docs = $(dist.docs:D=)
|
||||
[ GLOB [ .path images ] : *.png ]
|
||||
[ GLOB [ .path jam ] : *.html ]
|
||||
;
|
||||
dist.source =
|
||||
[ GLOB . : *.c *.h ]
|
||||
;
|
||||
dist.source = $(dist.source:D=)
|
||||
$(dist.license[1])
|
||||
$(dist.docs)
|
||||
build.jam build.bat build.sh build_vms.com
|
||||
Jambase
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user