📄 jambase
字号:
EXIT On NT, set BCCROOT, MSVCNT, MINGW or MSVC to the root of the
Borland or Microsoft directories. ;
}
}
else if $(OS2)
{
# the list of supported toolsets on Windows NT and Windows 95/98
#
local SUPPORTED_TOOLSETS = "EMX" "WATCOM" ;
# this variable holds the current toolset
#
TOOLSET = "" ;
# if the JAM_TOOLSET environment variable is defined, check that it is
# one of our supported values
#
if $(JAM_TOOLSET)
{
local t ;
for t in $(SUPPORTED_TOOLSETS)
{
$(t) = $($(t):J=" ") ; # reconstitute paths with spaces in them
if $(t) = $(JAM_TOOLSET) { TOOLSET = $(t) ; }
}
if ! $(TOOLSET)
{
ECHO "The JAM_TOOLSET environment variable is defined but its value" ;
ECHO "is invalid, please use one of the following:" ;
ECHO ;
for t in $(SUPPORTED_TOOLSETS) { ECHO " " $(t) ; }
EXIT ;
}
}
# if TOOLSET is empty, we'll try to detect the toolset from other
# environment variables to remain backwards compatible with Jam 2.3
#
if ! $(TOOLSET)
{
if $(watcom)
{
WATCOM = $(watcom:J=" ") ;
TOOLSET = WATCOM ;
}
else
{
ECHO "Jam cannot be run because you didn't indicate which compilation toolset" ;
ECHO "to use. To do so, follow these simple instructions:" ;
ECHO ;
ECHO " - define one of the following environment variable, with the" ;
ECHO " appropriate value according to this list:" ;
ECHO ;
ECHO " Variable Toolset Description" ;
ECHO ;
ECHO " WATCOM Watcom C/C++ Watcom install path" ;
ECHO " EMX EMX (gcc) EMX install path" ;
ECHO " VISUALAGE IBM Visual Age C/C++ VisualAge install path" ;
ECHO ;
ECHO " - define the JAM_TOOLSET environment variable with the *name*" ;
ECHO " of the toolset variable you want to use." ;
ECHO ;
ECHO " e.g.: set WATCOM=C:\WATCOM" ;
ECHO " set JAM_TOOLSET=WATCOM" ;
ECHO ;
EXIT ;
}
}
RM = del /f ;
CP = copy ;
MV ?= move ;
DOT ?= . ;
DOTDOT ?= .. ;
SUFLIB ?= .lib ;
SUFOBJ ?= .obj ;
SUFEXE ?= .exe ;
if $(TOOLSET) = WATCOM
{
AR ?= wlib ;
BINDIR ?= \\os2\\apps ;
CC ?= wcc386 ;
CCFLAGS ?= /zq /DOS2 /I$(WATCOM)\\h ; # zq=quiet
C++ ?= wpp386 ;
C++FLAGS ?= $(CCFLAGS) ;
LINK ?= wcl386 ;
LINKFLAGS ?= /zq ; # zq=quiet
LINKLIBS ?= ;
NOARSCAN ?= true ;
OPTIM ?= ;
SLASH ?= \\ ;
STDHDRS ?= $(WATCOM)\\h ;
UNDEFFLAG ?= "/u _" ;
}
else if $(TOOLSET) = EMX
{
ECHO "Compiler is GCC-EMX" ;
AR ?= ar -ru ;
CC ?= gcc ;
CCFLAGS ?= "" ;
C++ ?= $(CC) ;
C++FLAGS ?= $(CCFLAGS) ;
LINK ?= $(CC) ;
LINKFLAGS ?= "" ;
LINKLIBS ?= "" ;
OPTIM ?= ;
SUFOBJ = .o ;
SUFLIB = .a ;
UNDEFFLAG ?= "-U" ;
SLASH = / ;
# NOARSCAN ?= true ;
}
else
{
# should never happen
EXIT "Sorry, but the $(JAM_TOOLSET) toolset isn't supported for now" ;
}
}
else if $(VMS)
{
C++ ?= cxx ;
C++FLAGS ?= ;
CC ?= cc ;
CCFLAGS ?= ;
CHMOD ?= set file/prot= ;
CP ?= copy/replace ;
CRELIB ?= true ;
DOT ?= [] ;
DOTDOT ?= [-] ;
EXEMODE ?= (w:e) ;
FILEMODE ?= (w:r) ;
HDRS ?= ;
LINK ?= link ;
LINKFLAGS ?= "" ;
LINKLIBS ?= ;
MKDIR ?= create/dir ;
MV ?= rename ;
OPTIM ?= "" ;
RM ?= delete ;
RUNVMS ?= mcr ;
SHELLMODE ?= (w:er) ;
SLASH ?= . ;
STDHDRS ?= decc$library_include ;
SUFEXE ?= .exe ;
SUFLIB ?= .olb ;
SUFOBJ ?= .obj ;
switch $(OS)
{
case OPENVMS : CCFLAGS ?= /stand=vaxc ;
case VMS : LINKLIBS ?= sys$library:vaxcrtl.olb/lib ;
}
}
else if $(MAC)
{
local OPT ;
CW ?= "{CW}" ;
MACHDRS ?=
"$(UMACHDRS):Universal:Interfaces:CIncludes"
"$(CW):MSL:MSL_C:MSL_Common:Include"
"$(CW):MSL:MSL_C:MSL_MacOS:Include" ;
MACLIBS ?=
"$(CW):MacOS Support:Universal:Libraries:StubLibraries:Interfacelib"
"$(CW):MacOS Support:Universal:Libraries:StubLibraries:Mathlib" ;
MPWLIBS ?=
"$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib"
"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW.Lib" ;
MPWNLLIBS ?=
"$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib"
"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW(NL).Lib" ;
SIOUXHDRS ?= ;
SIOUXLIBS ?=
"$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL RuntimePPC.lib"
"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL SIOUX.PPC.Lib"
"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC.Lib" ;
C++ ?= mwcppc ;
C++FLAGS ?= -w off -nomapcr ;
CC ?= mwcppc ;
CCFLAGS ?= -w off -nomapcr ;
CP ?= duplicate -y ;
DOT ?= ":" ;
DOTDOT ?= "::" ;
HDRS ?= $(MACHDRS) $(MPWHDRS) ;
LINK ?= mwlinkppc ;
LINKFLAGS ?= -mpwtool -warn ;
LINKLIBS ?= $(MACLIBS) $(MPWLIBS) ;
MKDIR ?= newfolder ;
MV ?= rename -y ;
NOARSCAN ?= true ;
OPTIM ?= ;
RM ?= delete -y ;
SLASH ?= ":" ;
STDHDRS ?= ;
SUFLIB ?= .lib ;
SUFOBJ ?= .o ;
}
else if $(OS) = BEOS && $(METROWERKS)
{
AR ?= mwld -xml -o ;
BINDIR ?= /boot/apps ;
CC ?= mwcc ;
CCFLAGS ?= -nosyspath ;
C++ ?= $(CC) ;
C++FLAGS ?= -nosyspath ;
FORTRAN ?= "" ;
LIBDIR ?= /boot/develop/libraries ;
LINK ?= mwld ;
LINKFLAGS ?= "" ;
MANDIR ?= /boot/documentation/"Shell Tools"/HTML ;
NOARSCAN ?= true ;
STDHDRS ?= /boot/develop/headers/posix ;
}
else if $(OS) = BEOS
{
BINDIR ?= /boot/apps ;
CC ?= gcc ;
C++ ?= $(CC) ;
FORTRAN ?= "" ;
LIBDIR ?= /boot/develop/libraries ;
LINK ?= gcc ;
LINKLIBS ?= -lnet ;
NOARSCAN ?= true ;
STDHDRS ?= /boot/develop/headers/posix ;
}
else if $(UNIX)
{
switch $(OS)
{
case AIX :
LINKLIBS ?= -lbsd ;
case AMIGA :
CC ?= gcc ;
YACC ?= "bison -y" ;
case CYGWIN :
CC ?= gcc ;
CCFLAGS += -D__cygwin__ ;
LEX ?= flex ;
RANLIB ?= "" ;
SUFEXE ?= .exe ;
YACC ?= "bison -y" ;
case DGUX :
RANLIB ?= "" ;
RELOCATE ?= true ;
case HPUX :
YACC = ;
CFLAGS += -Ae ;
CCFLAGS += -Ae ;
RANLIB ?= "" ;
case INTERIX :
CC ?= gcc ;
RANLIB ?= "" ;
case IRIX :
RANLIB ?= "" ;
case MPEIX :
CC ?= gcc ;
C++ ?= gcc ;
CCFLAGS += -D_POSIX_SOURCE ;
HDRS += /usr/include ;
RANLIB ?= "" ;
NOARSCAN ?= true ;
NOARUPDATE ?= true ;
case MVS :
RANLIB ?= "" ;
case NEXT :
AR ?= libtool -o ;
RANLIB ?= "" ;
case MACOSX :
AR ?= libtool -o ;
C++ ?= c++ ;
MANDIR ?= /usr/local/share/man ;
RANLIB ?= "" ;
case NCR :
RANLIB ?= "" ;
case PTX :
RANLIB ?= "" ;
case QNX :
AR ?= wlib ;
CC ?= cc ;
CCFLAGS ?= -Q ; # quiet
C++ ?= $(CC) ;
C++FLAGS ?= -Q ; # quiet
LINK ?= $(CC) ;
LINKFLAGS ?= -Q ; # quiet
NOARSCAN ?= true ;
RANLIB ?= "" ;
case SCO :
RANLIB ?= "" ;
RELOCATE ?= true ;
case SINIX :
RANLIB ?= "" ;
case SOLARIS :
RANLIB ?= "" ;
AR ?= "/usr/ccs/bin/ar ru" ;
case UNICOS :
NOARSCAN ?= true ;
OPTIM ?= -O0 ;
case UNIXWARE :
RANLIB ?= "" ;
RELOCATE ?= true ;
}
# UNIX defaults
CCFLAGS ?= ;
C++FLAGS ?= $(CCFLAGS) ;
CHMOD ?= chmod ;
CHGRP ?= chgrp ;
CHOWN ?= chown ;
LEX ?= lex ;
LINKFLAGS ?= $(CCFLAGS) ;
LINKLIBS ?= ;
OPTIM ?= -O ;
RANLIB ?= ranlib ;
YACC ?= yacc ;
YACCFILES ?= y.tab ;
YACCFLAGS ?= -d ;
}
#
# General defaults; a lot like UNIX
#
AR ?= ar ru ;
AS ?= as ;
ASFLAGS ?= ;
AWK ?= awk ;
BINDIR ?= /usr/local/bin ;
C++ ?= cc ;
C++FLAGS ?= ;
CC ?= cc ;
CCFLAGS ?= ;
CP ?= cp -f ;
CRELIB ?= ;
DOT ?= . ;
DOTDOT ?= .. ;
EXEMODE ?= 711 ;
FILEMODE ?= 644 ;
FORTRAN ?= f77 ;
FORTRANFLAGS ?= ;
HDRS ?= ;
INSTALLGRIST ?= installed ;
JAMFILE ?= Jamfile ;
JAMRULES ?= Jamrules ;
LEX ?= ;
LIBDIR ?= /usr/local/lib ;
LINK ?= $(CC) ;
LINKFLAGS ?= ;
LINKLIBS ?= ;
LN ?= ln ;
MANDIR ?= /usr/local/man ;
MKDIR ?= mkdir ;
MV ?= mv -f ;
OPTIM ?= ;
RCP ?= rcp ;
RM ?= rm -f ;
RSH ?= rsh ;
SED ?= sed ;
SHELLHEADER ?= "#!/bin/sh" ;
SHELLMODE ?= 755 ;
SLASH ?= / ;
STDHDRS ?= /usr/include ;
SUFEXE ?= "" ;
SUFLIB ?= .a ;
SUFOBJ ?= .o ;
UNDEFFLAG ?= "-u _" ;
YACC ?= ;
YACCFILES ?= ;
YACCFLAGS ?= ;
HDRPATTERN =
"^[ ]*#[ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ;
OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;
#
# Base dependencies - first for "bootstrap" kinds of rules
#
DEPENDS all : shell files lib exe obj ;
DEPENDS all shell files lib exe obj : first ;
NOTFILE all first shell files lib exe obj dirs clean uninstall ;
ALWAYS clean uninstall ;
#
# Rules
#
rule As
{
DEPENDS $(<) : $(>) ;
ASFLAGS on $(<) += $(ASFLAGS) $(SUBDIRASFLAGS) ;
}
rule Bulk
{
local i ;
for i in $(>)
{
File $(i:D=$(<)) : $(i) ;
}
}
rule Cc
{
local _h ;
DEPENDS $(<) : $(>) ;
# Just to clarify here: this sets the per-target CCFLAGS to
# be the current value of (global) CCFLAGS and SUBDIRCCFLAGS.
CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ;
# If the compiler's -o flag doesn't work, relocate the .o
if $(RELOCATE)
{
CcMv $(<) : $(>) ;
}
_h = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) ;
if $(VMS) && $(_h)
{
SLASHINC on $(<) = "/inc=(" $(_h[1]) ,$(_h[2-]) ")" ;
}
else if $(MAC) && $(_h)
{
local _i _j ;
_j = $(_h[1]) ;
for _i in $(_h[2-])
{
_j = $(_j),$(_i) ;
}
MACINC on $(<) = \"$(_j)\" ;
}
}
rule C++
{
local _h ;
DEPENDS $(<) : $(>) ;
C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) ;
if $(RELOCATE)
{
CcMv $(<) : $(>) ;
}
_h = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) ;
if $(VMS) && $(_h)
{
SLASHINC on $(<) = "/inc=(" $(_h[1]) ,$(_h[2-]) ")" ;
}
else if $(MAC) && $(_h)
{
local _i _j ;
_j = $(_h[1]) ;
for _i in $(_h[2-])
{
_j = $(_j),$(_i) ;
}
MACINC on $(<) = \"$(_j)\" ;
}
}
rule Chmod
{
if $(CHMOD) { Chmod1 $(<) ; }
}
rule File
{
DEPENDS files : $(<) ;
DEPENDS $(<) : $(>) ;
SEARCH on $(>) = $(SEARCH_SOURCE) ;
MODE on $(<) = $(FILEMODE) ;
Chmod $(<) ;
}
rule Fortran
{
DEPENDS $(<) : $(>) ;
}
rule GenFile
{
local _t = [ FGristSourceFiles $(<) ] ;
local _s = [ FAppendSuffix $(>[1]) : $(SUFEXE) ] ;
Depends $(_t) : $(_s) $(>[2-]) ;
GenFile1 $(_t) : $(_s) $(>[2-]) ;
Clean clean : $(_t) ;
}
rule GenFile1
{
MakeLocate $(<) : $(LOCATE_SOURCE) ;
SEARCH on $(>) = $(SEARCH_SOURCE) ;
}
rule HardLink
{
DEPENDS files : $(<) ;
DEPENDS $(<) : $(>) ;
SEARCH on $(>) = $(SEARCH_SOURCE) ;
}
rule HdrMacroFile
{
# HdrMacroFile file ;
#
# this rule is used to indicate that a given file contains definitions
# for filename macros (e.g. "#define MYFILE_H <myfile.h>") that can
# later be used in #include statements in the rest of the source
#
# theses files must be parsed before any make is tried..
#
HDRMACRO $(<) ;
}
rule HdrRule
{
# HdrRule source : headers ;
# N.B. This rule is called during binding, potentially after
# the fate of many targets has been determined, and must be
# used with caution: don't add dependencies to unrelated
# targets, and don't set variables on $(<).
# Tell Jam that anything depending on $(<) also depends on $(>),
# set SEARCH so Jam can find the headers, but then say we don't
# care if we can't actually find the headers (they may have been
# within ifdefs),
local s ;
if $(HDRGRIST)
{
s = $(>:G=$(HDRGRIST)) ;
} else {
s = $(>) ;
}
INCLUDES $(<) : $(s) ;
SEARCH on $(s) = $(HDRSEARCH) ;
NOCARE $(s) ;
# Propagate on $(<) to $(>)
HDRSEARCH on $(s) = $(HDRSEARCH) ;
HDRSCAN on $(s) = $(HDRSCAN) ;
HDRRULE on $(s) = $(HDRRULE) ;
HDRGRIST on $(s) = $(HDRGRIST) ;
}
rule InstallInto
{
# InstallInto dir : sources ;
local i t ;
t = $(>:G=$(INSTALLGRIST)) ;
# Arrange for jam install
# Arrange for jam uninstall
# sources are in SEARCH_SOURCE
# targets are in dir
Depends install : $(t) ;
Clean uninstall : $(t) ;
SEARCH on $(>) = $(SEARCH_SOURCE) ;
MakeLocate $(t) : $(<) ;
# For each source, make gristed target name
# and Install, Chmod, Chown, and Chgrp
for i in $(>)
{
local tt = $(i:G=$(INSTALLGRIST)) ;
Depends $(tt) : $(i) ;
Install $(tt) : $(i) ;
Chmod $(tt) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -