diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-22 23:40:52 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-24 20:56:06 +0200 |
commit | 8361da5c52e880225df50d209318ef2184c2dbb9 (patch) | |
tree | d6561a9ef4edd9a76f54a23773156a9d1ac7c70c /mesonbuild | |
parent | 3037ade41dc0cfc1cb84b0a668784c8d1af46987 (diff) | |
download | meson-8361da5c52e880225df50d209318ef2184c2dbb9.zip meson-8361da5c52e880225df50d209318ef2184c2dbb9.tar.gz meson-8361da5c52e880225df50d209318ef2184c2dbb9.tar.bz2 |
Fix setup so test suite runs with rustc + MSVC. Closes: 5099
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 9 | ||||
-rw-r--r-- | mesonbuild/build.py | 11 | ||||
-rw-r--r-- | mesonbuild/compilers/compilers.py | 1 | ||||
-rw-r--r-- | mesonbuild/compilers/rust.py | 6 |
4 files changed, 24 insertions, 3 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index f6ff722..0e6311a 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -368,6 +368,13 @@ int dummy; src_block['sources'] += sources src_block['generated_sources'] += generated_sources + def is_rust_target(self, target): + if len(target.sources) > 0: + first_file = target.sources[0] + if first_file.fname.endswith('.rs'): + return True + return False + def generate_target(self, target, outfile): if isinstance(target, build.CustomTarget): self.generate_custom_target(target, outfile) @@ -386,7 +393,7 @@ int dummy; if isinstance(target, build.Jar): self.generate_jar_target(target, outfile) return - if 'rust' in target.compilers: + if self.is_rust_target(target): self.generate_rust_target(target, outfile) return if 'cs' in target.compilers: diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 20f0cdb..e2e558a 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1193,6 +1193,10 @@ You probably should put it in link_with instead.''') m = 'Could not get a dynamic linker for build target {!r}' raise AssertionError(m.format(self.name)) + def get_using_rustc(self): + if len(self.sources) > 0 and self.sources[0].fname.endswith('.rs'): + return True + def get_using_msvc(self): ''' Check if the dynamic linker is MSVC. Used by Executable, StaticLibrary, @@ -1610,7 +1614,12 @@ class SharedLibrary(BuildTarget): suffix = 'dll' self.vs_import_filename = '{0}{1}.lib'.format(self.prefix if self.prefix is not None else '', self.name) self.gcc_import_filename = '{0}{1}.dll.a'.format(self.prefix if self.prefix is not None else 'lib', self.name) - if self.get_using_msvc(): + if self.get_using_rustc(): + # Shared library is of the form foo.dll + prefix = '' + # Import library is called foo.dll.lib + self.import_filename = '{0}.dll.lib'.format(self.name) + elif self.get_using_msvc(): # Shared library is of the form foo.dll prefix = '' # Import library is called foo.lib diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index ceefefe..da02980 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -61,7 +61,6 @@ c_suffixes = lang_suffixes['c'] + ('h',) clib_langs = ('objcpp', 'cpp', 'objc', 'c', 'fortran',) # List of languages that can be linked with C code directly by the linker # used in build.py:process_compilers() and build.py:get_dynamic_linker() -# XXX: Add Rust to this? clink_langs = ('d', 'cuda') + clib_langs clink_suffixes = () for _l in clink_langs + ('vala',): diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py index 68da823..410125a 100644 --- a/mesonbuild/compilers/rust.py +++ b/mesonbuild/compilers/rust.py @@ -93,3 +93,9 @@ class RustCompiler(Compiler): break return parameter_list + + def get_buildtype_linker_args(self, build_type): + return [] + + def get_std_exe_link_args(self): + return [] |