aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-05-24 22:30:06 +0300
committerGitHub <noreply@github.com>2018-05-24 22:30:06 +0300
commitc8256a30a0a3523b62870c6bc93942af384d8c53 (patch)
tree044f61261dbdd1782570781aae3f16eb19973a0c
parent41ab5166e42e1793419ba44e6fb060f7dbf7cd4c (diff)
parent9a0e380525cfa3bf509888a1694aaf60218705e6 (diff)
downloadmeson-c8256a30a0a3523b62870c6bc93942af384d8c53.zip
meson-c8256a30a0a3523b62870c6bc93942af384d8c53.tar.gz
meson-c8256a30a0a3523b62870c6bc93942af384d8c53.tar.bz2
Merge pull request #3578 from MathieuDuponchelle/mkenums_gen_templates
gnome/mkenums: allow passing generated files as templates
-rw-r--r--mesonbuild/modules/gnome.py8
-rw-r--r--test cases/frameworks/7 gnome/mkenums/meson.build27
2 files changed, 33 insertions, 2 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index da72a1f..ea8ff3f 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -1014,12 +1014,16 @@ This will become a hard error in the future.''')
raise AssertionError("sources should've already been handled")
elif arg == 'c_template':
c_template = value
+ if isinstance(c_template, mesonlib.File):
+ c_template = c_template.absolute_path(state.environment.source_dir, state.environment.build_dir)
if 'template' in kwargs:
raise MesonException('Mkenums does not accept both '
'c_template and template keyword '
'arguments at the same time.')
elif arg == 'h_template':
h_template = value
+ if isinstance(h_template, mesonlib.File):
+ h_template = h_template.absolute_path(state.environment.source_dir, state.environment.build_dir)
if 'template' in kwargs:
raise MesonException('Mkenums does not accept both '
'h_template and template keyword '
@@ -1040,7 +1044,7 @@ This will become a hard error in the future.''')
targets = []
if h_template is not None:
- h_output = os.path.splitext(h_template)[0]
+ h_output = os.path.basename(os.path.splitext(h_template)[0])
# We always set template as the first element in the source array
# so --template consumes it.
h_cmd = cmd + ['--template', '@INPUT@']
@@ -1055,7 +1059,7 @@ This will become a hard error in the future.''')
targets.append(h_target)
if c_template is not None:
- c_output = os.path.splitext(c_template)[0]
+ c_output = os.path.basename(os.path.splitext(c_template)[0])
# We always set template as the first element in the source array
# so --template consumes it.
c_cmd = cmd + ['--template', '@INPUT@']
diff --git a/test cases/frameworks/7 gnome/mkenums/meson.build b/test cases/frameworks/7 gnome/mkenums/meson.build
index ff31619..af4a901 100644
--- a/test cases/frameworks/7 gnome/mkenums/meson.build
+++ b/test cases/frameworks/7 gnome/mkenums/meson.build
@@ -127,3 +127,30 @@ enums5 = gnome.mkenums_simple('enums5', sources : 'meson-sample.h',
decorator : 'MESON_EXPORT',
header_prefix : '#include "meson-decls.h"')
enumexe5 = executable('enumprog5', main, enums5, dependencies : gobj)
+
+# Generate template then use as input to mkenums
+
+# Simple trick to copy the file without substitutions, can be
+# removed when https://github.com/mesonbuild/meson/pull/3383 is fixed
+gen_h_template = configure_file(input: 'enums.h.in',
+ output: 'enums6.h.in',
+ configuration: configuration_data(),
+ format: 'cmake')
+
+enums_h6 = gnome.mkenums('enums6',
+ sources : 'meson-sample.h',
+ h_template : gen_h_template,
+ ftail : '/* trailing header file info */',
+ install_header : true,
+ install_dir : get_option('includedir'))
+
+conf = configuration_data()
+conf.set('ENUM_FILE', 'enums6.h')
+main = configure_file(
+ input : 'main.c',
+ output : 'main6.c',
+ configuration : conf)
+
+enumexe6 = executable('enumprog6', main, enums_c2, enums_h6,
+dependencies : gobj)
+test('enum test 4', enumexe6)