def test_lib_flags_lib(self): lib = self.Path('/path/to/lib/foo.lib') self.assertEqual( self.linker.lib_flags( opts.option_list( opts.lib(file_types.SharedLibrary(lib, 'native')))), [lib]) self.assertEqual( self.linker.lib_flags(opts.option_list( opts.lib(file_types.SharedLibrary(lib, 'native'))), mode='pkg-config'), ['-lfoo']) self.assertEqual( self.linker.lib_flags( opts.option_list( opts.lib( file_types.WholeArchive( file_types.SharedLibrary(lib, 'native'))))), ['/WHOLEARCHIVE:' + lib]) version = ('Microsoft (R) C/C++ Optimizing Compiler Version ' + '18.00.25831 for x86') with mock.patch('bfg9000.shell.which', mock_which): linker = MsvcBuilder(self.env, known_langs['c++'], ['cl'], version).linker('executable') with self.assertRaises(TypeError): linker.lib_flags( opts.option_list( opts.lib( file_types.WholeArchive( file_types.StaticLibrary(lib, 'native'))))) with self.assertRaises(TypeError): self.linker.lib_flags( opts.option_list(opts.lib(Framework('cocoa'))))
def test_src_file(self): expected = file_types.WholeArchive( file_types.StaticLibrary(Path('static', Root.srcdir), self.env.target_platform.object_format, 'c')) self.assertSameFile(link.whole_archive(self.builtin_dict, 'static'), expected)
def test_convert_from_static(self): lib = file_types.StaticLibrary(Path('static', Root.srcdir), None) result = self.context['whole_archive'](lib) self.assertSameFile(result, file_types.WholeArchive(lib))
def test_identity(self): expected = file_types.WholeArchive( file_types.StaticLibrary(Path('static', Root.srcdir), None) ) self.assertIs(self.context['whole_archive'](expected), expected)
def test_lib_flags_lib(self): lib = Path('/path/to/lib/libfoo.a') # Shared library self.assertEqual( self.linker.lib_flags( opts.option_list( opts.lib(file_types.SharedLibrary(lib, 'native')))), ['-lfoo']) self.assertEqual( self.linker.lib_flags(opts.option_list( opts.lib(file_types.SharedLibrary(lib, 'native'))), mode='pkg-config'), ['-lfoo']) # Static library self.assertEqual( self.linker.lib_flags( opts.option_list( opts.lib(file_types.StaticLibrary(lib, 'native')))), [lib]) self.assertEqual( self.linker.lib_flags(opts.option_list( opts.lib(file_types.StaticLibrary(lib, 'native'))), mode='pkg-config'), ['-lfoo']) # Whole archive flags = self.linker.lib_flags( opts.option_list( opts.lib( file_types.WholeArchive( file_types.StaticLibrary(lib, 'native'))))) if self.env.target_platform.name == 'darwin': self.assertEqual(flags, ['-Wl,-force_load', lib]) else: self.assertEqual( flags, ['-Wl,--whole-archive', lib, '-Wl,--no-whole-archive']) # Generic library self.assertEqual( self.linker.lib_flags( opts.option_list(opts.lib(file_types.Library(lib, 'native')))), ['-lfoo']) mingw_lib = Path('/path/to/lib/foo.lib') self.assertEqual( self.linker.lib_flags( opts.option_list( opts.lib(file_types.Library(mingw_lib, 'native')))), [mingw_lib]) with self.assertRaises(ValueError): self.linker.lib_flags(opts.option_list( opts.lib(file_types.Library(mingw_lib, 'native'))), mode='pkg-config') # Framework fw = opts.lib(Framework('cocoa')) if self.env.target_platform.name == 'darwin': self.assertEqual(self.linker.lib_flags(opts.option_list(fw)), ['-framework', 'cocoa']) else: with self.assertRaises(TypeError): self.linker.lib_flags(opts.option_list(fw)) # String self.assertEqual( self.linker.lib_flags(opts.option_list(opts.lib('foo'))), ['-lfoo'])
def test_convert_from_static(self): lib = file_types.StaticLibrary(Path('static', Root.srcdir), None) result = self.builtin_dict['whole_archive'](lib) self.assertEqual(result, file_types.WholeArchive(lib))
def test_src_file(self): result = link.whole_archive(self.builtin_dict, 'static') self.assertEqual( result, file_types.WholeArchive( file_types.StaticLibrary(Path('static', Root.srcdir), None)))
def test_identity(self): lib = file_types.WholeArchive( file_types.StaticLibrary(Path('static', Root.srcdir), None)) result = self.builtin_dict['whole_archive'](lib) self.assertEqual(result, lib)