diff --git a/src/meson.build b/src/meson.build index 8b16bf5..b6dd941 100644 --- a/src/meson.build +++ b/src/meson.build @@ -22,24 +22,35 @@ audrey_deps = [ dependency('libsoup-3.0', version: '>= 3.6'), ] -blueprints = custom_target( - 'blueprints', - input: files('ui/play_queue.blp', 'ui/setup.blp', 'ui/window.blp'), - output: ['play_queue.ui', 'setup.ui', 'window.ui'], - command: [ - find_program('blueprint-compiler'), - 'batch-compile', - '@OUTDIR@', - '@CURRENT_SOURCE_DIR@', - '@INPUT@', - ], -) +subdir('ui') audrey_sources += gnome.compile_resources( 'audrey-resources', 'audrey.gresource.xml', c_name: 'audrey', dependencies: blueprints, + # this is a huge hack, as by default only src/ui to the 'blueprints' dep + # and ../src is passed, which means the ui/xyz.ui prefix will not be found + # anywhere, as src/ui already has the ui in the path. + # the reason we have to put blp in its own ui folder, is because: + # - blueprint-compiler batch-compile outputs in the same directory structure, + # i.e. if you pass ui/x.blp outdir foo, it will create foo/ui/x.ui, + # - meson doesn't support output:[] with dir/ prefix + # .. which means, all the files are always dirty; meson will try find 'src/x.ui' + # as an output for dirty tracking, but blp is outputting src/ui/x.ui + # because of the directory structure. + # using manual blueprint-compiler invocations to put the output in the + # 'correct' tracked place doesn't work either, + # since then it will be in this dir and not in ui/ and so all the ui/ prefixes + # in gresources won't find it, and we can't put it in a ui/ output from the + # current dir due to the above and meson not letting you. + #so since we use ui/ prefix, we need a meson.build in ui/ and then this hack + # to ensure compile sees the ui/ prefix starting from this src/ dir still, + # despite the dependency normally doing this for you + # note that the 'documented' way to use blp is with outdir:[.] which is + # fundamentally broken as then nothing is tracked except the dirs existence, which + # is racy as the dependency is satistfied before anything is compiled + extra_args: ['--sourcedir', 'src'], ) executable( diff --git a/src/ui/meson.build b/src/ui/meson.build new file mode 100644 index 0000000..b168e86 --- /dev/null +++ b/src/ui/meson.build @@ -0,0 +1,12 @@ +blueprints = custom_target( + 'blueprints', + input: files('play_queue.blp', 'setup.blp', 'window.blp'), + output: ['play_queue.ui', 'setup.ui', 'window.ui'], + command: [ + find_program('blueprint-compiler'), + 'batch-compile', + '@OUTDIR@', + '@CURRENT_SOURCE_DIR@', + '@INPUT@', + ], +)