From 5827e47b7466ea4845f64dea0f6deb9c499cd72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Thu, 14 Mar 2024 15:07:02 +0100 Subject: [PATCH] meson: Omit .vapi from publicly visible dependency So that consuming projects don't need a Vala compiler to use us as a subproject. --- src/api/generate.py | 8 ++++++-- src/api/meson.build | 12 +++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/api/generate.py b/src/api/generate.py index 46de36cf2..0afc18e11 100755 --- a/src/api/generate.py +++ b/src/api/generate.py @@ -9,7 +9,7 @@ def main(): parser = argparse.ArgumentParser(description="Generate refined Frida API definitions") - parser.add_argument('--output', dest='output_type', choices=['bundle', 'header', 'vapi'], default='bundle') + parser.add_argument('--output', dest='output_type', choices=['bundle', 'header', 'vapi', 'vapi-stamp'], default='bundle') parser.add_argument('api_version', metavar='api-version', type=str) parser.add_argument('core_vapi', metavar='/path/to/frida-core.vapi', type=argparse.FileType('r', encoding='utf-8')) parser.add_argument('core_header', metavar='/path/to/frida-core.h', type=argparse.FileType('r', encoding='utf-8')) @@ -19,6 +19,7 @@ def main(): args = parser.parse_args() + output_type = args.output_type api_version = args.api_version core_vapi = args.core_vapi.read() core_header = args.core_header.read() @@ -26,6 +27,10 @@ def main(): base_header = args.base_header.read() output_dir = Path(args.output_dir) + if output_type == 'vapi-stamp': + (output_dir / f"frida-core-{api_version}.vapi.stamp").write_bytes(b"") + return + toplevel_names = [ "frida.vala", "control-service.vala", @@ -42,7 +47,6 @@ def main(): enable_header = False enable_vapi = False - output_type = args.output_type if output_type == 'bundle': enable_header = True enable_vapi = True diff --git a/src/api/meson.build b/src/api/meson.build index 92e55bd1c..ea0bb8e6a 100644 --- a/src/api/meson.build +++ b/src/api/meson.build @@ -36,6 +36,16 @@ core_public_vapi = custom_target('frida-core-vapi', install_dir: get_option('datadir') / 'vala' / 'vapi', ) +core_public_vapi_stamp = custom_target('frida-core-vapi-stamp', + input: core_public_vapi, + output: f'frida-core-@api_version@.vapi.stamp', + command: [ + generate_api, + '--output=vapi-stamp', + generate_api_args, + ], +) + core_public_lib = custom_target('frida-core-library', input: [core] + internal_libs, output: f'libfrida-core-@api_version@.a', @@ -61,7 +71,7 @@ if host_os == 'android' endif core_public_dep = declare_dependency( - sources: [core_public_h, core_public_vapi] + core_public_extra_headers, + sources: [core_public_h, core_public_vapi_stamp, core_public_extra_headers], include_directories: include_directories('.'), link_args: backend_libs_private, link_with: core_public_lib,