Add test case for trying to link with a library made by a custom_target
This commit is contained in:
parent
44a340a4fe
commit
623a8010e6
|
@ -0,0 +1,5 @@
|
|||
int func_in_foo();
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
return func_in_foo();
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
int func_in_foo() {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# Mimic a binary that generates a static library
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) != 4:
|
||||
print(sys.argv[0], 'compiler input_file output_file')
|
||||
sys.exit(1)
|
||||
compiler = sys.argv[1]
|
||||
ifile = sys.argv[2]
|
||||
ofile = sys.argv[3]
|
||||
tmp = ifile + '.o'
|
||||
if compiler.endswith('cl'):
|
||||
subprocess.check_call([compiler, '/nologo', '/MDd', '/Fo' + tmp, '/c', ifile])
|
||||
subprocess.check_call(['lib', '/nologo', '/OUT:' + ofile, tmp])
|
||||
else:
|
||||
subprocess.check_call([compiler, '-c', ifile, '-o', tmp])
|
||||
subprocess.check_call(['ar', 'csr', ofile, tmp])
|
||||
|
||||
os.unlink(tmp)
|
|
@ -0,0 +1,23 @@
|
|||
project('link_with custom target', ['c'])
|
||||
|
||||
#
|
||||
# libraries created by a custom_target currently can be used in sources: (see
|
||||
# common/100 manygen/ for an example of that), but not in link_with:
|
||||
#
|
||||
|
||||
lib_generator = find_program('lib_generator.py')
|
||||
|
||||
cc = meson.get_compiler('c').cmd_array().get(-1)
|
||||
|
||||
libfoo_target = custom_target(
|
||||
'libfoo',
|
||||
input: ['foo.c'],
|
||||
output: ['libfoo.a'],
|
||||
command: [lib_generator, cc, '@INPUT@', '@OUTPUT@']
|
||||
)
|
||||
|
||||
libfoo = declare_dependency(
|
||||
link_with: libfoo_target,
|
||||
)
|
||||
|
||||
executable('demo', ['demo.c'], dependencies: [libfoo])
|
Loading…
Reference in New Issue