On 04/02/21 16:42, Peter Maydell wrote:
On Thu, 4 Feb 2021 at 15:39, Programmingkid <[email protected]> wrote:



On Feb 4, 2021, at 3:54 AM, Paolo Bonzini <[email protected]> wrote:

On 02/02/21 14:44, John Arbuckle wrote:
Before switching the build system over to Meson, an icon was
added to the QEMU binary on Mac OS. This patch adds back that
feature.
Signed-off-by: John Arbuckle <[email protected]>
---
  meson.build | 20 ++++++++++++++++++++
  1 file changed, 20 insertions(+)
diff --git a/meson.build b/meson.build
index f00b7754fd..7f534f4e75 100644
--- a/meson.build
+++ b/meson.build
@@ -2183,6 +2183,26 @@ foreach target : target_dirs
                 link_args: link_args,
                 gui_app: exe['gui'])
  +# set QEMU's icon on Mac OS
+if targetos == 'darwin'
+    newiconpart1 = custom_target('Icon for ' + exe_name + ' - part 1',
+          depends : emulator,
+          input : emulator,
+          output : 'new icon for ' + exe_name + ' - 1',
+          command : ['Rez', '-append',
+           meson.source_root() + '/pc-bios/qemu.rsrc', '-o',
+           meson.current_build_dir() / exe['name']],
+          build_by_default : true)
+
+    custom_target('Icon for ' + exe_name + ' - part 2',
+          depends : newiconpart1,
+          input : emulator,
+          output : 'new icon for ' + exe_name + ' - 2',
+          command : ['SetFile', '-a', 'C',
+           meson.current_build_dir() / exe['name']],
+          build_by_default : true)
+endif
+
      if exe_sign
        emulators += {exe['name'] : custom_target(exe['name'],
                     install: true,

Maybe you can do it on install, using add_install_script instead?

Why would we want to only do it on install? A QEMU which
you run from the build tree ought to still have its icon,
surely ?

Mostly because edit-in-place commands are not very well suited to a "make" workflow, while they're common at install time (e.g. strip).

But since we already have scripts/entitlement.sh, and it's only Apple that like in-place build steps it is even better to combine all the in-place adjustment to the executable in scripts/entitlement.sh. For example if no entitlements are needed, you pass an empty third argument and scripts/entitlement.sh (now scripts/postprocess-darwin-executable.sh or something like that?) can do Rez+SetFile but not codesign. The existing "if exe_sign" becomes an "if targetos == 'darwin'".

Paolo


Reply via email to