From ff6b3c7a2d5cecb00ad60397b50e319b73461752 Mon Sep 17 00:00:00 2001 From: Guillaume Poirier-Morency Date: Sat, 15 Oct 2016 13:40:41 -0400 Subject: vala: Custom header and vapi name (fix #892) --- mesonbuild/backend/ninjabackend.py | 4 ++-- mesonbuild/build.py | 5 +++++ test cases/vala/12 custom output/foo.vala | 0 test cases/vala/12 custom output/meson.build | 9 +++++++++ 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 test cases/vala/12 custom output/foo.vala create mode 100644 test cases/vala/12 custom output/meson.build diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index fa537adca..6c99fb12d 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -992,11 +992,11 @@ int dummy; # Library name args += ['--library=' + target.name] # Outputted header - hname = os.path.join(self.get_target_dir(target), target.name + '.h') + hname = os.path.join(self.get_target_dir(target), target.vala_header if isinstance(target.vala_header, str) else (target.name + '.h')) args += ['-H', hname] valac_outputs.append(hname) # Outputted vapi file - base_vapi = target.name + '.vapi' + base_vapi = target.vala_vapi if isinstance(target.vala_vapi, str) else (target.name + '.vapi') vapiname = os.path.join(self.get_target_dir(target), base_vapi) # Force valac to write the vapi file in the target build dir. # Without this, it will write it inside c_out_dir diff --git a/mesonbuild/build.py b/mesonbuild/build.py index e16f1183c..75766fdff 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -55,6 +55,8 @@ known_lib_kwargs.update({'version' : True, # Only for shared libs 'name_prefix' : True, 'name_suffix' : True, 'vs_module_defs' : True, # Only for shared libs + 'vala_header': True, + 'vala_vapi': True, 'pic' : True, # Only for static libs }) @@ -449,6 +451,9 @@ class BuildTarget(): if not isinstance(valalist, list): valalist = [valalist] self.add_compiler_args('vala', valalist) + if not isinstance(self, Executable): + self.vala_header = kwargs.get('vala_header', None) + self.vala_vapi = kwargs.get('vala_vapi', None) dlist = stringlistify(kwargs.get('d_args', [])) self.add_compiler_args('d', dlist) self.link_args = kwargs.get('link_args', []) diff --git a/test cases/vala/12 custom output/foo.vala b/test cases/vala/12 custom output/foo.vala new file mode 100644 index 000000000..e69de29bb diff --git a/test cases/vala/12 custom output/meson.build b/test cases/vala/12 custom output/meson.build new file mode 100644 index 000000000..ef6dbb54d --- /dev/null +++ b/test cases/vala/12 custom output/meson.build @@ -0,0 +1,9 @@ +project('valatest', 'c', 'vala') + +glib = dependency('glib-2.0') +gobject = dependency('gobject-2.0') + +library('foo-1.0', 'foo.vala', + vala_header: 'foo.h', + vala_vapi: 'foo.vapi', + dependencies: [glib, gobject]) -- cgit v1.2.3 From 114b5b063792753f8bc0648368a0bdcc040f2d81 Mon Sep 17 00:00:00 2001 From: Guillaume Poirier-Morency Date: Mon, 24 Oct 2016 17:05:35 -0400 Subject: vala: Use 'vala_header' and 'vala_vapi' directly Move the fallback logic into 'BuildTarget.process_kwargs' to use the target name instead. --- mesonbuild/backend/ninjabackend.py | 7 +++---- mesonbuild/build.py | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 6c99fb12d..92503dbf4 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -992,15 +992,14 @@ int dummy; # Library name args += ['--library=' + target.name] # Outputted header - hname = os.path.join(self.get_target_dir(target), target.vala_header if isinstance(target.vala_header, str) else (target.name + '.h')) + hname = os.path.join(self.get_target_dir(target), target.vala_header) args += ['-H', hname] valac_outputs.append(hname) # Outputted vapi file - base_vapi = target.vala_vapi if isinstance(target.vala_vapi, str) else (target.name + '.vapi') - vapiname = os.path.join(self.get_target_dir(target), base_vapi) + vapiname = os.path.join(self.get_target_dir(target), target.vala_vapi) # Force valac to write the vapi file in the target build dir. # Without this, it will write it inside c_out_dir - args += ['--vapi=../' + base_vapi] + args += ['--vapi=../' + target.vala_vapi] valac_outputs.append(vapiname) if self.environment.coredata.get_builtin_option('werror'): args += valac.get_werror_args() diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 75766fdff..036216376 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -452,8 +452,8 @@ class BuildTarget(): valalist = [valalist] self.add_compiler_args('vala', valalist) if not isinstance(self, Executable): - self.vala_header = kwargs.get('vala_header', None) - self.vala_vapi = kwargs.get('vala_vapi', None) + self.vala_header = kwargs.get('vala_header', self.name + '.h') + self.vala_vapi = kwargs.get('vala_vapi', self.name + '.vapi') dlist = stringlistify(kwargs.get('d_args', [])) self.add_compiler_args('d', dlist) self.link_args = kwargs.get('link_args', []) -- cgit v1.2.3 From 66518d4dadef7bdb09bf1dc80682e1f9d33f1a1b Mon Sep 17 00:00:00 2001 From: Guillaume Poirier-Morency Date: Tue, 25 Oct 2016 10:57:40 -0400 Subject: vala: Use a portable path join for the VAPI --- mesonbuild/backend/ninjabackend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 92503dbf4..b1c996908 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -999,7 +999,7 @@ int dummy; vapiname = os.path.join(self.get_target_dir(target), target.vala_vapi) # Force valac to write the vapi file in the target build dir. # Without this, it will write it inside c_out_dir - args += ['--vapi=../' + target.vala_vapi] + args += ['--vapi', os.path.join('..', target.vala_vapi)] valac_outputs.append(vapiname) if self.environment.coredata.get_builtin_option('werror'): args += valac.get_werror_args() -- cgit v1.2.3