Skip to content

Commit

Permalink
Set icon for QEMU binary on Mac OS
Browse files Browse the repository at this point in the history
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; it piggybacks on the existing scripts/entitlement.sh,
which already does in-place changes to the executable on Darwin.

Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
Message-Id: <20210705195328.36442-1-programmingkidx@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
programmingkidx authored and bonzini committed Jul 6, 2021
1 parent 904806c commit 3983a76
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
15 changes: 10 additions & 5 deletions meson.build
Expand Up @@ -2507,8 +2507,7 @@ foreach target : target_dirs
endif
foreach exe: execs
exe_name = exe['name']
exe_sign = 'CONFIG_HVF' in config_target
if exe_sign
if targetos == 'darwin'
exe_name += '-unsigned'
endif

Expand All @@ -2522,22 +2521,28 @@ foreach target : target_dirs
link_args: link_args,
gui_app: exe['gui'])

if exe_sign
if 'CONFIG_HVF' in config_target
entitlements = meson.current_source_dir() / 'accel/hvf/entitlements.plist'
else
entitlements = '/dev/null'
endif
if targetos == 'darwin'
icon = meson.current_source_dir() / 'pc-bios/qemu.rsrc'
emulators += {exe['name'] : custom_target(exe['name'],
depends: emulator,
output: exe['name'],
command: [
meson.current_source_dir() / 'scripts/entitlement.sh',
meson.current_build_dir() / exe_name,
meson.current_build_dir() / exe['name'],
meson.current_source_dir() / 'accel/hvf/entitlements.plist'
entitlements, icon
])
}

meson.add_install_script('scripts/entitlement.sh', '--install',
get_option('bindir') / exe_name,
get_option('bindir') / exe['name'],
meson.current_source_dir() / 'accel/hvf/entitlements.plist')
entitlements, icon)
else
emulators += {exe['name']: emulator}
endif
Expand Down
10 changes: 9 additions & 1 deletion scripts/entitlement.sh
Expand Up @@ -11,6 +11,7 @@ fi
SRC="$1"
DST="$2"
ENTITLEMENT="$3"
ICON="$4"

if $in_place; then
trap 'rm "$DST.tmp"' exit
Expand All @@ -20,6 +21,13 @@ else
cd "$MESON_INSTALL_DESTDIR_PREFIX"
fi

codesign --entitlements "$ENTITLEMENT" --force -s - "$SRC"
if test "$ENTITLEMENT" != '/dev/null'; then
codesign --entitlements "$ENTITLEMENT" --force -s - "$SRC"
fi

# Add the QEMU icon to the binary on Mac OS
Rez -append "$ICON" -o "$SRC"
SetFile -a C "$SRC"

mv -f "$SRC" "$DST"
trap '' exit

0 comments on commit 3983a76

Please sign in to comment.