From 142605cf4101fd1283cea957aa6b9a72f474f718 Mon Sep 17 00:00:00 2001 From: arch1t3cht Date: Mon, 4 Jul 2022 22:22:01 +0200 Subject: [PATCH] meson: Add files in manifest as respack.py input This makes meson detect changes to files like default_config.json and rebuild libresrc.cpp when necessary. --- meson.build | 2 +- src/libresrc/meson.build | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/meson.build b/meson.build index 433ca01ee..9029f5070 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('Aegisub', ['c', 'cpp'], license: 'BSD-3-Clause', - meson_version: '>=0.56.1', + meson_version: '>=0.57.0', default_options: ['cpp_std=c++14', 'buildtype=debugoptimized'], version: '3.2.2') diff --git a/src/libresrc/meson.build b/src/libresrc/meson.build index d4be467d7..e4589f191 100644 --- a/src/libresrc/meson.build +++ b/src/libresrc/meson.build @@ -1,3 +1,5 @@ +fs = import('fs') + respack = find_program(meson.project_source_root() / 'tools/respack.py') resrc = [ @@ -12,17 +14,25 @@ conf_platform_json = configure_file(input: 'default_config_platform.json.in', configuration: conf_platform) if host_machine.system() == 'darwin' - resrc += custom_target('default_config.{cpp,h}', - command: [respack, '@INPUT0@', '@OUTPUT@'], - input: [files('manifest_osx.respack'), conf_platform_json], - output: ['default_config.cpp', 'default_config.h']) + resmanifest = 'manifest_osx.respack' else - resrc += custom_target('default_config.{cpp,h}', - command: [respack, '@INPUT0@', '@OUTPUT@'], - input: [files('manifest.respack'), conf_platform_json], - output: ['default_config.cpp', 'default_config.h']) + resmanifest = 'manifest.respack' endif +resmanifest_files = [conf_platform_json] +# Filter out the files we've generated ourselves +foreach rfile : fs.read(resmanifest).strip().split('\n') + rfile_s = rfile.strip() + if fs.is_file(rfile_s) + resmanifest_files += files(rfile_s) + endif +endforeach + +resrc += custom_target('default_config.{cpp,h}', + command: [respack, '@INPUT0@', '@OUTPUT@'], + input: [files(resmanifest), resmanifest_files], + output: ['default_config.cpp', 'default_config.h']) + libresrc_inc = include_directories('.') libresrc = static_library('resrc', 'libresrc.cpp', resrc, include_directories: deps_inc, dependencies: deps)