#~ Copyright 2003, Rene Rivera. #~ 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) if --help in $(ARGV) { ECHO " Usage: bjam [options] [install|stage] * install Installs to the configured location(s). * stage Stages the build products only to common stage location. Options: --help This message. -sTOOLS= Indicates the tools to build with. Locations: --prefix=PREFIX Install architecture independent files here. Default; C:\\Boost on Win32 Default; /usr/local on Unix. Linux, etc. --exec-prefix=EPREFIX Install architecture dependent files here. Default; PREFIX --libdir=DIR Install libraries here. Default; EPREFIX/lib --includedir=DIR Install source headers here. Default; PREFIX/include --builddir=DIR Build in this location instead of building within the distribution tree. Recomended! --stagedir=DIR When staging only, stage to the location. Default; ./stage Features: --without- Do not build, stage, or install the specified . By default all libraries attempt to build. --with-python-root[=PYTHON_ROOT] Build Boost.Python libraries with the Python devel packages located at PYTHON_ROOT. Default PYTHON_ROOT; C:\\tools\\python on Win32. Default PYTHON_ROOT; /usr/local on Unix, Linux, etc. Default PYTHON_ROOT; /usr on Cygwin. --with-pydebug Build Boost.Python libraries using the Python debug runtime. " ; EXIT "" ; } local with-install = ; local with-stage = ; # build only, or build+install if install in $(ARGV) { with-install = install ; with-stage = ; } # stage only? (no install, only build and stage to a common dir) if stage in $(ARGV) { with-stage = stage ; with-install = ; } # possible stage only location local stage-locate = [ MATCH "^--stagedir=(.*)" : $(ARGV) ] ; stage-locate ?= stage ; # architecture independent files local boost-locate = [ unless $(with-stage) : [ MATCH "^--prefix=(.*)" : $(ARGV) ] : $(stage-locate) ] ; if $(NT) { boost-locate ?= C:\\Boost ; } else if $(UNIX) { boost-locate ?= /usr/local ; } # architecture dependent files local exec-locate = [ MATCH "^--exec-prefix=(.*)" : $(ARGV) ] ; exec-locate ?= $(boost-locate) ; # object code libraries local lib-locate = [ MATCH "^--libdir=(.*)" : $(ARGV) ] ; lib-locate ?= $(exec-locate)/lib ; # where to build local all-locate = [ MATCH "^--builddir=(.*)" : $(ARGV) ] ; ALL_LOCATE_TARGET ?= $(all-locate) ; # source header files local include-locate = [ MATCH "^--includedir=(.*)" : $(ARGV) ] ; include-locate ?= $(boost-locate)/include ; # location of python local python-root = [ MATCH "^--with-python-root=(.*)" : $(ARGV) ] ; PYTHON_ROOT ?= $(python-root) ; # variant for pydebug build local with-debug-python ; if --with-pydebug in $(ARGV) { with-debug-python = debug-python ; } # libraries to disable building, etc. local without-libraries = [ MATCH "^--without-(.*)" : $(ARGV) ] ; # project-root ; # bring in the rules for python import python ; # local version-tag = [ MATCH "^([^.]+).([^.]+)" : $(BOOST_VERSION) ] ; version-tag = $(version-tag:J="_") ; # install-subinclude [ MATCH ^(.*build[/\\:]$(JAMFILE))$ : [ glob-tree $(BOOST_ROOT)/libs : $(JAMFILE) ] ] : $(without-libraries) ; local lib-sources = [ install-sources lib ] ; if $(lib-sources) { local gNOWARN_INCOMPATIBLE_BUILDS = TRUE ; local lib-build = debug release [ cond $(with-debug-python) : debug-python ] [ cond $(NT) : static/dynamic ] single/multi ; local lib-target = [ cond $(with-install) : install : all ] [ cond $(with-stage) : stage : all ] ; local lib-dest-files = [ stage $(lib-locate:D=) : $(lib-sources) : $(lib-locate:D) common-variant-tag $(lib-target) : $(lib-build) [ unless $(with-install) $(with-stage) : true ] ] ; if ! $(gIN_LIB_INCLUDE) { local unversioned-files ; if $(with-install) || $(with-stage) { if $(NT) { local version-files = [ MATCH "(.*[.]lib)" : $(lib-dest-files) ] ; local noversion-files ; for local version-file in $(version-files) { local noversion-file = [ MATCH "(.*)-[0-9_]+([.]lib)" : $(version-file) ] ; noversion-file = $(noversion-file[1])$(noversion-file[2]) ; MakeLocate $(noversion-file) : [ FDirName [ split-path $(lib-locate) ] ] ; HardLink $(noversion-file) : $(version-file) ; noversion-files += $(noversion-file) ; } declare-fake-targets $(lib-target) : $(noversion-files) ; } else if $(UNIX) { local so-version-files = [ MATCH "(.*[.]so[.0-9]+)" : $(lib-dest-files) ] ; so-version-files ?= [ MATCH "(.*[.]so)" : $(lib-dest-files) ] ; local version-files = $(so-version-files) [ MATCH "(.*[.]a)" : $(lib-dest-files) ] ; local noversion-files ; for local version-file in $(version-files) { local noversion-file = [ MATCH "(.*)-[0-9_]+([.]so)[.0-9]*" : $(version-file) ] [ MATCH "(.*)-[0-9_]+([.]a)" : $(version-file) ] ; noversion-file = $(noversion-file[1])$(noversion-file[2]) ; MakeLocate $(noversion-file) : [ FDirName [ split-path $(lib-locate) ] ] ; HardLink $(noversion-file) : $(version-file) ; noversion-files += $(noversion-file) ; } declare-fake-targets $(lib-target) : $(noversion-files) ; } } } } stage $(include-locate:D=)/boost-$(version-tag) : [ glob-tree $(BOOST_ROOT)/boost/compatibility/cpp_c_headers : c* ] [ glob-tree $(BOOST_ROOT)/boost : *.hpp *.ipp *.h *.inc ] : $(include-locate:D) $(BOOST_ROOT) [ cond $(with-install) : install : all ] : [ unless $(with-install) : true ] ;