2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-17 13:42:14 +00:00

New scripts for easier building of bjam executable.

build.bat: Windows NT BATCH bootstrap script.
build.sh: Unix shell bootstrap script.
build.jam: b/jam standalone Jamfile for building and distribution creation.
boost-jam.spec: modifications to conform to RedHat names/versioning and using new ./build.sh.


[SVN r16085]
This commit is contained in:
Rene Rivera
2002-11-04 06:31:01 +00:00
parent 9ba40619b3
commit 9313cb2851
8 changed files with 1252 additions and 20 deletions

View File

@@ -2,13 +2,13 @@ Name: boost-jam
Version: 3.1.3
Summary: Build tool
Release: 1
Source: boost-jam-%{version}.tar.bz2
Source: %{name}-%{version}.tgz
License: GPL
Group: Development/Tools
URL: http://www.boost.org
Packager: Vladimir Prus <ghost@cs.msu.su>
BuildRoot: /var/tmp/boost-jam-%{version}.root
BuildRoot: /var/tmp/%{name}-%{version}.root
%description
Boost Jam is a build tool based on FTJam, which in turn is based on
@@ -22,26 +22,26 @@ Authors:
Boost Jam : David Abrahams
%prep
%setup -n boost-jam-%{version}
%setup -n %{name}-%{version}
%build
YACC="" LOCATE_TARGET=bin make
YACC="" LOCATE_TARGET=bin ./build.sh
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_docdir}/boost-jam
install -m 755 bin/jam $RPM_BUILD_ROOT%{_bindir}/jam
ln -sf jam $RPM_BUILD_ROOT%{_bindir}/bjam
install -m 644 Jam.html Jambase.html Jamfile.html README RELNOTES INSTALL \
$RPM_BUILD_ROOT%{_docdir}/boost-jam
mkdir -p $RPM_BUILD_ROOT%{_docdir}/boost-jam-%{version}
install -m 755 bin/bjam $RPM_BUILD_ROOT%{_bindir}/bjam-%{version}
ln -sf bjam-%{version} $RPM_BUILD_ROOT%{_bindir}/bjam
ln -sf bjam-%{version} $RPM_BUILD_ROOT%{_bindir}/jam
install -m 644 $BOOST_JAM_DOCS $RPM_BUILD_ROOT%{_docdir}/boost-jam-%{version}
find $RPM_BUILD_ROOT -name CVS -type d -depth -exec rm -r {} \;
%files
%defattr(-,root,root)
%attr(755,root,root) /usr/bin/*
%doc %{_docdir}/boost-jam
%doc %{_docdir}/boost-jam-%{version}
%clean

104
historic/jam/src/build.bat Normal file
View File

@@ -0,0 +1,104 @@
@ECHO OFF
REM Copyrigt (C) 2002 Rene Rivera.
REM Permission to copy, use, modify, sell and distribute this software
REM is granted provided this copyright notice appears in all copies.
REM This software is provided "as is" without express or implied
REM warranty, and with no claim as to its suitability for any purpose.
REM Reset the toolset.
set BOOST_JAM_TOOLSET=
REM The one option we support in the invocation
REM is the name of the toolset to force building
REM with.
if "x%1x" == "xx" goto Guess_Toolset
if "%1" == "metrowerks" goto Set_Metrowerks
if "%1" == "msvc" goto Set_MSVC_Defaut
if "%1" == "vc7" goto Set_MSVC7_Defaut
if "%1" == "borland" goto Set_Borland
ECHO "###"
ECHO "### Unknown toolset:" %1
ECHO "###"
ECHO "### You can specify the toolset as the argument, i.e.:"
ECHO "### .\build.bat msvc"
ECHO "###"
goto Finish
REM Try and guess the toolset to bootstrap the build with...
:Guess_Toolset
if NOT "x%CWFolder%x" == "xx" goto Set_Metrowerks
if NOT "x%MSVCDir%x" == "xx" goto Set_MSVC
if EXIST "C:\Program Files\Microsoft Visual C++\VC98\bin\VCVARS32.BAT" goto Set_MSVC_Defaut
if EXIST "C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" goto Set_MSVS_Defaut
if EXIST "C:\Program Files\Microsoft Visual Studio .NET\VC7\bin\VCVARS32.BAT" goto Set_MSVC7_Defaut
if EXIST "C:\Borland\BCC55\Bin\bcc32.exe" goto Set_Borland
ECHO "###"
ECHO "### Could not find a suitable toolset."
ECHO "###"
ECHO "### You can specify the toolset as the argument, i.e.:"
ECHO "### .\build.bat msvc"
ECHO "###"
goto Finish
:Set_Metrowerks
set BOOST_JAM_TOOLSET=metrowerks
set BOOST_JAM_CC=mwcc -runtime staticsingle -O -DNT
set BOOST_JAM_OPT_JAM=-o bootstrap.%JAM_TOOLSET%\jam0.exe
set BOOST_JAM_OPT_MKJAMBASE=-o bootstrap.%JAM_TOOLSET%\mkjambase0.exe
goto Build
:Set_MSVC
if EXIST "%MSVCDir%\VC7\bin" (set BOOST_JAM_TOOLSET=vc7) else (set BOOST_JAM_TOOLSET=msvc)
set BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG %MSVCDIR%\lib\kernel32.lib
set BOOST_JAM_OPT_JAM=/Febootstrap.%JAM_TOOLSET%\jam0
set BOOST_JAM_OPT_MKJAMBASE=/Febootstrap.%JAM_TOOLSET%\mkjambase0
goto Build
:Set_MSVC_Default
call "C:\Program Files\Microsoft Visual C++\VC98\bin\VCVARS32.BAT"
goto Set_MSVC
:Set_MSVS_Default
call "C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT"
goto Set_MSVC
:Set_MSVC7_Default
call "C:\Program Files\Microsoft Visual Studio .NET\VC7\bin\VCVARS32.BAT"
goto Set_MSVC
:Set_Borland
set BOOST_JAM_TOOLSET=borland
set PATH=%PATH%;C:\Borland\BCC55\Bin
set BOOST_JAM_CC=bcc32 -WC -w- -q -IC:\Borland\BCC55\Include -LC:\Borland\BCC55\Lib -O2 /DNT -nbootstrap.%BOOST_JAM_TOOLSET%
set BOOST_JAM_OPT_JAM=-ejam0
set BOOST_JAM_OPT_MKJAMBASE=-emkjambasejam0
goto Build
:Build
ECHO "###"
ECHO "### Using '%BOOST_JAM_TOOLSET%' toolset."
ECHO "###"
set MKJAMBASE_SOURCES=mkjambase.c
set BJAM_SOURCES=
set BJAM_SOURCES=%BJAM_SOURCES% command.c compile.c execnt.c execunix.c execvms.c expand.c
set BJAM_SOURCES=%BJAM_SOURCES% filent.c fileos2.c fileunix.c filevms.c glob.c hash.c
set BJAM_SOURCES=%BJAM_SOURCES% hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c
set BJAM_SOURCES=%BJAM_SOURCES% newstr.c option.c parse.c pathunix.c pathvms.c regexp.c
set BJAM_SOURCES=%BJAM_SOURCES% rules.c scan.c search.c subst.c timestamp.c variable.c modules.c
set BJAM_SOURCES=%BJAM_SOURCES% strings.c filesys.c builtins.c pwd.c
REM No "yyacc" script available, yet.
@ECHO ON
rd /S /Q bootstrap.%BOOST_JAM_TOOLSET%
md bootstrap.%BOOST_JAM_TOOLSET%
@if EXIST jambase.c goto Build_BJAM
%JAM_CC% %BOOST_JAM_MKJAMBASE_OPT%
@if NOT EXIST ".\bootstrap.%BOOST_JAM_TOOLSET%\mkjambase0.exe" goto Finish
".\bootstrap.%BOOST_JAM_TOOLSET%\mkjambase0.exe" jambase.c Jambase
:Build_BJAM
%BOOST_JAM_CC% %BOOST_JAM_OPT% %BJAM_SOURCES%
@if NOT EXIST ".\bootstrap.%BOOST_JAM_TOOLSET%\jam0.exe" goto Finish
.\bootstrap.%BOOST_JAM_TOOLSET%\jam0 -f build.jam -sBOOST_JAM_TOOLSET=%BOOST_JAM_TOOLSET%
:Finish

393
historic/jam/src/build.jam Normal file
View File

@@ -0,0 +1,393 @@
# Copyrigt (C) 2002 Rene Rivera.
# Permission to copy, use, modify, sell and distribute this software
# is granted provided this copyright notice appears in all copies.
# This software is provided "as is" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Info about what we are building.
NAME = boost-jam ;
VERSION = 3.1.3 ;
RELEASE = 1 ;
# Configure the implemented toolsets. These are minimal
# commands and options to compile the full Jam. When
# adding new toolsets make sure to add them to the
# "known" list also.
rule toolset ( name command : opt.out + : opt.define + : flags * : linklibs * )
{
tool.$(name).cc ?= $(command) ;
tool.$(name).opt.out ?= $(opt.out) ;
tool.$(name).opt.define ?= $(opt.define) ;
tool.$(name).flags ?= $(flags) ;
tool.$(name).linklibs ?= $(linklibs) ;
toolsets += $(name) ;
}
## Borland C++ 5.5.x
toolset borland bcc32 : -e -n : /D : -WC -w- -q -IC:\\Borland\\BCC55\\Include -LC:\\Borland\\BCC55\\Lib -O2 ;
## Comeau C/C++ 4.x
toolset como como : "-o " : -D ;
## MacOSX Darwin, using GCC 2.9.x, 3.x
toolset darwin cc : "-o " : -D : -s -O3 ;
## GCC 2.x, 3.x
toolset gcc gcc : "-o " : -D : -s -O3 ;
## GCC 2.x, 3.x on CYGWIN but without cygwin1.dll
toolset gcc-nocygwin gcc : "-o " : -D : -s -O3 -mno-cygwin ;
## Intel C/C++ for Linux
toolset intel-linux icc : "-o " : -D : -Xlinker -s -O3 ;
## Intel C/C++ for Win32
toolset intel-win32 icl : /Fe : -D : /nologo /GZ /Zi /MLd ;
## KCC ?
toolset kcc KCC : "-o " : -D : -s +K2 ;
## Borland Kylix
toolset kylix bc++ : -o : -D : -tC -q -O2 ;
## Metrowerks CodeWarrior 8.x
{ local mwcc = ; if $(NT) { mwcc = mwcc ; } else { mwcc = mwc$(OSPLAT:L) ; }
toolset metrowerks $(mwcc) : "-o " : -D : -runtime staticsingle -O ; }
## MINGW GCC
toolset mingw gcc : "-o " : -D : -s -O3 -DMINGW ;
## MIPS Pro
toolset mipspro cc : "-o " : -D : -s -O3 -g0 ;
## Microsoft Visual Studio C++ 6.x
toolset msvc cl : /Fe : -D : /nologo /GZ /Zi /MLd : $(MSVCDir)\\lib\\kernel32.lib ;
## Sun Workshop 6 C++
toolset sunpro CC : "-o " : -D : -s -fast -O4 ;
## Compaq Alpha CXX
toolset tru64cxx cc : "-o " : -D : -s -O5 ;
## IBM VisualAge C++
toolset vacpp xlc : "-o " : -D : -s -O3 -qstrict ;
## Microsoft Visual C++ .NET 7.x
toolset vc7 cl : /Fe : -D : /nologo /GZ /Zi /MLd : $(MSVCDir)\\lib\\kernel32.lib ;
# First set the build commands and options according to the
# preset toolset.
toolset = $(BOOST_JAM_TOOLSET) ;
if ! $(toolset) in $(toolsets)
{
EXIT "Unknown toolset '$(toolset)'." ;
}
--cc = $(tool.$(toolset).cc) ;
if $(tool.$(toolset).opt.out[2])
{
--bin = $(tool.$(toolset).opt.out[1]) ;
--dir = $(tool.$(toolset).opt.out[2]) ;
}
else
{
--out = $(tool.$(toolset).opt.out) ;
}
--def = $(tool.$(toolset).opt.define) ;
--flags = $(tool.$(toolset).flags) ;
--defs = $(tool.$(toolset).defines) ;
--libs = $(tool.$(toolset).linklibs) ;
# Put executables in platform-specific subdirectory.
locate-target = $(LOCATE_TARGET) ;
if $(VMS)
{
locate-target ?= [.binvms] ;
platform = vms ;
}
else if $(MAC)
{
locate-target ?= :bin.$(OS:L)$(OSPLAT:L) ;
platform = $(OS:L)$(OSPLAT:L) ;
}
else
{
locate-target ?= bin.$(OS:L)$(OSPLAT:L) ;
platform = $(OS:L)$(OSPLAT:L) ;
}
# We have some different files for UNIX, VMS, and NT.
jam.source =
command.c compile.c expand.c glob.c
hash.c hcache.c headers.c hdrmacro.c
jam.c jambase.c jamgram.c
lists.c make.c make1.c newstr.c
option.c parse.c regexp.c rules.c
scan.c search.c subst.c
timestamp.c variable.c modules.c strings.c filesys.c
builtins.c pwd.c
;
if $(NT)
{
jam.source += execnt.c filent.c pathunix.c ;
}
else if $(OS2)
{
jam.source += execunix.c fileos2.c pathunix.c ;
}
else if $(VMS)
{
jam.source += execvms.c filevms.c pathvms.c ;
}
else if $(MAC)
{
jam.source += execmac.c filemac.c pathmac.c ;
}
else
{
jam.source += execunix.c fileunix.c pathunix.c ;
}
# Enable some optional features.
--defs += OPT_HEADER_CACHE_EXT ;
--defs += OPT_GRAPH_DEBUG_EXT ;
# Bug fixes
--defs += OPT_FIX_TARGET_VARIABLES_EXT ;
# Improvements
--defs += OPT_IMPROVED_PATIENCE_EXT ;
if ( $(OS) = NT || $(NT) ) && ! NT in $(--defs)
{
--defs += NT ;
}
--defs += YYSTACKSIZE=5000 ;
# The basic symbolic targets...
NOTFILE all clean dist ;
ALWAYS clean ;
# Utility rules and actions...
rule .clean
{
.rm clean : $(<) ;
}
if $(NT) { actions piecemeal together existing .rm { del /F /Q $(>) } }
if $(UNIX) { actions piecemeal together existing .rm { rm -f $(>) } }
rule .mkdir
{
NOUPDATE $(<) ;
if $(<:P) { DEPENDS $(<) : $(<:P) ; .mkdir $(<:P) ; }
if ! $(md<$(<)>) { .md $(<) ; md<$(<)> = - ; }
}
actions .md { mkdir $(<) }
rule .exe
{
local exe = $(<) ;
if $(NT) { exe = $(exe:S=.exe) ; }
LOCATE on $(exe) = $(locate-target) ;
DEPENDS $(exe) : $(>) ;
DEPENDS $(exe) : $(locate-target) ;
.mkdir $(locate-target) ;
.cc $(exe) : $(>) ;
.clean $(exe) ;
return $(exe) ;
}
actions .cc { $(--cc) $(--bin)$(<:D=) $(--dir)$(<:D) $(--out)$(<) $(--def)$(--defs) $(--flags) $(--libs) $(>) }
rule .link
{
DEPENDS $(<) : $(>) ;
.clean $(<) ;
}
if $(NT) { actions .link { copy $(>) $(<) } }
if $(UNIX) { actions .link { ln -f $(>) $(<) } }
rule .yyacc
{
DEPENDS $(<) : $(>) ;
.clean $(<) ;
}
actions .yyacc { ./yyacc $(<) $(>) }
yacc ?= [ GLOB $(PATH) : bison bison.exe ] ;
yacc ?= [ GLOB $(PATH) : yacc yacc.exe ] ;
yacc = $(yacc[1]) ;
switch $(yacc:D=:S=)
{
case bison : yacc += -y -d --yacc ; # -t -l -v ;
case yacc : yacc += -d ;
}
rule .yacc
{
DEPENDS $(<) : $(>) ;
.clean $(<) ;
}
if $(NT) { actions .yacc
{ $(yacc) $(>)
rename y.tab.c $(<:S=.c)
rename y.tab.h $(<:S=.h) } }
if $(UNIX) { actions .yacc
{ $(yacc) $(>)
mv -f y.tab.c $(<:S=.c)
mv -f y.tab.h $(<:S=.h) } }
# How to build the grammar.
if $(yacc)
{
.yyacc jamgram.y jamgramtab.h : jamgram.yy ;
.yacc jamgram.c : jamgram.y ;
}
# How to build the compiled in jambase.
rule exe.mkjambase
{
local exe = [ .exe mkjambase : mkjambase.c ] ;
DEPENDS $(<) : $(exe) $(>) ;
LEAVES $(<) ;
if $(NT) { chmod on $(<) = "attrib -r " ; }
if $(UNIX) { chmod on $(<) = "chmod +w " ; }
mkjambase.exe on $(<) = $(exe:R=$(locate-target)) ;
.clean $(<) ;
}
actions exe.mkjambase
{ $(chmod)$(<)
$(mkjambase.exe) $(<) $(>) }
exe.mkjambase jambase.c : Jambase ;
# How to build Jam.
rule exe.jam
{
$(>).exe = [ .exe $(>) : $(jam.source) ] ;
$(<).exe = $(<:S=$($(>).exe:S)) ;
LOCATE on $($(<).exe) = $(locate-target) ;
.link $($(<).exe) : $($(>).exe) ;
DEPENDS all : $($(>).exe) $($(<).exe) ;
}
exe.jam bjam : jam ;
# Distribution making from here on out.
dist.docs =
Porting README RELNOTES
Jam.html Jambase.html Jamfile.html
;
dist.source =
[ GLOB . : *.c *.h ]
;
dist.source = $(dist.source:D=)
$(dist.docs)
build.jam build.bat build.sh
Jambase Jamfile
yyacc jamgram.y jamgram.yy
debian/changelog debian/control debian/copyright debian/jam.man.sgml debian/rules
boost-jam.spec
;
dist.bin =
bjam jam mkjambase
;
dist.bin =
$(dist.bin:S=$(bjam.exe:S):R=$(locate-target))
;
if $(NT)
{
if [ GLOB "C:\\Program Files\\7-ZIP" : "7zn.exe" ]
{
actions .pack { "C:\Program Files\7-ZIP\7zn.exe" a -r -tzip "$(<)" "$(>)" }
actions .zip { "C:\Program Files\7-ZIP\7zn.exe" a -r -tzip "$(<)" "$(>)" }
}
else
{
actions .pack { zip -9r "$(<)" "$(>)" }
actions .zip { zip -9r "$(<)" "$(>)" }
}
actions .cp { cp -a "$(>)" "$(<)" }
}
if $(UNIX)
{
actions .pack { tar zcf "$(<)" "$(>)" }
actions .zip { gzip -c9 "$(>)" > "$(<)" }
actions .cp { cp -af "$(>)" "$(<)" }
}
# The single binary, compressed.
rule .binary
{
local zip = ;
if $(NT) { zip = $($(<).exe:S=.zip) ; }
if $(UNIX) { zip = $($(<).exe:S=.gz) ; }
DEPENDS $(zip) : $($(<).exe) ;
DEPENDS dist : $(zip) ;
LOCATE on $(zip) = $(locate-target) ;
.zip $(zip) : $($(<).exe) ;
.clean $(zip) ;
}
# Package some file.
rule .package ( dst-dir : src-files + )
{
local src-dirs = ;
for local s in $(src-files:D) { if ! $(s) in $(src-dirs) && ! $(s) = "" { src-dirs += $(s) ; } }
local dst-files = $(src-files:R=$(dst-dir)) ;
local dst-dirs = $(src-dirs:R=$(dst-dir)) ;
local pack = ;
if $(NT) { pack = $(dst-dir).zip ; }
if $(UNIX) { pack = $(dst-dir).tgz ; }
DEPENDS dist : $(pack) ;
DEPENDS $(pack) : $(dst-files) ;
for local src-file in $(src-files)
{
local dst-file = $(src-file:R=$(dst-dir)) ;
DEPENDS $(dst-file) : $(src-file) $(dst-file:D) ;
.mkdir $(dst-file:D) ;
.cp $(dst-file) : $(src-file) ;
.clean $(dst-file) ;
}
.pack $(pack) : $(dst-files) ;
.clean $(pack) ;
}
# RPM distro file.
rpm-tool = [ GLOB $(PATH) : "rpm" ] ;
rule .rpm ( name : source )
{
local rpm-arch = ;
switch $(OSPLAT)
{
case X86 : rpm-arch ?= i386 ;
case PPC : rpm-arch ?= ppc ;
case AXP : rpm-arch ?= alpha ;
# no guaranty for these:
case IA64 : rpm-arch ?= ia64 ;
case ARM : rpm-arch ?= arm ;
case SPARC : rpm-arch ?= sparc ;
case * : rpm-arch ?= other ;
}
local target = $(name)-rpm ;
NOTFILE $(target) ;
DEPENDS dist : $(target) ;
DEPENDS $(target) : $(name).$(rpm-arch).rpm $(name).src.rpm ;
DEPENDS $(name).$(rpm-arch).rpm : $(source) ;
DEPENDS $(name).src.rpm : $(name).$(rpm-arch).rpm ;
docs on $(target) = $(dist.docs:J=" ") ;
arch on $(target) = $(rpm-arch) ;
.rpm-build $(target) : $(source) ;
.clean $(name).$(rpm-arch).rpm $(name).src.rpm ;
}
actions .rpm-build
{ export BOOST_JAM_DOCS="$(docs)"
rpm -ta --target $(arch) $(>) | tee rpm.out
cp `grep -e '^Wrote:' rpm.out | sed 's/^Wrote: //'` .
rm -f rpm.out }
# The distribution targets.
.binary bjam ;
.package $(NAME)-$(VERSION) : $(dist.source) ;
.package $(NAME)-$(VERSION)-$(RELEASE)-$(platform) : $(dist.bin) ;
if $(rpm-tool)
{
.rpm $(NAME)-$(VERSION)-$(RELEASE) : $(NAME)-$(VERSION).tgz ;
}
# Update any targets in the specified commandline.
local e-- = ;
for local e in $(ARGV[2-])
{
if ! [ MATCH "^(-).*" : $(e) ] && $(e--) != "-f"
{
# This is not an option, so it is a target name.
UPDATE $(e) ;
}
e-- = $(e) ;
}

119
historic/jam/src/build.sh Normal file
View File

@@ -0,0 +1,119 @@
#!/bin/sh
# Copyrigt (C) 2002 Rene Rivera.
# Permission to copy, use, modify, sell and distribute this software
# is granted provided this copyright notice appears in all copies.
# This software is provided "as is" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Reset the toolset.
BOOST_JAM_TOOLSET=
function echo_run ()
{
echo "$@"
"$@"
r=$?
if test $r -ne 0 ; then
exit $r
fi
}
function error_exit()
{
echo "###"
echo "###" "$@"
echo "###"
echo "### You can specify the toolset as the argument, i.e.:"
echo "### ./build.sh gcc"
echo "###"
exit 1
}
function test_run ()
{
q=`$* 2>/dev/null`
}
function test_uname ()
{
if test_run uname; then
test `uname` = $*
fi
}
# Try and guess the toolset to bootstrap the build with...
function Guess_Toolset ()
{
if test_uname Darwin ; then BOOST_JAM_TOOLSET=darwin
elif test_run gcc --version ; then BOOST_JAM_TOOLSET=gcc
elif [[ -e /opt/intel/compiler50/ia32/bin/iccvars.sh ]] ; then BOOST_JAM_TOOLSET=intel-linux
elif test_run xlc ; then BOOST_JAM_TOOLSET=vacpp
fi
if test "$BOOST_JAM_TOOLSET" = "" ; then
error_exit "Could not find a suitable toolset."
fi
}
# The one option we support in the invocation
# is the name of the toolset to force building
# with.
if test "$1" = ""; then
Guess_Toolset
else
BOOST_JAM_TOOLSET=$1
fi
case $BOOST_JAM_TOOLSET in
gcc)
BOOST_JAM_CC=gcc
BOOST_JAM_OPT_JAM="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
darwin)
BOOST_JAM_CC=cc
BOOST_JAM_OPT_JAM="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
intel-linux)
echo_run /opt/intel/compiler50/ia32/bin/iccvars.sh
BOOST_JAM_CC=icc
BOOST_JAM_OPT_JAM="-Xlinker -O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-Xlinker -O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
vacpp)
BOOST_JAM_CC=xlc
BOOST_JAM_OPT_JAM="-qstrict -O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-qstrict -O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
*)
error_exit "Unknown toolset: $BOOST_JAM_TOOLSET"
;;
esac
echo "###"
echo "### Using '$BOOST_JAM_TOOLSET' toolset."
echo "###"
MKJAMBASE_SOURCES="mkjambase.c"
BJAM_SOURCES="\
command.c compile.c execnt.c execunix.c execvms.c expand.c\
filent.c fileos2.c fileunix.c filevms.c glob.c hash.c\
hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c\
newstr.c option.c parse.c pathunix.c pathvms.c regexp.c\
rules.c scan.c search.c subst.c timestamp.c variable.c modules.c\
strings.c filesys.c builtins.c pwd.c"
echo_run rm -rf bootstrap.$BOOST_JAM_TOOLSET
echo_run mkdir bootstrap.$BOOST_JAM_TOOLSET
if [[ ! -a jamgram.y || ! -a jamgramtab.h ]] ; then
echo_run ./yyacc jamgram.y jamgramtab.h jamgram.yy
fi
if [[ ! -a jambase.c ]] ; then
echo_run ${BOOST_JAM_CC} ${BOOST_JAM_OPT_MKJAMBASE} ${MKJAMBASE_SOURCES}
if test -e "./bootstrap.$BOOST_JAM_TOOLSET/mkjambase0" ; then
echo_run ./bootstrap.$BOOST_JAM_TOOLSET/mkjambase0 jambase.c Jambase
fi
fi
echo_run ${BOOST_JAM_CC} ${BOOST_JAM_OPT_JAM} ${BJAM_SOURCES}
if [[ -e "./bootstrap.$BOOST_JAM_TOOLSET/jam0" ]] ; then
echo_run ./bootstrap.$BOOST_JAM_TOOLSET/jam0 -f build.jam -sBOOST_JAM_TOOLSET=$BOOST_JAM_TOOLSET
fi

View File

@@ -2,13 +2,13 @@ Name: boost-jam
Version: 3.1.3
Summary: Build tool
Release: 1
Source: boost-jam-%{version}.tar.bz2
Source: %{name}-%{version}.tgz
License: GPL
Group: Development/Tools
URL: http://www.boost.org
Packager: Vladimir Prus <ghost@cs.msu.su>
BuildRoot: /var/tmp/boost-jam-%{version}.root
BuildRoot: /var/tmp/%{name}-%{version}.root
%description
Boost Jam is a build tool based on FTJam, which in turn is based on
@@ -22,26 +22,26 @@ Authors:
Boost Jam : David Abrahams
%prep
%setup -n boost-jam-%{version}
%setup -n %{name}-%{version}
%build
YACC="" LOCATE_TARGET=bin make
YACC="" LOCATE_TARGET=bin ./build.sh
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_docdir}/boost-jam
install -m 755 bin/jam $RPM_BUILD_ROOT%{_bindir}/jam
ln -sf jam $RPM_BUILD_ROOT%{_bindir}/bjam
install -m 644 Jam.html Jambase.html Jamfile.html README RELNOTES INSTALL \
$RPM_BUILD_ROOT%{_docdir}/boost-jam
mkdir -p $RPM_BUILD_ROOT%{_docdir}/boost-jam-%{version}
install -m 755 bin/bjam $RPM_BUILD_ROOT%{_bindir}/bjam-%{version}
ln -sf bjam-%{version} $RPM_BUILD_ROOT%{_bindir}/bjam
ln -sf bjam-%{version} $RPM_BUILD_ROOT%{_bindir}/jam
install -m 644 $BOOST_JAM_DOCS $RPM_BUILD_ROOT%{_docdir}/boost-jam-%{version}
find $RPM_BUILD_ROOT -name CVS -type d -depth -exec rm -r {} \;
%files
%defattr(-,root,root)
%attr(755,root,root) /usr/bin/*
%doc %{_docdir}/boost-jam
%doc %{_docdir}/boost-jam-%{version}
%clean

104
jam_src/build.bat Normal file
View File

@@ -0,0 +1,104 @@
@ECHO OFF
REM Copyrigt (C) 2002 Rene Rivera.
REM Permission to copy, use, modify, sell and distribute this software
REM is granted provided this copyright notice appears in all copies.
REM This software is provided "as is" without express or implied
REM warranty, and with no claim as to its suitability for any purpose.
REM Reset the toolset.
set BOOST_JAM_TOOLSET=
REM The one option we support in the invocation
REM is the name of the toolset to force building
REM with.
if "x%1x" == "xx" goto Guess_Toolset
if "%1" == "metrowerks" goto Set_Metrowerks
if "%1" == "msvc" goto Set_MSVC_Defaut
if "%1" == "vc7" goto Set_MSVC7_Defaut
if "%1" == "borland" goto Set_Borland
ECHO "###"
ECHO "### Unknown toolset:" %1
ECHO "###"
ECHO "### You can specify the toolset as the argument, i.e.:"
ECHO "### .\build.bat msvc"
ECHO "###"
goto Finish
REM Try and guess the toolset to bootstrap the build with...
:Guess_Toolset
if NOT "x%CWFolder%x" == "xx" goto Set_Metrowerks
if NOT "x%MSVCDir%x" == "xx" goto Set_MSVC
if EXIST "C:\Program Files\Microsoft Visual C++\VC98\bin\VCVARS32.BAT" goto Set_MSVC_Defaut
if EXIST "C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" goto Set_MSVS_Defaut
if EXIST "C:\Program Files\Microsoft Visual Studio .NET\VC7\bin\VCVARS32.BAT" goto Set_MSVC7_Defaut
if EXIST "C:\Borland\BCC55\Bin\bcc32.exe" goto Set_Borland
ECHO "###"
ECHO "### Could not find a suitable toolset."
ECHO "###"
ECHO "### You can specify the toolset as the argument, i.e.:"
ECHO "### .\build.bat msvc"
ECHO "###"
goto Finish
:Set_Metrowerks
set BOOST_JAM_TOOLSET=metrowerks
set BOOST_JAM_CC=mwcc -runtime staticsingle -O -DNT
set BOOST_JAM_OPT_JAM=-o bootstrap.%JAM_TOOLSET%\jam0.exe
set BOOST_JAM_OPT_MKJAMBASE=-o bootstrap.%JAM_TOOLSET%\mkjambase0.exe
goto Build
:Set_MSVC
if EXIST "%MSVCDir%\VC7\bin" (set BOOST_JAM_TOOLSET=vc7) else (set BOOST_JAM_TOOLSET=msvc)
set BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG %MSVCDIR%\lib\kernel32.lib
set BOOST_JAM_OPT_JAM=/Febootstrap.%JAM_TOOLSET%\jam0
set BOOST_JAM_OPT_MKJAMBASE=/Febootstrap.%JAM_TOOLSET%\mkjambase0
goto Build
:Set_MSVC_Default
call "C:\Program Files\Microsoft Visual C++\VC98\bin\VCVARS32.BAT"
goto Set_MSVC
:Set_MSVS_Default
call "C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT"
goto Set_MSVC
:Set_MSVC7_Default
call "C:\Program Files\Microsoft Visual Studio .NET\VC7\bin\VCVARS32.BAT"
goto Set_MSVC
:Set_Borland
set BOOST_JAM_TOOLSET=borland
set PATH=%PATH%;C:\Borland\BCC55\Bin
set BOOST_JAM_CC=bcc32 -WC -w- -q -IC:\Borland\BCC55\Include -LC:\Borland\BCC55\Lib -O2 /DNT -nbootstrap.%BOOST_JAM_TOOLSET%
set BOOST_JAM_OPT_JAM=-ejam0
set BOOST_JAM_OPT_MKJAMBASE=-emkjambasejam0
goto Build
:Build
ECHO "###"
ECHO "### Using '%BOOST_JAM_TOOLSET%' toolset."
ECHO "###"
set MKJAMBASE_SOURCES=mkjambase.c
set BJAM_SOURCES=
set BJAM_SOURCES=%BJAM_SOURCES% command.c compile.c execnt.c execunix.c execvms.c expand.c
set BJAM_SOURCES=%BJAM_SOURCES% filent.c fileos2.c fileunix.c filevms.c glob.c hash.c
set BJAM_SOURCES=%BJAM_SOURCES% hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c
set BJAM_SOURCES=%BJAM_SOURCES% newstr.c option.c parse.c pathunix.c pathvms.c regexp.c
set BJAM_SOURCES=%BJAM_SOURCES% rules.c scan.c search.c subst.c timestamp.c variable.c modules.c
set BJAM_SOURCES=%BJAM_SOURCES% strings.c filesys.c builtins.c pwd.c
REM No "yyacc" script available, yet.
@ECHO ON
rd /S /Q bootstrap.%BOOST_JAM_TOOLSET%
md bootstrap.%BOOST_JAM_TOOLSET%
@if EXIST jambase.c goto Build_BJAM
%JAM_CC% %BOOST_JAM_MKJAMBASE_OPT%
@if NOT EXIST ".\bootstrap.%BOOST_JAM_TOOLSET%\mkjambase0.exe" goto Finish
".\bootstrap.%BOOST_JAM_TOOLSET%\mkjambase0.exe" jambase.c Jambase
:Build_BJAM
%BOOST_JAM_CC% %BOOST_JAM_OPT% %BJAM_SOURCES%
@if NOT EXIST ".\bootstrap.%BOOST_JAM_TOOLSET%\jam0.exe" goto Finish
.\bootstrap.%BOOST_JAM_TOOLSET%\jam0 -f build.jam -sBOOST_JAM_TOOLSET=%BOOST_JAM_TOOLSET%
:Finish

393
jam_src/build.jam Normal file
View File

@@ -0,0 +1,393 @@
# Copyrigt (C) 2002 Rene Rivera.
# Permission to copy, use, modify, sell and distribute this software
# is granted provided this copyright notice appears in all copies.
# This software is provided "as is" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Info about what we are building.
NAME = boost-jam ;
VERSION = 3.1.3 ;
RELEASE = 1 ;
# Configure the implemented toolsets. These are minimal
# commands and options to compile the full Jam. When
# adding new toolsets make sure to add them to the
# "known" list also.
rule toolset ( name command : opt.out + : opt.define + : flags * : linklibs * )
{
tool.$(name).cc ?= $(command) ;
tool.$(name).opt.out ?= $(opt.out) ;
tool.$(name).opt.define ?= $(opt.define) ;
tool.$(name).flags ?= $(flags) ;
tool.$(name).linklibs ?= $(linklibs) ;
toolsets += $(name) ;
}
## Borland C++ 5.5.x
toolset borland bcc32 : -e -n : /D : -WC -w- -q -IC:\\Borland\\BCC55\\Include -LC:\\Borland\\BCC55\\Lib -O2 ;
## Comeau C/C++ 4.x
toolset como como : "-o " : -D ;
## MacOSX Darwin, using GCC 2.9.x, 3.x
toolset darwin cc : "-o " : -D : -s -O3 ;
## GCC 2.x, 3.x
toolset gcc gcc : "-o " : -D : -s -O3 ;
## GCC 2.x, 3.x on CYGWIN but without cygwin1.dll
toolset gcc-nocygwin gcc : "-o " : -D : -s -O3 -mno-cygwin ;
## Intel C/C++ for Linux
toolset intel-linux icc : "-o " : -D : -Xlinker -s -O3 ;
## Intel C/C++ for Win32
toolset intel-win32 icl : /Fe : -D : /nologo /GZ /Zi /MLd ;
## KCC ?
toolset kcc KCC : "-o " : -D : -s +K2 ;
## Borland Kylix
toolset kylix bc++ : -o : -D : -tC -q -O2 ;
## Metrowerks CodeWarrior 8.x
{ local mwcc = ; if $(NT) { mwcc = mwcc ; } else { mwcc = mwc$(OSPLAT:L) ; }
toolset metrowerks $(mwcc) : "-o " : -D : -runtime staticsingle -O ; }
## MINGW GCC
toolset mingw gcc : "-o " : -D : -s -O3 -DMINGW ;
## MIPS Pro
toolset mipspro cc : "-o " : -D : -s -O3 -g0 ;
## Microsoft Visual Studio C++ 6.x
toolset msvc cl : /Fe : -D : /nologo /GZ /Zi /MLd : $(MSVCDir)\\lib\\kernel32.lib ;
## Sun Workshop 6 C++
toolset sunpro CC : "-o " : -D : -s -fast -O4 ;
## Compaq Alpha CXX
toolset tru64cxx cc : "-o " : -D : -s -O5 ;
## IBM VisualAge C++
toolset vacpp xlc : "-o " : -D : -s -O3 -qstrict ;
## Microsoft Visual C++ .NET 7.x
toolset vc7 cl : /Fe : -D : /nologo /GZ /Zi /MLd : $(MSVCDir)\\lib\\kernel32.lib ;
# First set the build commands and options according to the
# preset toolset.
toolset = $(BOOST_JAM_TOOLSET) ;
if ! $(toolset) in $(toolsets)
{
EXIT "Unknown toolset '$(toolset)'." ;
}
--cc = $(tool.$(toolset).cc) ;
if $(tool.$(toolset).opt.out[2])
{
--bin = $(tool.$(toolset).opt.out[1]) ;
--dir = $(tool.$(toolset).opt.out[2]) ;
}
else
{
--out = $(tool.$(toolset).opt.out) ;
}
--def = $(tool.$(toolset).opt.define) ;
--flags = $(tool.$(toolset).flags) ;
--defs = $(tool.$(toolset).defines) ;
--libs = $(tool.$(toolset).linklibs) ;
# Put executables in platform-specific subdirectory.
locate-target = $(LOCATE_TARGET) ;
if $(VMS)
{
locate-target ?= [.binvms] ;
platform = vms ;
}
else if $(MAC)
{
locate-target ?= :bin.$(OS:L)$(OSPLAT:L) ;
platform = $(OS:L)$(OSPLAT:L) ;
}
else
{
locate-target ?= bin.$(OS:L)$(OSPLAT:L) ;
platform = $(OS:L)$(OSPLAT:L) ;
}
# We have some different files for UNIX, VMS, and NT.
jam.source =
command.c compile.c expand.c glob.c
hash.c hcache.c headers.c hdrmacro.c
jam.c jambase.c jamgram.c
lists.c make.c make1.c newstr.c
option.c parse.c regexp.c rules.c
scan.c search.c subst.c
timestamp.c variable.c modules.c strings.c filesys.c
builtins.c pwd.c
;
if $(NT)
{
jam.source += execnt.c filent.c pathunix.c ;
}
else if $(OS2)
{
jam.source += execunix.c fileos2.c pathunix.c ;
}
else if $(VMS)
{
jam.source += execvms.c filevms.c pathvms.c ;
}
else if $(MAC)
{
jam.source += execmac.c filemac.c pathmac.c ;
}
else
{
jam.source += execunix.c fileunix.c pathunix.c ;
}
# Enable some optional features.
--defs += OPT_HEADER_CACHE_EXT ;
--defs += OPT_GRAPH_DEBUG_EXT ;
# Bug fixes
--defs += OPT_FIX_TARGET_VARIABLES_EXT ;
# Improvements
--defs += OPT_IMPROVED_PATIENCE_EXT ;
if ( $(OS) = NT || $(NT) ) && ! NT in $(--defs)
{
--defs += NT ;
}
--defs += YYSTACKSIZE=5000 ;
# The basic symbolic targets...
NOTFILE all clean dist ;
ALWAYS clean ;
# Utility rules and actions...
rule .clean
{
.rm clean : $(<) ;
}
if $(NT) { actions piecemeal together existing .rm { del /F /Q $(>) } }
if $(UNIX) { actions piecemeal together existing .rm { rm -f $(>) } }
rule .mkdir
{
NOUPDATE $(<) ;
if $(<:P) { DEPENDS $(<) : $(<:P) ; .mkdir $(<:P) ; }
if ! $(md<$(<)>) { .md $(<) ; md<$(<)> = - ; }
}
actions .md { mkdir $(<) }
rule .exe
{
local exe = $(<) ;
if $(NT) { exe = $(exe:S=.exe) ; }
LOCATE on $(exe) = $(locate-target) ;
DEPENDS $(exe) : $(>) ;
DEPENDS $(exe) : $(locate-target) ;
.mkdir $(locate-target) ;
.cc $(exe) : $(>) ;
.clean $(exe) ;
return $(exe) ;
}
actions .cc { $(--cc) $(--bin)$(<:D=) $(--dir)$(<:D) $(--out)$(<) $(--def)$(--defs) $(--flags) $(--libs) $(>) }
rule .link
{
DEPENDS $(<) : $(>) ;
.clean $(<) ;
}
if $(NT) { actions .link { copy $(>) $(<) } }
if $(UNIX) { actions .link { ln -f $(>) $(<) } }
rule .yyacc
{
DEPENDS $(<) : $(>) ;
.clean $(<) ;
}
actions .yyacc { ./yyacc $(<) $(>) }
yacc ?= [ GLOB $(PATH) : bison bison.exe ] ;
yacc ?= [ GLOB $(PATH) : yacc yacc.exe ] ;
yacc = $(yacc[1]) ;
switch $(yacc:D=:S=)
{
case bison : yacc += -y -d --yacc ; # -t -l -v ;
case yacc : yacc += -d ;
}
rule .yacc
{
DEPENDS $(<) : $(>) ;
.clean $(<) ;
}
if $(NT) { actions .yacc
{ $(yacc) $(>)
rename y.tab.c $(<:S=.c)
rename y.tab.h $(<:S=.h) } }
if $(UNIX) { actions .yacc
{ $(yacc) $(>)
mv -f y.tab.c $(<:S=.c)
mv -f y.tab.h $(<:S=.h) } }
# How to build the grammar.
if $(yacc)
{
.yyacc jamgram.y jamgramtab.h : jamgram.yy ;
.yacc jamgram.c : jamgram.y ;
}
# How to build the compiled in jambase.
rule exe.mkjambase
{
local exe = [ .exe mkjambase : mkjambase.c ] ;
DEPENDS $(<) : $(exe) $(>) ;
LEAVES $(<) ;
if $(NT) { chmod on $(<) = "attrib -r " ; }
if $(UNIX) { chmod on $(<) = "chmod +w " ; }
mkjambase.exe on $(<) = $(exe:R=$(locate-target)) ;
.clean $(<) ;
}
actions exe.mkjambase
{ $(chmod)$(<)
$(mkjambase.exe) $(<) $(>) }
exe.mkjambase jambase.c : Jambase ;
# How to build Jam.
rule exe.jam
{
$(>).exe = [ .exe $(>) : $(jam.source) ] ;
$(<).exe = $(<:S=$($(>).exe:S)) ;
LOCATE on $($(<).exe) = $(locate-target) ;
.link $($(<).exe) : $($(>).exe) ;
DEPENDS all : $($(>).exe) $($(<).exe) ;
}
exe.jam bjam : jam ;
# Distribution making from here on out.
dist.docs =
Porting README RELNOTES
Jam.html Jambase.html Jamfile.html
;
dist.source =
[ GLOB . : *.c *.h ]
;
dist.source = $(dist.source:D=)
$(dist.docs)
build.jam build.bat build.sh
Jambase Jamfile
yyacc jamgram.y jamgram.yy
debian/changelog debian/control debian/copyright debian/jam.man.sgml debian/rules
boost-jam.spec
;
dist.bin =
bjam jam mkjambase
;
dist.bin =
$(dist.bin:S=$(bjam.exe:S):R=$(locate-target))
;
if $(NT)
{
if [ GLOB "C:\\Program Files\\7-ZIP" : "7zn.exe" ]
{
actions .pack { "C:\Program Files\7-ZIP\7zn.exe" a -r -tzip "$(<)" "$(>)" }
actions .zip { "C:\Program Files\7-ZIP\7zn.exe" a -r -tzip "$(<)" "$(>)" }
}
else
{
actions .pack { zip -9r "$(<)" "$(>)" }
actions .zip { zip -9r "$(<)" "$(>)" }
}
actions .cp { cp -a "$(>)" "$(<)" }
}
if $(UNIX)
{
actions .pack { tar zcf "$(<)" "$(>)" }
actions .zip { gzip -c9 "$(>)" > "$(<)" }
actions .cp { cp -af "$(>)" "$(<)" }
}
# The single binary, compressed.
rule .binary
{
local zip = ;
if $(NT) { zip = $($(<).exe:S=.zip) ; }
if $(UNIX) { zip = $($(<).exe:S=.gz) ; }
DEPENDS $(zip) : $($(<).exe) ;
DEPENDS dist : $(zip) ;
LOCATE on $(zip) = $(locate-target) ;
.zip $(zip) : $($(<).exe) ;
.clean $(zip) ;
}
# Package some file.
rule .package ( dst-dir : src-files + )
{
local src-dirs = ;
for local s in $(src-files:D) { if ! $(s) in $(src-dirs) && ! $(s) = "" { src-dirs += $(s) ; } }
local dst-files = $(src-files:R=$(dst-dir)) ;
local dst-dirs = $(src-dirs:R=$(dst-dir)) ;
local pack = ;
if $(NT) { pack = $(dst-dir).zip ; }
if $(UNIX) { pack = $(dst-dir).tgz ; }
DEPENDS dist : $(pack) ;
DEPENDS $(pack) : $(dst-files) ;
for local src-file in $(src-files)
{
local dst-file = $(src-file:R=$(dst-dir)) ;
DEPENDS $(dst-file) : $(src-file) $(dst-file:D) ;
.mkdir $(dst-file:D) ;
.cp $(dst-file) : $(src-file) ;
.clean $(dst-file) ;
}
.pack $(pack) : $(dst-files) ;
.clean $(pack) ;
}
# RPM distro file.
rpm-tool = [ GLOB $(PATH) : "rpm" ] ;
rule .rpm ( name : source )
{
local rpm-arch = ;
switch $(OSPLAT)
{
case X86 : rpm-arch ?= i386 ;
case PPC : rpm-arch ?= ppc ;
case AXP : rpm-arch ?= alpha ;
# no guaranty for these:
case IA64 : rpm-arch ?= ia64 ;
case ARM : rpm-arch ?= arm ;
case SPARC : rpm-arch ?= sparc ;
case * : rpm-arch ?= other ;
}
local target = $(name)-rpm ;
NOTFILE $(target) ;
DEPENDS dist : $(target) ;
DEPENDS $(target) : $(name).$(rpm-arch).rpm $(name).src.rpm ;
DEPENDS $(name).$(rpm-arch).rpm : $(source) ;
DEPENDS $(name).src.rpm : $(name).$(rpm-arch).rpm ;
docs on $(target) = $(dist.docs:J=" ") ;
arch on $(target) = $(rpm-arch) ;
.rpm-build $(target) : $(source) ;
.clean $(name).$(rpm-arch).rpm $(name).src.rpm ;
}
actions .rpm-build
{ export BOOST_JAM_DOCS="$(docs)"
rpm -ta --target $(arch) $(>) | tee rpm.out
cp `grep -e '^Wrote:' rpm.out | sed 's/^Wrote: //'` .
rm -f rpm.out }
# The distribution targets.
.binary bjam ;
.package $(NAME)-$(VERSION) : $(dist.source) ;
.package $(NAME)-$(VERSION)-$(RELEASE)-$(platform) : $(dist.bin) ;
if $(rpm-tool)
{
.rpm $(NAME)-$(VERSION)-$(RELEASE) : $(NAME)-$(VERSION).tgz ;
}
# Update any targets in the specified commandline.
local e-- = ;
for local e in $(ARGV[2-])
{
if ! [ MATCH "^(-).*" : $(e) ] && $(e--) != "-f"
{
# This is not an option, so it is a target name.
UPDATE $(e) ;
}
e-- = $(e) ;
}

119
jam_src/build.sh Normal file
View File

@@ -0,0 +1,119 @@
#!/bin/sh
# Copyrigt (C) 2002 Rene Rivera.
# Permission to copy, use, modify, sell and distribute this software
# is granted provided this copyright notice appears in all copies.
# This software is provided "as is" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Reset the toolset.
BOOST_JAM_TOOLSET=
function echo_run ()
{
echo "$@"
"$@"
r=$?
if test $r -ne 0 ; then
exit $r
fi
}
function error_exit()
{
echo "###"
echo "###" "$@"
echo "###"
echo "### You can specify the toolset as the argument, i.e.:"
echo "### ./build.sh gcc"
echo "###"
exit 1
}
function test_run ()
{
q=`$* 2>/dev/null`
}
function test_uname ()
{
if test_run uname; then
test `uname` = $*
fi
}
# Try and guess the toolset to bootstrap the build with...
function Guess_Toolset ()
{
if test_uname Darwin ; then BOOST_JAM_TOOLSET=darwin
elif test_run gcc --version ; then BOOST_JAM_TOOLSET=gcc
elif [[ -e /opt/intel/compiler50/ia32/bin/iccvars.sh ]] ; then BOOST_JAM_TOOLSET=intel-linux
elif test_run xlc ; then BOOST_JAM_TOOLSET=vacpp
fi
if test "$BOOST_JAM_TOOLSET" = "" ; then
error_exit "Could not find a suitable toolset."
fi
}
# The one option we support in the invocation
# is the name of the toolset to force building
# with.
if test "$1" = ""; then
Guess_Toolset
else
BOOST_JAM_TOOLSET=$1
fi
case $BOOST_JAM_TOOLSET in
gcc)
BOOST_JAM_CC=gcc
BOOST_JAM_OPT_JAM="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
darwin)
BOOST_JAM_CC=cc
BOOST_JAM_OPT_JAM="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
intel-linux)
echo_run /opt/intel/compiler50/ia32/bin/iccvars.sh
BOOST_JAM_CC=icc
BOOST_JAM_OPT_JAM="-Xlinker -O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-Xlinker -O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
vacpp)
BOOST_JAM_CC=xlc
BOOST_JAM_OPT_JAM="-qstrict -O3 -o bootstrap.$BOOST_JAM_TOOLSET/jam0"
BOOST_JAM_OPT_MKJAMBASE="-qstrict -O3 -o bootstrap.$BOOST_JAM_TOOLSET/mkjambase0"
;;
*)
error_exit "Unknown toolset: $BOOST_JAM_TOOLSET"
;;
esac
echo "###"
echo "### Using '$BOOST_JAM_TOOLSET' toolset."
echo "###"
MKJAMBASE_SOURCES="mkjambase.c"
BJAM_SOURCES="\
command.c compile.c execnt.c execunix.c execvms.c expand.c\
filent.c fileos2.c fileunix.c filevms.c glob.c hash.c\
hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c\
newstr.c option.c parse.c pathunix.c pathvms.c regexp.c\
rules.c scan.c search.c subst.c timestamp.c variable.c modules.c\
strings.c filesys.c builtins.c pwd.c"
echo_run rm -rf bootstrap.$BOOST_JAM_TOOLSET
echo_run mkdir bootstrap.$BOOST_JAM_TOOLSET
if [[ ! -a jamgram.y || ! -a jamgramtab.h ]] ; then
echo_run ./yyacc jamgram.y jamgramtab.h jamgram.yy
fi
if [[ ! -a jambase.c ]] ; then
echo_run ${BOOST_JAM_CC} ${BOOST_JAM_OPT_MKJAMBASE} ${MKJAMBASE_SOURCES}
if test -e "./bootstrap.$BOOST_JAM_TOOLSET/mkjambase0" ; then
echo_run ./bootstrap.$BOOST_JAM_TOOLSET/mkjambase0 jambase.c Jambase
fi
fi
echo_run ${BOOST_JAM_CC} ${BOOST_JAM_OPT_JAM} ${BJAM_SOURCES}
if [[ -e "./bootstrap.$BOOST_JAM_TOOLSET/jam0" ]] ; then
echo_run ./bootstrap.$BOOST_JAM_TOOLSET/jam0 -f build.jam -sBOOST_JAM_TOOLSET=$BOOST_JAM_TOOLSET
fi