diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-09-22 20:40:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-22 20:40:27 +0300 |
commit | 524a95fa62a6e0cb77e53d7b38d5c2d59a75e449 (patch) | |
tree | 145b0b48897167c0892df635bbfb40e71760974c | |
parent | 68eca11cc641cb02c7755f1e44fa3301863eacfd (diff) | |
parent | 01ddf3ac13930ce077603db9e4823339cc4dc4d3 (diff) | |
download | meson-524a95fa62a6e0cb77e53d7b38d5c2d59a75e449.zip meson-524a95fa62a6e0cb77e53d7b38d5c2d59a75e449.tar.gz meson-524a95fa62a6e0cb77e53d7b38d5c2d59a75e449.tar.bz2 |
Merge pull request #9274 from anarazel/fix-vs-static-generated
backends/vs: Set ObjectFileName for generated sources.
7 files changed, 57 insertions, 0 deletions
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index 4dc4679..87aef93 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -1342,6 +1342,8 @@ class Vs2010Backend(backends.Backend): self.add_additional_options(lang, inc_cl, file_args) self.add_preprocessor_defines(lang, inc_cl, file_defines) self.add_include_dirs(lang, inc_cl, file_inc_dirs) + s = File.from_built_file(target.get_subdir(), s) + ET.SubElement(inc_cl, 'ObjectFileName').text = "$(IntDir)" + self.object_filename_from_source(target, s) for lang in pch_sources: impl = pch_sources[lang][1] if impl and path_normalize_add(impl, previous_sources): @@ -1356,6 +1358,7 @@ class Vs2010Backend(backends.Backend): else: inc_dirs = file_inc_dirs self.add_include_dirs(lang, inc_cl, inc_dirs) + #XXX: Do we need to set the object file name name here too? previous_objects = [] if self.has_objects(objects, additional_objects, gen_objs): diff --git a/test cases/windows/19 vs install static lib with generated obj deps/both_lib_source.c b/test cases/windows/19 vs install static lib with generated obj deps/both_lib_source.c new file mode 100644 index 0000000..aa926b1 --- /dev/null +++ b/test cases/windows/19 vs install static lib with generated obj deps/both_lib_source.c @@ -0,0 +1,7 @@ +extern int static_lib_function(void); +extern __declspec(dllexport) int both_lib_function(void); + +int both_lib_function(void) +{ + return static_lib_function(); +} diff --git a/test cases/windows/19 vs install static lib with generated obj deps/copyfile.py b/test cases/windows/19 vs install static lib with generated obj deps/copyfile.py new file mode 100644 index 0000000..738e894 --- /dev/null +++ b/test cases/windows/19 vs install static lib with generated obj deps/copyfile.py @@ -0,0 +1,4 @@ +from shutil import copyfile +import sys + +copyfile(sys.argv[1], sys.argv[2]) diff --git a/test cases/windows/19 vs install static lib with generated obj deps/generated_source.c b/test cases/windows/19 vs install static lib with generated obj deps/generated_source.c new file mode 100644 index 0000000..8671cbf --- /dev/null +++ b/test cases/windows/19 vs install static lib with generated obj deps/generated_source.c @@ -0,0 +1,4 @@ +int generated_function(void) +{ + return 42; +} diff --git a/test cases/windows/19 vs install static lib with generated obj deps/meson.build b/test cases/windows/19 vs install static lib with generated obj deps/meson.build new file mode 100644 index 0000000..bc61772 --- /dev/null +++ b/test cases/windows/19 vs install static lib with generated obj deps/meson.build @@ -0,0 +1,20 @@ +project('test', 'c') + +generated_c = custom_target( + 'generated.c', + input : files('generated_source.c', 'copyfile.py'), + output : 'generated.c', + command : ['python', '@INPUT1@', '@INPUT0@', '@OUTPUT@'], +) + +static_lib = static_library( + 'static_lib', + [files('static_lib_source.c'), generated_c], +) + +both_lib = both_libraries( + 'both_lib', + [files('both_lib_source.c')], + link_with : [static_lib], + install : true, +) diff --git a/test cases/windows/19 vs install static lib with generated obj deps/static_lib_source.c b/test cases/windows/19 vs install static lib with generated obj deps/static_lib_source.c new file mode 100644 index 0000000..e86153a --- /dev/null +++ b/test cases/windows/19 vs install static lib with generated obj deps/static_lib_source.c @@ -0,0 +1,6 @@ +extern int generated_function(void); + +int static_lib_function(void) +{ + return generated_function(); +} diff --git a/test cases/windows/19 vs install static lib with generated obj deps/test.json b/test cases/windows/19 vs install static lib with generated obj deps/test.json new file mode 100644 index 0000000..451da1e --- /dev/null +++ b/test cases/windows/19 vs install static lib with generated obj deps/test.json @@ -0,0 +1,13 @@ +{ + "installed": [ + {"type": "file", "file": "usr/lib/libboth_lib.a"}, + + {"type": "shared_lib", "platform": "msvc", "file": "usr/bin/both_lib"}, + {"type": "implib", "platform": "msvc", "file": "usr/lib/both_lib"}, + {"type": "pdb", "platform": "msvc", "file": "usr/bin/both_lib"}, + + {"type": "expr", "platform": "gcc", "file": "usr/lib/?libboth_lib.dll"}, + {"type": "implib", "platform": "gcc", "file": "usr/lib/libboth_lib"}, + {"type": "pdb", "platform": "gcc", "file": "usr/bin/libboth_lib"} + ] +} |