Przeglądaj źródła

Merge build_for_distribution changes to HEAD.

[SVN r20825]
Rene Rivera 22 lat temu
rodzic
commit
3c263d8362
1 zmienionych plików z 144 dodań i 8 usunięć
  1. 144 8
      Jamfile

+ 144 - 8
Jamfile

@@ -1,10 +1,146 @@
+#~ 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=<toolsets>      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-<library>     Do not build, stage, or install the specified
+                            <library>. 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 ;
 
-# please order by name to ease maintenance
-subinclude libs/date_time/build ;
-subinclude libs/filesystem/build ;
-subinclude libs/python/build ;
-subinclude libs/regex/build ;
-subinclude libs/signals/build ;
-subinclude libs/test/build ;
-subinclude libs/thread/build ;
+# 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) ] ]
+    : <exclude>$(without-libraries) ;
+
+if [ install-sources lib ]
+{
+    stage $(lib-locate:D=)
+        :
+            [ install-sources lib ]
+        :
+            <locate>$(lib-locate:D)
+            common-variant-tag
+            [ cond $(with-install) : <target>install : <target>all ]
+            [ cond $(with-stage) : <target>stage : <target>all ]
+        :
+            debug release [ cond $(with-debug-python) : debug-python ] <threading>single/multi
+            [ unless $(with-install) $(with-stage) : <suppress>true ]
+        ;
+}
+
+stage $(include-locate:D=)/boost-$(version-tag)
+    :
+        [ glob-tree $(BOOST_ROOT)/boost/compatibility/cpp_c_headers : c* ]
+        [ glob-tree $(BOOST_ROOT)/boost : *.hpp *.ipp ]
+    :
+        <locate>$(include-locate:D)
+        <tree-subdirs>$(BOOST_ROOT)
+        [ cond $(with-install) : <target>install : <target>all ]
+    :
+        [ unless $(with-install) : <suppress>true ]
+    ;

粤ICP备19079148号