backend/vs: Generate dependencies for CustomTargetIndex for a CustomTarget.

Test & fix.
pull/9347/head
Andres Freund 3 years ago committed by Eli Schwartz
parent a161873948
commit 6b8f10cf6b
  1. 2
      mesonbuild/build.py
  2. 6
      test cases/common/245 custom target index source/code_source.c
  3. 6
      test cases/common/245 custom target index source/copyfile.py
  4. 7
      test cases/common/245 custom target index source/copyfile2.py
  5. 1
      test cases/common/245 custom target index source/header_source.h
  6. 6
      test cases/common/245 custom target index source/main.c
  7. 50
      test cases/common/245 custom target index source/meson.build

@ -2334,6 +2334,8 @@ class CustomTarget(Target, CommandBase):
for c in self.sources:
if isinstance(c, (BuildTarget, CustomTarget)):
deps.append(c)
if isinstance(c, CustomTargetIndex):
deps.append(c.target)
return deps
def get_transitive_build_target_deps(self) -> T.Set[T.Union[BuildTarget, 'CustomTarget']]:

@ -0,0 +1,6 @@
extern int genfunc(void);
int genfunc(void)
{
return 0;
}

@ -0,0 +1,6 @@
#!/usr/bin/env python3
import sys
import shutil
shutil.copyfile(sys.argv[1], sys.argv[2])

@ -0,0 +1,7 @@
#!/usr/bin/env python3
import sys
import shutil
shutil.copyfile(sys.argv[1], sys.argv[2])
shutil.copyfile(sys.argv[3], sys.argv[4])

@ -0,0 +1,6 @@
#include "gen.h"
int main(void)
{
return genfunc();
}

@ -0,0 +1,50 @@
project('custom target index source', 'c')
# Test that using a custom target index as a sourcefile works correctly
copy1 = find_program('copyfile.py')
copy2 = find_program('copyfile2.py')
step_1 = custom_target('step_1',
input: ['code_source.c', files('header_source.h')],
output: ['step_1.c', 'step_1.h'],
command: [copy2, '@INPUT0@', '@OUTPUT0@', '@INPUT1@', '@OUTPUT1@'],
build_by_default: false)
# test custom target with a single CustomTargetIndex input
step_2_c = custom_target('step_2_c',
input: step_1[0],
output: 'step_2.c',
command: [copy1, '@INPUT0@', '@OUTPUT0@'],
build_by_default: false)
step_2_h = custom_target('step_2_h',
input: step_1[1],
output: 'step_2.h',
command: [copy1, '@INPUT0@', '@OUTPUT0@'],
build_by_default: false,
)
# test custom target with multiple CustomTargetIndex inputs
gen = custom_target('step_3',
input: [step_2_c, step_2_h],
output: ['gen.c', 'gen.h'],
command: [copy2, '@INPUT0@', '@OUTPUT0@', '@INPUT1@', '@OUTPUT1@'],
build_by_default: false)
gen_c = gen[0]
gen_h = gen[1]
exe_separate = executable('exe_separate',
['main.c', gen_c, gen_h],
build_by_default: false,
install: false,
)
exe_together = executable('exe_together',
['main.c', gen],
build_by_default: false,
install: false,
)
test('exe_separate', exe_separate)
test('exe_together', exe_together)
Loading…
Cancel
Save