2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-16 01:12:13 +00:00

Add preliminary support for building the final VMS bjam executable.

[SVN r18286]
This commit is contained in:
Rene Rivera
2003-04-21 04:38:30 +00:00
parent 5806cc93c0
commit cbf8cc37e1
2 changed files with 174 additions and 38 deletions

View File

@@ -1,4 +1,4 @@
# Copyrigt (C) 2002 Rene Rivera.
# Copyrigt (C) 2002-2003 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
@@ -7,7 +7,7 @@
# Info about what we are building.
NAME = boost-jam ;
VERSION = 3.1.4 ;
RELEASE = 1 ;
RELEASE = 2 ;
# Generate development debug binaries?
if --debug in $(ARGV)
@@ -34,21 +34,22 @@ toolset-root = [ MATCH --toolset-root=(.*) : $(ARGV) ] ;
# 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 + : release-flags * : debug-flags * : linklibs * )
rule toolset ( name command .type ? : opt.out + : opt.define * : release-flags * : debug-flags * : linklibs * )
{
tool.$(name).cc ?= $(command) ;
tool.$(name).opt.out ?= $(opt.out) ;
tool.$(name).opt.define ?= $(opt.define) ;
.type ?= "" ;
tool.$(name)$(.type).cc ?= $(command) ;
tool.$(name)$(.type).opt.out ?= $(opt.out) ;
tool.$(name)$(.type).opt.define ?= $(opt.define) ;
if $(debug)
{
tool.$(name).flags ?= $(debug-flags) ;
tool.$(name)$(.type).flags ?= $(debug-flags) ;
}
else
{
tool.$(name).flags ?= $(release-flags) ;
tool.$(name)$(.type).flags ?= $(release-flags) ;
}
tool.$(name).linklibs ?= $(linklibs) ;
toolsets += $(name) ;
tool.$(name)$(.type).linklibs ?= $(linklibs) ;
if ! $(name) in $(toolsets) { toolsets += $(name) ; }
}
## HP-UX aCC compiler
toolset acc cc : "-o " : -D
@@ -106,8 +107,8 @@ toolset kylix bc++ : -o : -D
}
## MINGW GCC
toolset mingw gcc : "-o " : -D
: -s -O3 -finline-functions -D$(OS)
: -g -O0 -fno-inline -pg -D$(OS) ;
: -s -O3 -finline-functions
: -g -O0 -fno-inline -pg ;
## MIPS Pro
toolset mipspro cc : "-o " : -D
: -s -O3 -g0 -INLINE:none
@@ -134,6 +135,15 @@ toolset vc7 cl : /Fe : -D
: /nologo /ML /O2 /Ob2 /Gy /GF /GA /GB
: /nologo /MLd /DEBUG /Z7 /Od /Ob0
: /LIBPATH:$(LIB:J=" ") kernel32.lib ;
## VMS/OpenVMS DEC C
toolset vms cc : /OBJECT= : /DEFINE=
: /STANDARD=VAXC
: /STANDARD=VAXC
;
toolset vms link .link : /EXECUTABLE= :
: /NOMAP
: /NOMAP
;
# First set the build commands and options according to the
# preset toolset.
@@ -160,6 +170,23 @@ else
--flags = $(tool.$(toolset).flags) ;
--defs = $(tool.$(toolset).defines) ;
--libs = $(tool.$(toolset).linklibs) ;
if $(tool.$(toolset).link.cc)
{
--link = $(tool.$(toolset).link.cc) ;
if $(tool.$(toolset).link.opt.out[2])
{
--link-bin = $(tool.$(toolset).link.opt.out[1]) ;
--link-dir = $(tool.$(toolset).link.opt.out[2]) ;
}
else
{
--link-out = $(tool.$(toolset).link.opt.out) ;
}
--link-def = $(tool.$(toolset).link.opt.define) ;
--link-flags = $(tool.$(toolset).link.flags) ;
--link-defs = $(tool.$(toolset).link.defines) ;
--link-libs = $(tool.$(toolset).link.linklibs) ;
}
# Put executables in platform-specific subdirectory.
locate-target = $(LOCATE_TARGET) ;
@@ -248,6 +275,10 @@ if ( $(OS) = NT || $(NT) ) && ! NT in $(--defs)
{
--defs += NT ;
}
if $(VMS)
{
--defs += VMS ;
}
--defs += YYSTACKSIZE=5000 ;
# The basic symbolic targets...
@@ -261,8 +292,10 @@ rule .clean
}
if $(NT) { actions piecemeal together existing .rm { del /F /Q $(>) } }
if $(UNIX) { actions piecemeal together existing .rm { rm -f $(>) } }
if $(VMS) { actions piecemeal together existing .rm { DELETE $(>[--2]:J=";*, ") $(>[-1]);* } }
if $(NT) { --chmod+w = "attrib -r " ; }
if $(UNIX) { --chmod+w = "chmod +w " ; }
if $(VMS) { --chmod+w = "SET FILE/PROT=(S:RWED) " ; }
rule .mkdir
{
@@ -270,22 +303,52 @@ rule .mkdir
if $(<:P) { DEPENDS $(<) : $(<:P) ; .mkdir $(<:P) ; }
if ! $(md<$(<)>) { .md $(<) ; md<$(<)> = - ; }
}
actions .md { mkdir $(<) }
if $(NT) { actions .md { md $(<) } }
if $(UNIX) { actions .md { mkdir $(<) } }
if $(VMS) { actions .md { CREATE/DIR $(<J=", ") } }
rule .exe
{
local exe = $(<) ;
if $(NT) || ( $(UNIX) && $(OS) = CYGWIN ) { exe = $(exe:S=.exe) ; }
if $(NT) || ( $(UNIX) && $(OS) = CYGWIN ) || $(VMS) { exe = $(exe:S=.exe) ; }
LOCATE on $(exe) = $(locate-target) ;
DEPENDS all : $(exe) ;
DEPENDS $(exe) : $(>) ;
DEPENDS $(exe) : $(locate-target) ;
.mkdir $(locate-target) ;
.cc $(exe) : $(>) ;
.clean $(exe) ;
if $(--link)
{
for local s in $(>)
{
local o = $(s:S=.o) ;
LOCATE on $(o) = $(locate-target) ;
DEPENDS $(exe) : $(o) ;
DEPENDS $(o) : $(s) ;
DEPENDS $(o) : $(locate-target) ;
.cc $(o) : $(s) ;
.clean $(o) ;
}
DEPENDS $(exe) : $(>:S=.o) ;
DEPENDS $(exe) : $(locate-target) ;
.ld $(exe) : $(>:S=.o) ;
.clean $(exe) ;
}
else
{
DEPENDS $(exe) : $(>) ;
DEPENDS $(exe) : $(locate-target) ;
.cc $(exe) : $(>) ;
.clean $(exe) ;
}
return $(exe) ;
}
actions .cc { $(--cc) $(--bin)$(<:D=) $(--dir)$(<:D) $(--out)$(<) $(--def)$(--defs) $(--flags) "$(--libs)" $(>) }
if $(VMS)
{
actions .ld { $(--link) $(--link-bin)$(<:D=) $(--link-dir)$(<:D) $(--link-out)$(<) $(--link-def)$(--link-defs) $(--link-flags) "$(--link-libs)" $(>J=", ") }
}
else
{
actions .ld { $(--link) $(--link-bin)$(<:D=) $(--link-dir)$(<:D) $(--link-out)$(<) $(--link-def)$(--link-defs) $(--link-flags) "$(--link-libs)" $(>) }
}
rule .link
{
@@ -295,6 +358,7 @@ rule .link
}
if $(NT) { actions .link { copy $(>) $(<) } }
if $(UNIX) { actions .link { ln -f $(>) $(<) } }
if $(VMS) { actions .link { COPY/REPLACE $(>) $(<) } }
# Generate the grammar tokens table, and the real yacc grammar.
rule .yyacc
@@ -332,6 +396,10 @@ if $(UNIX) { actions .yacc
{ $(yacc) $(>)
mv -f y.tab.c $(<[1]:S=.c)
mv -f y.tab.h $(<[1]:S=.h) } }
if $(VMS) { actions .yacc
{ $(yacc) $(>)
RENAME y_tab.c $(<[1]:S=.c)
RENAME -f y_tab.h $(<[1]:S=.h) } }
if $(yacc)
{
.yacc jamgram.c jamgram.h : jamgram.y ;
@@ -364,7 +432,7 @@ rule .jam
# Distribution making from here on out.
dist.docs =
readme.html
index.html
Porting RELNOTES
Jam.html Jambase.html Jamfile.html
;

View File

@@ -1,4 +1,4 @@
# Copyrigt (C) 2002 Rene Rivera.
# Copyrigt (C) 2002-2003 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
@@ -7,7 +7,7 @@
# Info about what we are building.
NAME = boost-jam ;
VERSION = 3.1.4 ;
RELEASE = 1 ;
RELEASE = 2 ;
# Generate development debug binaries?
if --debug in $(ARGV)
@@ -34,21 +34,22 @@ toolset-root = [ MATCH --toolset-root=(.*) : $(ARGV) ] ;
# 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 + : release-flags * : debug-flags * : linklibs * )
rule toolset ( name command .type ? : opt.out + : opt.define * : release-flags * : debug-flags * : linklibs * )
{
tool.$(name).cc ?= $(command) ;
tool.$(name).opt.out ?= $(opt.out) ;
tool.$(name).opt.define ?= $(opt.define) ;
.type ?= "" ;
tool.$(name)$(.type).cc ?= $(command) ;
tool.$(name)$(.type).opt.out ?= $(opt.out) ;
tool.$(name)$(.type).opt.define ?= $(opt.define) ;
if $(debug)
{
tool.$(name).flags ?= $(debug-flags) ;
tool.$(name)$(.type).flags ?= $(debug-flags) ;
}
else
{
tool.$(name).flags ?= $(release-flags) ;
tool.$(name)$(.type).flags ?= $(release-flags) ;
}
tool.$(name).linklibs ?= $(linklibs) ;
toolsets += $(name) ;
tool.$(name)$(.type).linklibs ?= $(linklibs) ;
if ! $(name) in $(toolsets) { toolsets += $(name) ; }
}
## HP-UX aCC compiler
toolset acc cc : "-o " : -D
@@ -106,8 +107,8 @@ toolset kylix bc++ : -o : -D
}
## MINGW GCC
toolset mingw gcc : "-o " : -D
: -s -O3 -finline-functions -D$(OS)
: -g -O0 -fno-inline -pg -D$(OS) ;
: -s -O3 -finline-functions
: -g -O0 -fno-inline -pg ;
## MIPS Pro
toolset mipspro cc : "-o " : -D
: -s -O3 -g0 -INLINE:none
@@ -134,6 +135,15 @@ toolset vc7 cl : /Fe : -D
: /nologo /ML /O2 /Ob2 /Gy /GF /GA /GB
: /nologo /MLd /DEBUG /Z7 /Od /Ob0
: /LIBPATH:$(LIB:J=" ") kernel32.lib ;
## VMS/OpenVMS DEC C
toolset vms cc : /OBJECT= : /DEFINE=
: /STANDARD=VAXC
: /STANDARD=VAXC
;
toolset vms link .link : /EXECUTABLE= :
: /NOMAP
: /NOMAP
;
# First set the build commands and options according to the
# preset toolset.
@@ -160,6 +170,23 @@ else
--flags = $(tool.$(toolset).flags) ;
--defs = $(tool.$(toolset).defines) ;
--libs = $(tool.$(toolset).linklibs) ;
if $(tool.$(toolset).link.cc)
{
--link = $(tool.$(toolset).link.cc) ;
if $(tool.$(toolset).link.opt.out[2])
{
--link-bin = $(tool.$(toolset).link.opt.out[1]) ;
--link-dir = $(tool.$(toolset).link.opt.out[2]) ;
}
else
{
--link-out = $(tool.$(toolset).link.opt.out) ;
}
--link-def = $(tool.$(toolset).link.opt.define) ;
--link-flags = $(tool.$(toolset).link.flags) ;
--link-defs = $(tool.$(toolset).link.defines) ;
--link-libs = $(tool.$(toolset).link.linklibs) ;
}
# Put executables in platform-specific subdirectory.
locate-target = $(LOCATE_TARGET) ;
@@ -248,6 +275,10 @@ if ( $(OS) = NT || $(NT) ) && ! NT in $(--defs)
{
--defs += NT ;
}
if $(VMS)
{
--defs += VMS ;
}
--defs += YYSTACKSIZE=5000 ;
# The basic symbolic targets...
@@ -261,8 +292,10 @@ rule .clean
}
if $(NT) { actions piecemeal together existing .rm { del /F /Q $(>) } }
if $(UNIX) { actions piecemeal together existing .rm { rm -f $(>) } }
if $(VMS) { actions piecemeal together existing .rm { DELETE $(>[--2]:J=";*, ") $(>[-1]);* } }
if $(NT) { --chmod+w = "attrib -r " ; }
if $(UNIX) { --chmod+w = "chmod +w " ; }
if $(VMS) { --chmod+w = "SET FILE/PROT=(S:RWED) " ; }
rule .mkdir
{
@@ -270,22 +303,52 @@ rule .mkdir
if $(<:P) { DEPENDS $(<) : $(<:P) ; .mkdir $(<:P) ; }
if ! $(md<$(<)>) { .md $(<) ; md<$(<)> = - ; }
}
actions .md { mkdir $(<) }
if $(NT) { actions .md { md $(<) } }
if $(UNIX) { actions .md { mkdir $(<) } }
if $(VMS) { actions .md { CREATE/DIR $(<J=", ") } }
rule .exe
{
local exe = $(<) ;
if $(NT) || ( $(UNIX) && $(OS) = CYGWIN ) { exe = $(exe:S=.exe) ; }
if $(NT) || ( $(UNIX) && $(OS) = CYGWIN ) || $(VMS) { exe = $(exe:S=.exe) ; }
LOCATE on $(exe) = $(locate-target) ;
DEPENDS all : $(exe) ;
DEPENDS $(exe) : $(>) ;
DEPENDS $(exe) : $(locate-target) ;
.mkdir $(locate-target) ;
.cc $(exe) : $(>) ;
.clean $(exe) ;
if $(--link)
{
for local s in $(>)
{
local o = $(s:S=.o) ;
LOCATE on $(o) = $(locate-target) ;
DEPENDS $(exe) : $(o) ;
DEPENDS $(o) : $(s) ;
DEPENDS $(o) : $(locate-target) ;
.cc $(o) : $(s) ;
.clean $(o) ;
}
DEPENDS $(exe) : $(>:S=.o) ;
DEPENDS $(exe) : $(locate-target) ;
.ld $(exe) : $(>:S=.o) ;
.clean $(exe) ;
}
else
{
DEPENDS $(exe) : $(>) ;
DEPENDS $(exe) : $(locate-target) ;
.cc $(exe) : $(>) ;
.clean $(exe) ;
}
return $(exe) ;
}
actions .cc { $(--cc) $(--bin)$(<:D=) $(--dir)$(<:D) $(--out)$(<) $(--def)$(--defs) $(--flags) "$(--libs)" $(>) }
if $(VMS)
{
actions .ld { $(--link) $(--link-bin)$(<:D=) $(--link-dir)$(<:D) $(--link-out)$(<) $(--link-def)$(--link-defs) $(--link-flags) "$(--link-libs)" $(>J=", ") }
}
else
{
actions .ld { $(--link) $(--link-bin)$(<:D=) $(--link-dir)$(<:D) $(--link-out)$(<) $(--link-def)$(--link-defs) $(--link-flags) "$(--link-libs)" $(>) }
}
rule .link
{
@@ -295,6 +358,7 @@ rule .link
}
if $(NT) { actions .link { copy $(>) $(<) } }
if $(UNIX) { actions .link { ln -f $(>) $(<) } }
if $(VMS) { actions .link { COPY/REPLACE $(>) $(<) } }
# Generate the grammar tokens table, and the real yacc grammar.
rule .yyacc
@@ -332,6 +396,10 @@ if $(UNIX) { actions .yacc
{ $(yacc) $(>)
mv -f y.tab.c $(<[1]:S=.c)
mv -f y.tab.h $(<[1]:S=.h) } }
if $(VMS) { actions .yacc
{ $(yacc) $(>)
RENAME y_tab.c $(<[1]:S=.c)
RENAME -f y_tab.h $(<[1]:S=.h) } }
if $(yacc)
{
.yacc jamgram.c jamgram.h : jamgram.y ;
@@ -364,7 +432,7 @@ rule .jam
# Distribution making from here on out.
dist.docs =
readme.html
index.html
Porting RELNOTES
Jam.html Jambase.html Jamfile.html
;