mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-26 10:30:22 -04:00 
			
		
		
		
	
		
			
	
	
		
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | #!/usr/bin/python | ||
|  | 
 | ||
|  | # Copyright 2003 Vladimir Prus | ||
|  | # 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) | ||
|  | 
 | ||
|  | # Test that unused sources are at least reported. | ||
|  | 
 | ||
|  | import BoostBuild | ||
|  | 
 | ||
|  | t = BoostBuild.Tester(["-d+2"], use_test_config=False) | ||
|  | 
 | ||
|  | t.write("a.cpp", "int main() {}\n") | ||
|  | t.write("b.cpp", "\n") | ||
|  | t.write("b.x", "") | ||
|  | t.write("jamroot.jam", """\
 | ||
|  | import "class" : new ; | ||
|  | import modules ; | ||
|  | import project ; | ||
|  | import targets ; | ||
|  | import type ; | ||
|  | import virtual-target ; | ||
|  | 
 | ||
|  | type.register X : x ; | ||
|  | 
 | ||
|  | class test-target-class : basic-target | ||
|  | { | ||
|  |     rule construct ( name : source-targets * : property-set ) | ||
|  |     { | ||
|  |         local result = [ property-set.empty ] ; | ||
|  |         if ! [ modules.peek : GENERATE_NOTHING ] | ||
|  |         { | ||
|  |             result += [ virtual-target.from-file b.x : . : $(self.project) ] ; | ||
|  |             if ! [ modules.peek : GENERATE_ONLY_UNUSABLE ] | ||
|  |             { | ||
|  |                 result += [ virtual-target.from-file b.cpp : . : $(self.project) | ||
|  |                     ] ; | ||
|  |             } | ||
|  |         } | ||
|  |         return $(result) ; | ||
|  |     } | ||
|  | 
 | ||
|  |     rule compute-usage-requirements ( rproperties : targets * ) | ||
|  |     { | ||
|  |         return [ property-set.create <define>FOO ] ; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | rule make-b-main-target | ||
|  | { | ||
|  |     local project = [ project.current ] ; | ||
|  |     targets.main-target-alternative [ new test-target-class b : $(project) ] ; | ||
|  | } | ||
|  | 
 | ||
|  | exe a : a.cpp b c ; | ||
|  | make-b-main-target ; | ||
|  | alias c ;  # Expands to nothing, intentionally. | ||
|  | """)
 | ||
|  | 
 | ||
|  | t.run_build_system() | ||
|  | 
 | ||
|  | # The second invocation should do nothing, and produce no warning. The previous | ||
|  | # invocation might have printed executed actions and other things, so it is not | ||
|  | # easy to check if a warning was issued or not. | ||
|  | t.run_build_system(stdout="") | ||
|  | 
 | ||
|  | t.run_build_system(["-sGENERATE_ONLY_UNUSABLE=1"], stdout="") | ||
|  | 
 | ||
|  | # Check that even if main target generates nothing, its usage requirements are | ||
|  | # still propagated to dependants. | ||
|  | t.write("a.cpp", """\
 | ||
|  | #ifndef FOO | ||
|  |     #error We refuse to compile without FOO being defined! | ||
|  |     We_refuse_to_compile_without_FOO_being_defined | ||
|  | #endif | ||
|  | int main() {} | ||
|  | """)
 | ||
|  | t.run_build_system(["-sGENERATE_NOTHING=1"]) | ||
|  | 
 | ||
|  | t.cleanup() |