Přemysl Eric Janouch
86622e0c31
This is weird and runs very slowly. Meson can also find libraries outside the subroot, in particular the fast float plugin.
77 lines
2.4 KiB
Bash
Executable File
77 lines
2.4 KiB
Bash
Executable File
#!/bin/sh -e
|
|
export LC_ALL=C
|
|
cd "$MESON_INSTALL_DESTDIR_PREFIX"
|
|
msys2_root=$1
|
|
|
|
# Support running directly from within MSYS2 on Windows.
|
|
if [ -n "$MSYSTEM" ]
|
|
then
|
|
wine64() { "$@"; }
|
|
awk() { command awk -v RS='\r?\n' "$@"; }
|
|
fi
|
|
|
|
# Copy binaries we directly or indirectly depend on.
|
|
cp -p "$msys2_root"/bin/*.dll .
|
|
cp -p "$msys2_root"/bin/wperl.exe .
|
|
cp -p "$msys2_root"/bin/exiftool .
|
|
# The console helper is only useful for debug builds.
|
|
cp -p "$msys2_root"/bin/gspawn-*-helper*.exe .
|
|
cp -pR "$msys2_root"/etc/ .
|
|
|
|
mkdir -p lib
|
|
cp -pR "$msys2_root"/lib/gdk-pixbuf-2.0/ lib
|
|
cp -pR "$msys2_root"/lib/perl5/ lib
|
|
mkdir -p share/glib-2.0/schemas
|
|
cp -pR "$msys2_root"/share/glib-2.0/schemas/*.Settings.* share/glib-2.0/schemas
|
|
mkdir -p share
|
|
cp -pR "$msys2_root"/share/mime/ share
|
|
mkdir -p share/icons
|
|
cp -pR "$msys2_root"/share/icons/Adwaita/ share/icons
|
|
mkdir -p share/icons/hicolor
|
|
cp -p "$msys2_root"/share/icons/hicolor/index.theme share/icons/hicolor
|
|
|
|
# Remove unreferenced libraries.
|
|
find lib -name '*.a' -exec rm -- {} +
|
|
awk 'function whitelist(binary) {
|
|
if (seen[binary]++)
|
|
return
|
|
|
|
delete orphans[binary]
|
|
while (("strings -a \"" binary "\" 2>/dev/null" | getline string) > 0)
|
|
if (match(string, /[-.+_a-zA-Z0-9]+[.][Dd][Ll][Ll]$/))
|
|
whitelist("./" substr(string, RSTART, RLENGTH))
|
|
} BEGIN {
|
|
while (("find . -type f -path \"./*.[Dd][Ll][Ll]\"" | getline) > 0)
|
|
orphans[$0]++
|
|
while (("find . -type f -path \"./*.[Ee][Xx][Ee]\"" | getline) > 0)
|
|
whitelist($0)
|
|
while (("find ./lib -type f -path \"./*.[Dd][Ll][Ll]\"" | getline) > 0)
|
|
whitelist($0)
|
|
for (library in orphans)
|
|
print library
|
|
}' | xargs rm --
|
|
|
|
# Removes unused icons from the Adwaita theme. It could be even more aggressive,
|
|
# since it keeps around lots of sizes and all the GTK+ stock icons.
|
|
find share/icons/Adwaita -type f | awk 'BEGIN {
|
|
while (("grep -aho \"[a-z][a-z-]*\" *.dll *.exe" | getline) > 0)
|
|
good[$0] = 1
|
|
} /[.](png|svg|cur|ani)$/ {
|
|
# Cut out the basename without extensions.
|
|
match($0, /[^\/]+$/)
|
|
base = substr($0, RSTART)
|
|
sub(/[.].+$/, "", base)
|
|
|
|
# Try matching while cutting off suffixes.
|
|
# Disregarding the not-much-used GTK_ICON_LOOKUP_GENERIC_FALLBACK.
|
|
while (!(keep = good[base]) &&
|
|
sub(/-(ltr|rtl|symbolic)$/, "", base)) {}
|
|
if (!keep)
|
|
print
|
|
}' | xargs rm --
|
|
|
|
wine64 "$msys2_root"/bin/glib-compile-schemas.exe share/glib-2.0/schemas
|
|
|
|
# This may speed up program start-up a little bit.
|
|
wine64 "$msys2_root"/bin/gtk-update-icon-cache-3.0.exe share/icons/Adwaita
|