+abidiff = find_program('abidiff', native: false, required: false)
+abidw = find_program('abidw', native: false, required: false)
+
+abidw_flags = [
+ '--drop-undefined-syms',
+ '--no-architecture',
+ '--no-comp-dir-path',
+ '--no-elf-needed',
+ '--no-show-locs',
+ '--type-id-style', 'hash',
+]
+abidw_cmd = [abidw, abidw_flags, '--out-file', '@OUTPUT@', '@INPUT@']
It would make sense to me to mark abidiff and abidw as disabler: true.
+if abidw.found()
+ libpq_abi = custom_target('libpq.abi.xml',
+ input: libpq_so,
+ output: 'libpq.abi.xml',
+ command: abidw_cmd,
+ build_by_default: true)
+endif
+
+if abidiff.found()
+ test('libpq.abidiff',
+ abidiff,
+ args: [files('libpq.base.abi.xml'), libpq_abi],
+ suite: 'abidiff',
+ verbose: true)
+endif
With disabler: true, you can drop the conditionals. Disablers tell Meson
to disable parts of the build[0].
I also don't think it makes sense to mark the custom_targets as
build_by_default: true, unless you see value in that. I would just have
them built when the test is ran.
However, it might make sense to create an alias_target of all the ABI
XML files for people that want to interact with the files outside of the
tests for whatever reason.
[0]: https://mesonbuild.com/Reference-manual_returned_disabler.html
--
Tristan Partin
Neon (https://neon.tech)