On 8/2/06, Rene Rivera <grafik@users.sourceforge.net > wrote:
Update of /cvsroot/boost/boost/tools/build/v2/tools
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv18447/tools/build/v2/tools

Modified Files:
       gcc.jam
Log Message:
Skip targets that can't be generated like BBv1 does.

Index: gcc.jam
===================================================================
RCS file: /cvsroot/boost/boost/tools/build/v2/tools/gcc.jam,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -d -r1.77 -r1.78
--- gcc.jam     16 Jun 2006 21:52:54 -0000      1.77
+++ gcc.jam     2 Aug 2006 18:26:30 -0000       1.78
@@ -1,10 +1,10 @@
-#  Copyright (c) 2001 David Abrahams.
-#  Copyright (c) 2002-2003 Rene Rivera.
-#  Copyright (c) 2002-2003 Vladimir Prus.
+# Copyright 2001 David Abrahams.
+# Copyright 2002-2006 Rene Rivera.
+# Copyright 2002-2003 Vladimir Prus.
#
-#  Use, modification and distribution is subject to the Boost Software
-#  License Version 1.0. (See accompanying file LICENSE_1_0.txt or
-#   http://www.boost.org/LICENSE_1_0.txt )
+# Distributed under 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 )

import toolset : flags ;
import property ;
@@ -254,36 +254,54 @@
# since it's not supported by gcc/libc.
class gcc-linking-generator : unix-linking-generator
{
-    rule generated-targets ( sources + : property-set : project name ? )
+    rule can-build ( target-type : property-set : sources * )
    {
-        if <runtime-link>static in [ $(property-set).raw ]
+        local no-static-link = ;
+        if [ modules.peek : UNIX ]
        {
-            local m ;
-            if [ id ] = "gcc.link.dll"
+            switch [ modules.peek : JAMUNAME ]
+            {
+                case * : no-static-link = true ;
+            }
+        }
+
+        local properties = [ $(property-set).raw ] ;
+        local reason ;
+        if $(no-static-link) && <runtime-link>static in $(properties)
+        {
+            if <link>shared in $(properties)
+            {
+                reason =
+                    "On gcc, DLL can't be build with '<runtime-link>static'." ;
+            }
+            else if [ type.is-derived $(target-type) EXE ]
            {
-                m = "on gcc, DLL can't be build with <runtime-link>static" ;
-            }
-            if ! $(m) {
                for local s in $(sources)
                {
                    local type = [ $(s).type ] ;
-                    if $(type) &&  [ type.is-derived $(type) SHARED_LIB ]
+                    if $(type) &&  [ type.is-derived $(type) SHARED_LIB ]
                    {
-                        m = "on gcc, using DLLS together with the <runtime-link>static options is not possible " ;
-                    }
-                }
-            }
-            if $(m)
-            {
-                errors.user-error $(m) :
-                  "it's suggested to use <runtime-link>static together with the <link>static" ;
+                        reason =
+                            "On gcc, using DLLS together with the"
+                            "<runtime-link>static options is not possible " ;
+                    }
+                }
            }
-
        }
-
-        return [ unix-linking-generator.generated-targets
-            $(sources) : $(property-set) : $(project) $(name) ] ;
-    }
+        if $(reason)
+        {
+            ECHO warn:
+                $(reason) ;
+            ECHO warn:
+                "It's suggested to use '<runtime-link>static' together"
+                "with the '<link>static'." ;
+            return ;
+        }
+        else
+        {
+            return true ;
+        }
+    }
}
 
I'm not sure about one thing. This code is called from find-viable-generators, and emits some warnings. Finding viable generators is the first step in generator selection, we can find 3 generators and then select one. The fact that find-viable-generator has found a generator does not mean it will run. So, you can emit a warning for a generator that is not run.
 
Am I missing something?
 
- Volodya