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.
This commit is contained in:
arch1t3cht 2022-07-04 22:22:01 +02:00
parent 5bde34ff3e
commit 142605cf41
2 changed files with 19 additions and 9 deletions

View File

@ -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')

View File

@ -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)