+ case "${system_name}" in
+ 'linux'|'freebsd')
+ ldd "${exe_file}"
+ ;;
+ 'windows')
+ ntldd --recursive "${exe_file}"
+ ;;
+ 'macos')
+ otool -L "${exe_file}"
+ esac
+}
+
+Multi::getGtkThemeName () {
+ case "${system_name}" in
+ 'linux'|'freebsd')
+ echo 'Adwaita'
+ ;;
+ 'windows')
+ echo 'MS-Windows'
+ ;;
+ *)
+ echo 'Raleigh'
+ ;;
+ esac
+}
+
+Multi::getGtkLibName () {
+ case "${system_name}" in
+ 'linux'|'freebsd')
+ echo 'libgtk-x11-2.0.so.0'
+ ;;
+ 'windows')
+ echo 'libgtk-win32-2.0-0.dll'
+ ;;
+ 'macos')
+ echo 'libgtk-quartz-2.0.0.dylib'
+ ;;
+ esac
+}
+
+Multi::getRootPrefix () {
+ local lib_file="${1}"
+
+ case "${system_name}" in
+ 'linux'|'freebsd')
+ echo "${lib_file}" \
+ | cut -f2 -d'/'
+ ;;
+ 'windows')
+ basename "${lib_file}" \
+ | xargs -n1 -P1 which \
+ | cut -f2 -d'/'
+ ;;
+ 'macos')
+ echo 'usr/local'
+ esac
+}
+
+Multi::getLibPrefix () {
+ local lib_file="${1}"
+
+ case "${system_name}" in
+ 'linux'|'freebsd')
+ dirname "${lib_file}" \
+ | cut -f3- -d'/'
+ ;;
+ 'windows')
+ echo 'lib'
+ ;;
+ 'macos')
+ echo 'lib'
+ ;;
+ esac
+}
+
+Multi::getGtkDeps () {
+ local lib_prefix="${1}"
+ local gtk_theme_name="${2}"
+
+ case "${system_name}" in
+ 'linux'|'freebsd'|'windows')
+ cat <<-EOF
+ share/themes/${gtk_theme_name}/gtk-2.0
+ share/icons/hicolor
+ ${lib_prefix}/gdk-pixbuf-2.0
+ ${lib_prefix}/gtk-2.0
+ EOF
+ ;;
+ 'macos')
+ cat <<-EOF
+ etc/fonts
+ share/themes/${gtk_theme_name}/gtk-2.0
+ share/fontconfig
+ share/icons/hicolor
+ share/locale
+ ${lib_prefix}/gdk-pixbuf-2.0
+ ${lib_prefix}/gtk-2.0
+ EOF
+ ;;
+ esac
+
+ case "${system_name}" in
+ 'linux'|'freebsd')
+ cat <<-EOF
+ ${lib_prefix}/libatk-bridge-2.0.so.0
+ ${lib_prefix}/libcanberra-0.30
+ ${lib_prefix}/libcanberra.so.0
+ ${lib_prefix}/libcanberra-gtk.so.0
+ EOF
+ ;;
+ esac
+}
+
+Multi::rewriteLoadersCache () {
+ local bundle_component_path="${1}"
+ local cache_file
+
+ find "${bundle_component_path}" \
+ -type f \
+ \( \
+ -name 'loaders.cache' \
+ -o -name 'immodules.cache' \
+ \) \
+ | while read cache_file
+ do
+ _sed \
+ -e 's|^"/[^"]*/lib/|"lib/|;s| "/[^"]*/share/| "share/|;/^# ModulesPath = /d;/^# Created by /d;/^#$/d' \
+ -i "${cache_file}"
+ done
+}
+
+Multi::bundleGtkDepsFromFile () {
+ local lib_file="${1}"
+ local component_dir
+ local real_component_dir
+ local bundle_component_dir