📄 build.jam
字号:
#~ Copyright 2002-2007 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)# Platform related specifics.if $(NT) { rule .path { return "$(<:J=\\)" ; } ./ = "/" ; }else if $(OS2) { rule .path { return "$(<:J=\\)" ; } ./ = "/" ; }else if $(VMS) { rule .path { return "[.$(<:J=/)]" ; } }else if $(MAC) { rule .path { return ":$(<:J=\:)" ; } }else { rule .path { return "$(<:J=/)" ; } }if $(VMS) { . = "_" ; }else { . = "." ; }./ ?= "" ; # Info about what we are building._VERSION_ = 3 1 16 ;NAME = boost-jam ;VERSION = $(_VERSION_:J=$(.)) ;RELEASE = 1 ;LICENSE = LICENSE_1_0 ;# Generate development debug binaries?if --debug in $(ARGV){ debug = true ;}# Attempt to generate and/or build the grammar?if --grammar in $(ARGV){ grammar = true ;}# Do we need to add a default build type argument?if ! ( --release in $(ARGV) ) && ! ( --debug in $(ARGV) ){ ARGV += --release ;}# Enable, and configure, Python hooks.with-python = ;python-location = [ MATCH --with-python=(.*) : $(ARGV) ] ;if $(python-location){ with-python = true ;}if $(with-python){ if $(NT) { --python-include = [ .path $(python-location) include ] ; --python-lib = ; for local v in 25 24 23 22 { --python-lib ?= [ GLOB [ .path $(python-location) libs ] : "python$(v).lib" ] [ GLOB $(python-location) [ .path $(python-location) libs ] $(Path) $(PATH) $(path) : "python$(v).dll" ] ; if ! $(--python-lib[2]) { --python-lib = ; } } --python-lib = $(--python-lib[1]) ; } else if $(OS) = MACOSX { --python-include = [ .path $(python-location) Headers ] ; --python-lib = $(python-location) Python ; } else { --python-include = ; --python-lib = ; for local v in 2.5 2.4 2.3 2.2 { local inc = [ GLOB [ .path $(python-location) include ] : python$(v) ] ; local lib = [ GLOB [ .path $(python-location) lib ] : libpython$(v)* ] ; if $(inc) && $(lib) { --python-include ?= $(inc) ; --python-lib ?= $(lib[1]:D) python$(v) ; } } }}# Boehm GC?if --gc in $(ARGV){ --boehm-gc = true ;}if $(--boehm-gc){ --extra-include += [ .path [ PWD ] "boehm_gc" "include" ] ;}# Duma?if --duma in $(ARGV){ --duma = true ;}if $(--duma){ --extra-include += [ .path [ PWD ] "duma" ] ;}# An explicit root for the toolset? (trim spaces)toolset-root = [ MATCH --toolset-root=(.*) : $(ARGV) ] ;{ local t = [ MATCH "[ ]*(.*)" : $(toolset-root:J=" ") ] ; toolset-root = ; while $(t) { t = [ MATCH "([^ ]+)([ ]*)(.*)" : $(t) ] ; toolset-root += $(t[1]) ; if $(t[3]) { toolset-root += $(t[2]) ; } t = $(t[3]) ; } toolset-root = $(toolset-root:J="") ;}# 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 .type ? : opt.out + : opt.define * : flags * : linklibs * ){ .type ?= "" ; tool.$(name)$(.type).cc ?= $(command) ; tool.$(name)$(.type).opt.out ?= $(opt.out) ; tool.$(name)$(.type).opt.define ?= $(opt.define) ; tool.$(name)$(.type).flags ?= $(flags) ; tool.$(name)$(.type).linklibs ?= $(linklibs) ; if ! $(name) in $(toolsets) { toolsets += $(name) ; }}rule opt ( type : yes-opt * : no-opt * ) { if $(type) in $(ARGV) { return $(yes-opt) ; } else { return $(no-opt) ; } }## HP-UX aCC compilertoolset acc cc : "-o " : -D : -Ae [ opt --release : -s -O3 ] [ opt --debug : -g -pg ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Borland C++ 5.5.xtoolset borland bcc32 : -e -n : /D : -WC -w- -q "-I$(toolset-root)Include" "-L$(toolset-root)Lib" [ opt --release : -O2 -vi -w-inl ] [ opt --debug : -v -Od -vi- ] -I$(--python-include) -I$(--extra-include) : $(--python-lib[1]) ;## Generic Unix ccif ! $(CC) { CC = cc ; }toolset cc $(CC) : "-o " : -D : $(CFLAGS) [ opt --release : -s -O ] [ opt --debug : -g ] -I$(--python-include) -I$(--extra-include) : $(LIBS) -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Comeau C/C++ 4.xtoolset como como : "-o " : -D : --c [ opt --release : --inlining ] [ opt --debug : --no_inlining ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## MacOSX Darwin, using GCC 2.9.x, 3.xtoolset darwin cc : "-o " : -D : [ opt --release : -Wl,-x -O3 -finline-functions ] [ opt --debug : -g -O0 -fno-inline -pg ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## GCC 2.x, 3.x, 4.xtoolset gcc gcc : "-o " : -D : -pedantic -fno-strict-aliasing [ opt --release : [ opt --symbols : -g : -s ] -O3 ] [ opt --debug : -g -O0 -fno-inline ] -I$(--python-include) -I$(--extra-include) -Wno-long-long : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## GCC 2.x, 3.x on CYGWIN but without cygwin1.dlltoolset gcc-nocygwin gcc : "-o " : -D : -s -O3 -mno-cygwin [ opt --release : -finline-functions ] [ opt --debug : -s -O3 -fno-inline -pg ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Intel C/C++ for Linuxtoolset intel-linux icc : "-o " : -D : [ opt --release : -Xlinker -s -O3 ] [ opt --debug : -g -O0 -p ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Intel C/C++ for Win32toolset intel-win32 icl : /Fe : -D : /nologo [ opt --release : /MT /O2 /Ob2 /Gy /GF /GA /GB ] [ opt --debug : /MTd /DEBUG /Z7 /Od /Ob0 ] -I$(--python-include) -I$(--extra-include) : kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;## KCC ?toolset kcc KCC : "-o " : -D : [ opt --release : -s +K2 ] [ opt --debug : -g +K0 ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Borland Kylixtoolset kylix bc++ : -o : -D : -tC -q [ opt --release : -O2 -vi -w-inl ] [ opt --debug : -v -Od -vi- ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Metrowerks CodeWarrior 8.x{ # Even though CW can compile all files at once, it crashes if it tries in the bjam case. local mwcc = ; if $(NT) { mwcc = mwcc ; } else { mwcc = mwc$(OSPLAT:L) ; } mwcc ?= mwcc ; toolset metrowerks $(mwcc) : "-o " : -D : -c -lang c -subsystem console -cwd include [ opt --release : -runtime ss -opt full -inline all ] [ opt --debug : -runtime ssd -opt none -inline off ] -I$(--python-include) -I$(--extra-include) ; toolset metrowerks $(mwcc) .link : "-o " : : -subsystem console -lkernel32.lib -ladvapi32.lib -luser32.lib [ opt --release : -runtime ss ] [ opt --debug : -runtime ssd ] : $(--python-lib[1]) ;}## MINGW GCCtoolset mingw gcc : "-o " : -D : [ opt --release : -s -O3 -finline-functions ] [ opt --debug : -g -O0 -fno-inline -pg ] -I$(--python-include) -I$(--extra-include) : $(--python-lib[2]) ;## MIPS Protoolset mipspro cc : "-o " : -D : [ opt --release : -s -O3 -g0 -INLINE:none ] [ opt --debug : -g -O0 -INLINE ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Microsoft Visual Studio C++ 6.xtoolset msvc cl : /Fe /Fe /Fd /Fo : -D : /nologo [ opt --release : /ML /O2 /Ob2 /Gy /GF /GA /GB ] [ opt --debug : /MLd /DEBUG /Z7 /Od /Ob0 ] -I$(--python-include) -I$(--extra-include) : kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;## QNX 6.x GCC 3.x/2.95.3toolset qcc qcc : "-o " : -D : -Wc,-pedantic [ opt --release : [ opt --symbols : -g ] -O3 -Wc,-finline-functions ] [ opt --debug : -g -O0 -Wc,-fno-inline ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Qlogic Pathscale 2.4toolset pathscale pathcc : "-o " : -D : [ opt --release : -s -Ofast -O3 ] [ opt --debug : -g ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Portland Group Pgi 6.2toolset pgi pgcc : "-o " : -D : [ opt --release : -s -O3 ] [ opt --debug : -g ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Sun Workshop 6 C++toolset sun cc : "-o " : -D : [ opt --release : -s -fast -xO4 ] [ opt --debug : -g ] -xarch=generic -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Sun Workshop 6 C++ (old alias)toolset sunpro cc : "-o " : -D : [ opt --release : -s -fast -xO4 ] [ opt --debug : -g ] -xarch=generic -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## Compaq Alpha CXXtoolset tru64cxx cc : "-o " : -D : [ opt --release : -s -O5 -inline speed ] [ opt --debug : -g -O0 -pg ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) ;## IBM VisualAge C++toolset vacpp xlc : "-o " : -D : [ opt --release : -s -O3 -qstrict -qinline ] [ opt --debug : -g -qNOOPTimize -qnoinline -pg ] -I$(--python-include) -I$(--extra-include) : -L$(--python-lib[1]) -l$(--python-lib[2]) -bmaxdata:0x40000000 ;## Microsoft Visual C++ .NET 7.xtoolset vc7 cl : /Fe /Fe /Fd /Fo : -D : /nologo [ opt --release : /ML /O2 /Ob2 /Gy /GF /GA /GB ] [ opt --debug : /MLd /DEBUG /Z7 /Od /Ob0 ] -I$(--python-include) -I$(--extra-include) : kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;## Microsoft Visual C++ 2005toolset vc8 cl : /Fe /Fe /Fd /Fo : -D : /nologo [ opt --release : /MT /O2 /Ob2 /Gy /GF /GA /wd4996 ] [ opt --debug : /MTd /DEBUG /Z7 /Od /Ob0 /wd4996 ] -I$(--python-include) -I$(--extra-include) : kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;## Microsoft Visual C++ 2008toolset vc9 cl : /Fe /Fe /Fd /Fo : -D : /nologo [ opt --release : /MT /O2 /Ob2 /Gy /GF /GA /wd4996 ] [ opt --debug : /MTd /DEBUG /Z7 /Od /Ob0 /wd4996 ] -I$(--python-include) -I$(--extra-include) : kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;## VMS/OpenVMS DEC Ctoolset vmsdecc cc : /OBJECT= : "/DEFINES=(" "," ")" : /STANDARD=VAXC /PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES [ opt --release : /OPTIMIZE /NODEBUG ] [ opt --debug : /NOOPTIMIZE /DEBUG ] ;toolset vmsdecc link .link : /EXECUTABLE= : : /NOMAP [ opt --release : /NODEBUG ] [ opt --debug : /DEBUG ] ;# First set the build commands and options according to the# preset toolset.toolset = [ MATCH --toolset=(.*) : $(ARGV) ] ;if ! $(toolset){ # For some reason, the following test does not catch # empty toolset. ECHO "###" ; ECHO "###" No toolset specified. Please use --toolset option. ; ECHO "###" ; ECHO "###" Known toolsets are: $(toolsets:J=", ") ; EXIT "###" ; }if ! $(toolset) in $(toolsets){ ECHO "###" ; ECHO "###" Unknown toolset: $(toolset) ; ECHO "###" ; ECHO "###" Known toolsets are: $(toolsets:J=", ") ; EXIT "###" ;}--cc = $(tool.$(toolset).cc) ;if $(tool.$(toolset).opt.out[2]){ if $(tool.$(toolset).opt.out[1]) = $(tool.$(toolset).opt.out[2]) { --out = $(tool.$(toolset).opt.out[1]) ; --dir = $(tool.$(toolset).opt.out[3-]) ; } else { --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) ;if $(tool.$(toolset).link.cc){ --link = $(tool.$(toolset).link.cc) ; if $(tool.$(toolset).link.opt.out[2]) { if $(tool.$(toolset).link.opt.out[1]) = $(tool.$(toolset).link.opt.out[2]) { --link-out = $(tool.$(toolset).link.opt.out[1]) ; --link-dir = $(tool.$(toolset).link.opt.out[3-]) ; } else { --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) ;if $(VMS){ locate-target ?= bin$(.)vms ; platform = vms ;}else if $(MAC){ locate-target ?= bin$(.)$(OS:L)$(OSPLAT:L) ; platform = $(OS:L)$(OSPLAT:L) ;}else if $(OSPLAT){ locate-target ?= bin$(.)$(OS:L)$(OSPLAT:L) ; platform = $(OS:L)$(OSPLAT:L) ;}else{ locate-target ?= bin$(.)$(OS:L) ; platform = $(OS:L) ;}if $(debug){ locate-target = [ .path $(locate-target)$(.)debug ] ;}else{ locate-target = [ .path $(locate-target) ] ;}if --show-locate-target in $(ARGV){ ECHO $(locate-target) ;}# We have some different files for UNIX, VMS, and NT.jam.source = command.c compile.c debug.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 mem.c newstr.c option.c output.c parse.c regexp.c rules.c scan.c search.c subst.c w32_getreg.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.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 ;}# Debug assertions, or not.if ! $(debug) || --noassert in $(ARGV){ --defs += NDEBUG ;}# Enable some optional features.--defs += OPT_HEADER_CACHE_EXT ;--defs += OPT_GRAPH_DEBUG_EXT ;--defs += OPT_SEMAPHORE ;--defs += OPT_AT_FILES ;--defs += OPT_DEBUG_PROFILE ;# Bug fixes--defs += OPT_FIX_TARGET_VARIABLES_EXT ;#~ --defs += OPT_NO_EXTERNAL_VARIABLE_SPLIT ;# Improvements--defs += OPT_IMPROVED_PATIENCE_EXT ;# Use Boehm GC memory allocator?if $(--boehm-gc){ --defs += OPT_BOEHM_GC ; if $(debug) { --defs += GC_DEBUG ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -