mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/python
 | 
						|
 | 
						|
# Copyright 2003 Dave Abrahams
 | 
						|
# Copyright 2003 Vladimir Prus
 | 
						|
# Distributed under the Boost Software License, Version 1.0.
 | 
						|
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
 | 
						|
import BoostBuild
 | 
						|
 | 
						|
 | 
						|
###############################################################################
 | 
						|
#
 | 
						|
# test_alias_rule()
 | 
						|
# -----------------
 | 
						|
#
 | 
						|
###############################################################################
 | 
						|
 | 
						|
def test_alias_rule(t):
 | 
						|
    """Basic alias rule test."""
 | 
						|
 | 
						|
    t.write("jamroot.jam", """\
 | 
						|
exe a : a.cpp ;
 | 
						|
exe b : b.cpp ;
 | 
						|
exe c : c.cpp ;
 | 
						|
 | 
						|
alias bin1 : a ;
 | 
						|
alias bin2 : a b ;
 | 
						|
 | 
						|
alias src : s.cpp ;
 | 
						|
exe hello : hello.cpp src ;
 | 
						|
""")
 | 
						|
 | 
						|
    t.write("a.cpp", "int main() {}\n")
 | 
						|
    t.copy("a.cpp", "b.cpp")
 | 
						|
    t.copy("a.cpp", "c.cpp")
 | 
						|
    t.copy("a.cpp", "hello.cpp")
 | 
						|
    t.write("s.cpp", "")
 | 
						|
 | 
						|
    # Check that targets to which "bin1" refers are updated, and only those.
 | 
						|
    t.run_build_system(["bin1"])
 | 
						|
    t.expect_addition(BoostBuild.List("bin/$toolset/debug/") * "a.exe a.obj")
 | 
						|
    t.expect_nothing_more()
 | 
						|
 | 
						|
    # Try again with "bin2"
 | 
						|
    t.run_build_system(["bin2"])
 | 
						|
    t.expect_addition(BoostBuild.List("bin/$toolset/debug/") * "b.exe b.obj")
 | 
						|
    t.expect_nothing_more()
 | 
						|
 | 
						|
    # Try building everything, making sure 'hello' target is created.
 | 
						|
    t.run_build_system()
 | 
						|
    t.expect_addition(BoostBuild.List("bin/$toolset/debug/") * \
 | 
						|
        "hello.exe hello.obj")
 | 
						|
    t.expect_addition("bin/$toolset/debug/s.obj")
 | 
						|
    t.expect_addition(BoostBuild.List("bin/$toolset/debug/") * "c.exe c.obj")
 | 
						|
    t.expect_nothing_more()
 | 
						|
 | 
						|
 | 
						|
###############################################################################
 | 
						|
#
 | 
						|
# test_alias_source_usage_requirements()
 | 
						|
# --------------------------------------
 | 
						|
#
 | 
						|
###############################################################################
 | 
						|
 | 
						|
def test_alias_source_usage_requirements(t):
 | 
						|
    """
 | 
						|
      Check whether usage requirements are propagated via "alias". In case they
 | 
						|
    are not, linking will fail as there will be no main() function defined
 | 
						|
    anywhere in the source.
 | 
						|
 | 
						|
    """
 | 
						|
    t.write("jamroot.jam", """\
 | 
						|
lib l : l.cpp : : : <define>WANT_MAIN ;
 | 
						|
alias la : l ;
 | 
						|
exe main : main.cpp la ;
 | 
						|
""")
 | 
						|
 | 
						|
    t.write("l.cpp", """\
 | 
						|
void
 | 
						|
#if defined(_WIN32)
 | 
						|
__declspec(dllexport)
 | 
						|
#endif
 | 
						|
foo() {}
 | 
						|
""")
 | 
						|
 | 
						|
    t.write("main.cpp", """\
 | 
						|
#ifdef WANT_MAIN
 | 
						|
int main() {}
 | 
						|
#endif
 | 
						|
""")
 | 
						|
 | 
						|
    t.run_build_system()
 | 
						|
 | 
						|
 | 
						|
###############################################################################
 | 
						|
#
 | 
						|
# main()
 | 
						|
# ------
 | 
						|
#
 | 
						|
###############################################################################
 | 
						|
 | 
						|
# We do not pass the '-d0' option to Boost Build here to get more detailed
 | 
						|
# information in case of failure.
 | 
						|
t = BoostBuild.Tester(pass_d0=False, use_test_config=False)
 | 
						|
 | 
						|
test_alias_rule(t)
 | 
						|
test_alias_source_usage_requirements(t)
 | 
						|
 | 
						|
t.cleanup()
 |