Shameful hack to get configure files working with custom targets. Needs to be fixed properly during file object refactoring.

pull/96/head
Jussi Pakkanen 10 years ago
parent 4e097ec702
commit 94bc5f4033
  1. 10
      interpreter.py
  2. 1
      test cases/common/76 configure file in custom target/inc/confdata.in
  3. 6
      test cases/common/76 configure file in custom target/inc/meson.build
  4. 4
      test cases/common/76 configure file in custom target/meson.build
  5. 4
      test cases/common/76 configure file in custom target/src/meson.build
  6. 8
      test cases/common/76 configure file in custom target/src/mycompiler.py

@ -1402,6 +1402,10 @@ class Interpreter():
raise InterpreterException('Required keyword argument "output" not defined.')
inputfile = kwargs['input']
output = kwargs['output']
if not isinstance(inputfile, str):
raise InterpreterException('Input must be a string.')
if not isinstance(output, str):
raise InterpreterException('Output must be a string.')
if 'configuration' in kwargs:
conf = kwargs['configuration']
if not isinstance(conf, ConfigurationDataHolder):
@ -1421,6 +1425,12 @@ class Interpreter():
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))
# FIXME, HORROR, this is a massive hack to get this working. The correct
# solution is to finally do the refactoring where source files are no
# longer strings but actual objects. This is a major undertaking
# and will only be done after the next release.
outputfile = os.path.join(self.environment.build_dir, self.subdir, output)
return outputfile
def func_include_directories(self, node, args, kwargs):
absbase = os.path.join(self.environment.get_source_dir(), self.subdir)

@ -0,0 +1,6 @@
cdata = configuration_data()
cdata.set('VALUE', '42')
cfile = configure_file(input : 'confdata.in',
output : 'confdata',
configuration : cdata)

@ -0,0 +1,4 @@
project('conf file in custom target', 'c')
subdir('inc')
subdir('src')

@ -0,0 +1,4 @@
custom_target('thing',
output : 'final.dat',
input : cfile,
command : [find_program('mycompiler.py'), '@INPUT@', '@OUTPUT@'])

@ -0,0 +1,8 @@
#!/usr/bin/env python3
import sys
ifile = open(sys.argv[1])
if ifile.readline().strip() != '42':
print('Incorrect input')
open(sys.argv[2], 'w').write('Success\n')
Loading…
Cancel
Save