Can install files created with configure_file.

pull/43/head
Jussi Pakkanen 10 years ago
parent 99bb73e6c9
commit 87ea869f02
  1. 1
      .gitignore
  2. 11
      interpreter.py
  3. 6
      ninjabackend.py
  4. 1
      test cases/common/16 configure file/installed_files.txt
  5. 3
      test cases/common/16 configure file/meson.build

1
.gitignore vendored

@ -7,3 +7,4 @@
/meson-test-run.txt
*~

@ -303,8 +303,9 @@ class Headers(InterpreterObject):
return self.custom_install_dir
class Data(InterpreterObject):
def __init__(self, source_subdir, sources, kwargs):
def __init__(self, in_sourcetree, source_subdir, sources, kwargs):
InterpreterObject.__init__(self)
self.in_sourcetree = in_sourcetree
self.source_subdir = source_subdir
self.sources = sources
kwsource = kwargs.get('sources', [])
@ -1269,7 +1270,7 @@ class Interpreter():
for a in args:
if not isinstance(a, str):
raise InvalidArguments('Argument %s is not a string.' % str(a))
data = Data(self.subdir, args, kwargs)
data = Data(True, self.subdir, args, kwargs)
self.build.data.append(data)
return data
@ -1295,9 +1296,9 @@ class Interpreter():
raise InterpreterException('Required keyword argument "input" not defined.')
if not 'output' in kwargs:
raise InterpreterException('Required keyword argument "output" not defined.')
inputfile = kwargs['input']
output = kwargs['output']
if 'configuration' in kwargs:
inputfile = kwargs['input']
output = kwargs['output']
conf = kwargs['configuration']
if not isinstance(conf, ConfigurationDataHolder):
raise InterpreterException('Argument "configuration" is not of type configuration_data')
@ -1314,6 +1315,8 @@ class Interpreter():
(res.stdout, res.stderr))
else:
raise InterpreterException('Configure_file must have either "configuration" or "command".')
if isinstance(kwargs.get('install_dir', None), str):
self.build.data.append(Data(False, self.subdir, [output], kwargs))
def func_include_directories(self, node, args, kwargs):
absbase = os.path.join(self.environment.get_source_dir(), self.subdir)

@ -464,7 +464,11 @@ class NinjaBackend(backends.Backend):
for de in data:
subdir = de.get_install_dir()
for f in de.get_sources():
srcabs = os.path.join(self.environment.get_source_dir(), de.get_source_subdir(), f)
if de.in_sourcetree:
srcprefix = self.environment.get_source_dir()
else:
srcprefix = self.environment.get_build_dir()
srcabs = os.path.join(srcprefix, de.get_source_subdir(), f)
dstabs = os.path.join(subdir, f)
i = [srcabs, dstabs]
d.data.append(i)

@ -22,7 +22,8 @@ ofile = '@0@/config2.h'.format(meson.current_build_dir())
configure_file(input : 'dummy.dat',
output : 'config2.h',
command : [genprog, scriptfile, ifile, ofile])
command : [genprog, scriptfile, ifile, ofile],
install_dir : 'share/appdir')
test('inctest2', executable('prog2', 'prog2.c',
include_directories : include_directories('.')))

Loading…
Cancel
Save