Explorar el Código

Apply develop changes to Jamroot, boostcpp.jam

Peter Dimov hace 7 años
padre
commit
47ef674f75
Se han modificado 2 ficheros con 59 adiciones y 152 borrados
  1. 19 33
      Jamroot
  2. 40 119
      boostcpp.jam

+ 19 - 33
Jamroot

@@ -19,23 +19,28 @@
 #   =======                 configured locations (below).
 #
 #   --prefix=<PREFIX>       Install architecture independent files here.
-#                           Default; C:\Boost on Win32
-#                           Default; /usr/local on Unix. Linux, etc.
+#                           Default: C:\Boost on Windows
+#                           Default: /usr/local on Unix, Linux, etc.
 #
 #   --exec-prefix=<EPREFIX> Install architecture dependent files here.
-#                           Default; <PREFIX>
+#                           Default: <PREFIX>
 #
-#   --libdir=<DIR>          Install library files here.
-#                           Default; <EPREFIX>/lib
+#   --libdir=<LIBDIR>       Install library files here.
+#                           Default: <EPREFIX>/lib
 #
 #   --includedir=<HDRDIR>   Install header files here.
-#                           Default; <PREFIX>/include
+#                           Default: <PREFIX>/include
+#
+#   --cmakedir=<CMAKEDIR>   Install CMake configuration files here.
+#                           Default: <LIBDIR>/cmake
+#
+#   --no-cmake-config       Do not install CMake configuration files.
 #
 #   stage                   Build and install only compiled library files to the
 #   =====                   stage directory.
 #
 #   --stagedir=<STAGEDIR>   Install library files here
-#                           Default; ./stage
+#                           Default: ./stage
 #
 # Other Options:
 #
@@ -135,6 +140,7 @@ import "class" : new ;
 import property-set ;
 import threadapi-feature ;
 import option ;
+import tools/boost_install/boost-install ;
 
 path-constant BOOST_ROOT : . ;
 constant BOOST_VERSION : 1.70.0 ;
@@ -179,6 +185,7 @@ project boost
     : usage-requirements <include>.
     : default-build
       <visibility>hidden
+      <threading>multi
     : build-dir bin.v2
     ;
 
@@ -286,31 +293,18 @@ if [ path.exists $(BOOST_ROOT)/libs/wave/tool/build ]
     use-project /boost/libs/wave/tool : libs/wave/tool/build ;
 }
 
+# Make the boost-install rule visible in subprojects
+
 # This rule should be called from libraries' Jamfiles and will create two
 # targets, "install" and "stage", that will install or stage that library. The
 # --prefix option is respected, but --with and --without options, naturally, are
 # ignored.
 #
 # - libraries -- list of library targets to install.
-#
+
 rule boost-install ( libraries * )
 {
-    package.install install
-        : <dependency>/boost//install-proper-headers $(install-requirements)
-        : # No binaries
-        : $(libraries)
-        : # No headers, it is handled by the dependency.
-    ;
-
-    local stage-locate = [ option.get stagedir : $(BOOST_ROOT)/stage ] ;
-
-    install stage : $(libraries) : <location>$(stage-locate)/lib ;
-
-    module [ CALLER_MODULE ]
-    {
-        explicit stage ;
-        explicit install ;
-    }
+    boost-install.boost-install $(libraries) ;
 }
 
 # Creates a library target, adding autolink support and also creates
@@ -329,14 +323,6 @@ rule boost-lib ( name : sources * : requirements * : default-build * : usage-req
 }
 
 
-headers =
-    # The .SUNWCCh files are present in tr1 include directory and have to be
-    # installed (see http://lists.boost.org/Archives/boost/2007/05/121430.php).
-    [ path.glob-tree $(BOOST_ROOT)/boost : *.hpp *.ipp *.h *.inc *.SUNWCCh : CVS .svn ]
-    [ path.glob-tree $(BOOST_ROOT)/boost/compatibility/cpp_c_headers : c* : CVS .svn ]
-    [ path.glob $(BOOST_ROOT)/boost/tr1/tr1 : * : bcc32 sun CVS .svn ]
-    ;
-
 # Declare special top-level targets that build and install the desired variants
 # of the libraries.
-boostcpp.declare-targets $(all-libraries) : $(headers) : $(all-headers) ;
+boostcpp.declare-targets $(all-libraries) ;

+ 40 - 119
boostcpp.jam

@@ -109,7 +109,16 @@ if $(layout) = system && $(build-type) = complete
 
 # Possible stage only location.
 stage-locate = [ option.get stagedir ] ;
-stage-locate ?= stage ;
+
+if $(stage-locate)
+{
+    stage-locate = [ path.root [ path.make $(stage-locate) ] [ path.pwd ] ] ;
+}
+else
+{
+    stage-locate = $(BOOST_ROOT)/stage ;
+}
+
 BOOST_STAGE_LOCATE = $(stage-locate) ;
 
 # Custom build ID.
@@ -213,9 +222,27 @@ rule tag ( name : type ? : property-set )
 rule python-tag ( name : type ? : property-set )
 {
     local result = $(name) ;
-    if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB && $(PYTHON_ID)
+
+    if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
     {
-        result = $(result)-$(PYTHON_ID) ;
+        # Add Python version suffix
+
+        local version = [ $(property-set).get <python> ] ;
+
+        local major-minor = [ MATCH "^([0-9]+)\.([0-9]+)" : $(version) ] ;
+        local suffix = $(major-minor:J="") ;
+
+        if $(suffix)
+        {
+            result = $(result)$(suffix) ;
+        }
+
+        # Add PYTHON_ID if supplied
+
+        if $(PYTHON_ID)
+        {
+            result = $(result)-$(PYTHON_ID) ;
+        }
     }
 
     # forward to the boost tagging rule
@@ -231,118 +258,14 @@ rule python-tag ( name : type ? : property-set )
 #
 ################################################################################
 
-rule filtered-target ( name : message + : sources + : requirements * )
+rule declare_install_and_stage_proper_targets ( libraries * )
 {
-    message $(name)-message : warning\: $(message) ;
-    alias $(name) : $(sources) : $(requirements) ;
-    alias $(name) : $(name)-message ;
-
     local p = [ project.current ] ;
-    $(p).mark-target-as-explicit $(name) ;
-    $(p).mark-target-as-explicit $(name)-message ;
-}
 
-rule declare_install_and_stage_proper_targets ( libraries * : headers * : modular-headers * )
-{
-    local p = [ project.current ] ;
-    for local l in $(libraries)
-    {
-        if $(l) = locale
-        {
-            filtered-target $(l)-for-install :
-                Skipping Boost.Locale library with threading=single. :
-                libs/$(l)/build : <threading>multi ;
-        }
-        else if $(l) = wave
-        {
-            filtered-target $(l)-for-install :
-                Skipping Boost.Wave library with threading=single. :
-                libs/$(l)/build : <threading>multi ;
-        }
-        else if $(l) = thread
-        {
-            filtered-target $(l)-for-install :
-                Skipping Boost.Thread library with threading=single. :
-                libs/$(l)/build : <threading>multi ;
-        }
-        else
-        {
-            alias $(l)-for-install : libs/$(l)/build ; 
-            $(p).mark-target-as-explicit $(l)-for-install ;
-        }
-    }
-    local library-targets = $(libraries)-for-install ;
-
-    local install-requirements ;
-
-    if $(layout-versioned)
-    {
-        install-requirements +=
-            <install-header-subdir>boost-$(BOOST_VERSION_TAG)/boost ;
-    }
-    else
-    {
-        install-requirements += <install-header-subdir>boost ;
-    }
-
-    if [ os.name ] = NT
-    {
-        install-requirements += <install-default-prefix>C:/Boost ;
-    }
-    else
-    {
-        install-requirements += <install-default-prefix>/usr/local ;
-    }
-
-    p = [ project.current ] ;
-
-    # These headers will be installed from the modular
-    # layout, and should be ignored in the global boost/
-    local skip-headers ;
-    # Install modular headers.
-    for local lib in $(modular-headers)
-    {
-        local header-root = $(BOOST_ROOT)/libs/$(lib)/include/boost ;
-        local lib-headers =
-            [ path.glob-tree $(header-root) : *.hpp *.ipp *.h *.inc *.SUNWCCh : CVS .svn ]
-            [ path.glob-tree $(header-root)/compatibility/cpp_c_headers : c* : CVS .svn ]
-            [ path.glob $(header-root)/tr1/tr1 : * : bcc32 sun CVS .svn ]
-        ;
-        skip-headers += [ sequence.transform path.relative-to [ path.make $(header-root) ] : $(lib-headers) ] ;
-        package.install install-$(lib)-headers
-            : <install-source-root>$(header-root)
-              $(install-requirements)
-              <install-no-version-symlinks>on
-            : # binaries
-            : # libraries
-            : $(lib-headers)
-            ;
-        $(p).mark-target-as-explicit install-$(lib)-headers ;
-    }
-
-    # Filter out headers that were created by b2 headers
-    local header-root = [ path.make $(BOOST_ROOT)/boost ] ;
-    headers = [ set.difference $(headers) : $(header-root)/$(skip-headers) ] ;
-
-    # Complete install.
-    package.install install-proper
-        :  <install-source-root>$(BOOST_ROOT)/boost
-           $(install-requirements)
-           <install-no-version-symlinks>on
-           
-        :
-        : $(libraries)-for-install
-        : $(headers)
-        ;
+    alias install-proper : libs/$(libraries)/build//install ;
     $(p).mark-target-as-explicit install-proper ;
 
-    # Install just library.
-    install stage-proper
-        : $(libraries)-for-install
-        : <location>$(stage-locate)/lib
-          <install-dependencies>on <install-type>LIB
-          <install-no-version-symlinks>on
-        ;
+    alias stage-proper : libs/$(libraries)/build//stage ;
     $(p).mark-target-as-explicit stage-proper ;
 }
 
@@ -488,13 +411,13 @@ class top-level-target : alias-target-class
     }
 }
 
-rule declare_top_level_targets ( libraries * : headers * : modular-headers * )
+rule declare_top_level_targets ( libraries * )
 {
-    declare_install_and_stage_proper_targets $(libraries) : $(headers) : $(modular-headers) ;
+    declare_install_and_stage_proper_targets $(libraries) ;
 
     targets.create-metatarget top-level-target : [ project.current ]
         : install
-        : install-$(modular-headers)-headers install-proper
+        : install-proper
         ;
     targets.create-metatarget top-level-target : [ project.current ]
         : stage
@@ -513,9 +436,6 @@ rule declare_top_level_targets ( libraries * : headers * : modular-headers * )
 }
 
 
-stage-abs = [ path.native [ path.root $(stage-locate)/lib [ path.pwd ] ] ] ;
-
-
 ################################################################################
 #
 # 4. Add hook to report configuration before the build, and confirmation with
@@ -542,7 +462,6 @@ rule pre-build ( )
 IMPORT $(__name__) : pre-build : : $(__name__).pre-build ;
 build-system.set-pre-build-hook $(__name__).pre-build ;
 
-# FIXME: Revise stage_abs.
 rule post-build ( ok ? )
 {
     if forward in [ modules.peek : top-level-targets ]
@@ -550,6 +469,8 @@ rule post-build ( ok ? )
         if $(ok)
         {
             local include-path = [ path.native $(BOOST_ROOT) ] ;
+            local stage-abs = [ path.native $(stage-locate)/lib ] ;
+
             ECHO "
 
 The Boost C++ Libraries were successfully built!
@@ -623,7 +544,7 @@ rule libraries-to-install ( existing-libs * )
     }
 }
 
-rule declare-targets ( all-libraries * : headers * : modular-headers * )
+rule declare-targets ( all-libraries * )
 {
     configure.register-components $(all-libraries) ;
 
@@ -641,7 +562,7 @@ rule declare-targets ( all-libraries * : headers * : modular-headers * )
         EXIT ;
     }
 
-    declare_top_level_targets $(libraries) : $(headers) : $(modular-headers) ;
+    declare_top_level_targets $(libraries) ;
 }
 
 # Returns the properties identifying the toolset. We'll use them

粤ICP备19079148号