Make cross-compilation scripts work from MSYS2
This is weird and runs very slowly. Meson can also find libraries outside the subroot, in particular the fast float plugin.
This commit is contained in:
		
							
								
								
									
										76
									
								
								msys2-install.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										76
									
								
								msys2-install.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
#!/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
 | 
			
		||||
		Reference in New Issue
	
	Block a user