mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			153 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/python
 | |
| 
 | |
| # Copyright 2003, 2004, 2005, 2006 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)
 | |
| 
 | |
| # Test that a chain of libraries works ok, no matter if we use static or shared
 | |
| # linking.
 | |
| 
 | |
| import BoostBuild
 | |
| import os
 | |
| import string
 | |
| 
 | |
| t = BoostBuild.Tester(use_test_config=False)
 | |
| 
 | |
| # Stage the binary, so that it will be relinked without hardcode-dll-paths.
 | |
| # That will check that we pass correct -rpath-link, even if not passing -rpath.
 | |
| t.write("jamfile.jam", """\
 | |
| stage dist : main ;
 | |
| exe main : main.cpp b ;
 | |
| """)
 | |
| 
 | |
| t.write("main.cpp", """\
 | |
| void foo();
 | |
| int main() { foo(); }
 | |
| """)
 | |
| 
 | |
| t.write("jamroot.jam", "")
 | |
| 
 | |
| t.write("a/a.cpp", """\
 | |
| void
 | |
| #if defined(_WIN32)
 | |
| __declspec(dllexport)
 | |
| #endif
 | |
| gee() {}
 | |
| void
 | |
| #if defined(_WIN32)
 | |
| __declspec(dllexport)
 | |
| #endif
 | |
| geek() {}
 | |
| """)
 | |
| 
 | |
| t.write("a/jamfile.jam", "lib a : a.cpp ;")
 | |
| 
 | |
| t.write("b/b.cpp", """\
 | |
| void geek();
 | |
| void
 | |
| #if defined(_WIN32)
 | |
| __declspec(dllexport)
 | |
| #endif
 | |
| foo() { geek(); }
 | |
| """)
 | |
| 
 | |
| t.write("b/jamfile.jam", "lib b : b.cpp ../a//a ;")
 | |
| 
 | |
| t.run_build_system(["-d2"], stderr=None)
 | |
| t.expect_addition("bin/$toolset/debug/main.exe")
 | |
| t.rm(["bin", "a/bin", "b/bin"])
 | |
| 
 | |
| t.run_build_system(["link=static"])
 | |
| t.expect_addition("bin/$toolset/debug/link-static/main.exe")
 | |
| t.rm(["bin", "a/bin", "b/bin"])
 | |
| 
 | |
| 
 | |
| # Check that <library> works for static linking.
 | |
| t.write("b/jamfile.jam", "lib b : b.cpp : <library>../a//a ;")
 | |
| 
 | |
| t.run_build_system(["link=static"])
 | |
| t.expect_addition("bin/$toolset/debug/link-static/main.exe")
 | |
| 
 | |
| t.rm(["bin", "a/bin", "b/bin"])
 | |
| 
 | |
| t.write("b/jamfile.jam", "lib b : b.cpp ../a//a/<link>shared : <link>static ;")
 | |
| 
 | |
| t.run_build_system()
 | |
| t.expect_addition("bin/$toolset/debug/main.exe")
 | |
| 
 | |
| t.rm(["bin", "a/bin", "b/bin"])
 | |
| 
 | |
| 
 | |
| # Test that putting a library in sources of a searched library works.
 | |
| t.write("jamfile.jam", """\
 | |
| exe main : main.cpp png ;
 | |
| lib png : z : <name>png ;
 | |
| lib z : : <name>zzz ;
 | |
| """)
 | |
| 
 | |
| t.run_build_system(["-a", "-d+2"], status=None, stderr=None)
 | |
| # Try to find the "zzz" string either in response file (for Windows compilers),
 | |
| # or in the standard output.
 | |
| rsp = t.adjust_names("bin/$toolset/debug/main.exe.rsp")[0]
 | |
| if os.path.exists(rsp) and ( string.find(open(rsp).read(), "zzz") != -1 ):
 | |
|     pass
 | |
| elif string.find(t.stdout(), "zzz") != -1:
 | |
|     pass
 | |
| else:
 | |
|     t.fail_test(1)
 | |
| 
 | |
| # Test main -> libb -> liba chain in the case where liba is a file and not a
 | |
| # Boost.Build target.
 | |
| t.rm(".")
 | |
| 
 | |
| t.write("jamroot.jam", "")
 | |
| t.write("a/jamfile.jam", """\
 | |
| lib a : a.cpp ;
 | |
| install dist : a ;
 | |
| """)
 | |
| 
 | |
| t.write("a/a.cpp", """\
 | |
| #if defined(_WIN32)
 | |
| __declspec(dllexport)
 | |
| #endif
 | |
| void a() {}
 | |
| """)
 | |
| 
 | |
| t.run_build_system(subdir="a")
 | |
| t.expect_addition("a/dist/a.dll")
 | |
| 
 | |
| if ( os.name == 'nt' or os.uname()[0].lower().startswith('cygwin') ) and \
 | |
|     BoostBuild.get_toolset() != 'gcc':
 | |
|     # This is a Windows import library -- we know the exact name.
 | |
|     file = "a/dist/a.lib"
 | |
| else:
 | |
|     file = t.adjust_names("a/dist/a.dll")[0]
 | |
| 
 | |
| t.write("b/jamfile.jam", "lib b : b.cpp ../%s ;" % file)
 | |
| 
 | |
| t.write("b/b.cpp", """\
 | |
| #if defined(_WIN32)
 | |
| __declspec(dllimport)
 | |
| #endif
 | |
| void a();
 | |
| #if defined(_WIN32)
 | |
| __declspec(dllexport)
 | |
| #endif
 | |
| void b() { a(); }
 | |
| """)
 | |
| 
 | |
| t.write("jamroot.jam", "exe main : main.cpp b//b ;")
 | |
| 
 | |
| t.write("main.cpp", """\
 | |
| #if defined(_WIN32)
 | |
| __declspec(dllimport)
 | |
| #endif
 | |
| void b();
 | |
| int main() { b(); }
 | |
| """)
 | |
| 
 | |
| t.run_build_system()
 | |
| t.expect_addition("bin/$toolset/debug/main.exe")
 | |
| 
 | |
| t.cleanup()
 |