diff options
-rw-r--r-- | mesonbuild/backend/backends.py | 18 | ||||
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 2 | ||||
-rw-r--r-- | mesonbuild/backend/vs2010backend.py | 2 | ||||
-rw-r--r-- | test cases/common/93 selfbuilt custom/checkarg.cpp | 6 | ||||
-rw-r--r-- | test cases/common/93 selfbuilt custom/meson.build | 11 |
5 files changed, 28 insertions, 11 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 687b122..afd8487 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -817,9 +817,9 @@ class Backend: if delta > 0.001: raise MesonException('Clock skew detected. File {} has a time stamp {:.4f}s in the future.'.format(absf, delta)) - def exe_object_to_cmd_array(self, exe): - if isinstance(exe, build.BuildTarget): - if exe.for_machine is not MachineChoice.BUILD: + def build_target_to_cmd_array(self, bt): + if isinstance(bt, build.BuildTarget): + if isinstance(bt, build.Executable) and bt.for_machine is not MachineChoice.BUILD: if (self.environment.is_cross_build() and self.environment.exe_wrapper is None and self.environment.need_exe_wrapper()): @@ -827,12 +827,12 @@ class Backend: Cannot use target {} as a generator because it is built for the host machine and no exe wrapper is defined or needs_exe_wrapper is true. You might want to set `native: true` instead to build it for - the build machine.'''.format(exe.name)) + the build machine.'''.format(bt.name)) raise MesonException(s) - exe_arr = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(exe))] + arr = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(bt))] else: - exe_arr = exe.get_command() - return exe_arr + arr = bt.get_command() + return arr def replace_extra_args(self, args, genlist): final_args = [] @@ -960,8 +960,8 @@ class Backend: # Evaluate the command list cmd = [] for i in target.command: - if isinstance(i, build.Executable): - cmd += self.exe_object_to_cmd_array(i) + if isinstance(i, build.BuildTarget): + cmd += self.build_target_to_cmd_array(i) continue elif isinstance(i, build.CustomTarget): # GIR scanner will attempt to execute this binary but diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 13b7bc6..03ccd19 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1771,7 +1771,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) generator = genlist.get_generator() subdir = genlist.subdir exe = generator.get_exe() - exe_arr = self.exe_object_to_cmd_array(exe) + exe_arr = self.build_target_to_cmd_array(exe) infilelist = genlist.get_inputs() outfilelist = genlist.get_outputs() extra_dependencies = self.get_custom_target_depend_files(genlist) diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index f0f8502..9a7ebf2 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -119,7 +119,7 @@ class Vs2010Backend(backends.Backend): infilelist = genlist.get_inputs() outfilelist = genlist.get_outputs() source_dir = os.path.join(down, self.build_to_src, genlist.subdir) - exe_arr = self.exe_object_to_cmd_array(exe) + exe_arr = self.build_target_to_cmd_array(exe) idgroup = ET.SubElement(parent_node, 'ItemGroup') for i in range(len(infilelist)): if len(infilelist) == len(outfilelist): diff --git a/test cases/common/93 selfbuilt custom/checkarg.cpp b/test cases/common/93 selfbuilt custom/checkarg.cpp new file mode 100644 index 0000000..99092ee --- /dev/null +++ b/test cases/common/93 selfbuilt custom/checkarg.cpp @@ -0,0 +1,6 @@ +#include <cassert> + +int main(int argc, char *[]) { + assert(argc == 2); + return 0; +} diff --git a/test cases/common/93 selfbuilt custom/meson.build b/test cases/common/93 selfbuilt custom/meson.build index e5da27e..fc5d916 100644 --- a/test cases/common/93 selfbuilt custom/meson.build +++ b/test cases/common/93 selfbuilt custom/meson.build @@ -14,3 +14,14 @@ hfile = custom_target('datah', main = executable('mainprog', 'mainprog.cpp', hfile) test('maintest', main) + +lib = library('libtool', 'tool.cpp') + +checkarg = executable('checkarg', 'checkarg.cpp') + +ctlib = custom_target('ctlib', + output : 'ctlib.out', + capture : true, + command : [checkarg, lib], + build_by_default : true, +) |