aboutsummaryrefslogtreecommitdiff
path: root/msys2-cross-install.sh
blob: 7cbc2cca024e64b939ec28cfdb1bc4ada872dfb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/sh -e
export LC_ALL=C
cd "$MESON_INSTALL_DESTDIR_PREFIX"
msys2_root=$1

# 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