Example #1
0
    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'))))
Example #2
0
 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)
Example #3
0
 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))
Example #4
0
 def test_identity(self):
     expected = file_types.WholeArchive(
         file_types.StaticLibrary(Path('static', Root.srcdir), None)
     )
     self.assertIs(self.context['whole_archive'](expected), expected)
Example #5
0
    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'])
Example #6
0
 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))
Example #7
0
 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)))
Example #8
0
 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)