]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - library-bundler
bundle: export gtk theme/engine bundle code to the script
[xonotic/netradiant.git] / library-bundler
1 #! /usr/bin/env bash
2
3 system_name="${1}"
4 exe_file="${2}"
5 bundle_dir="${3}"
6
7 case "${system_name}" in
8         'windows')
9                 bundle_dir="$(cygpath --unix "${bundle_dir}")"
10                 exe_file="$(cygpath --unix "${exe_file}")"
11                 ntldd --recursive "${exe_file}" \
12                 | egrep -i '\.dll => [A-Z]:\\msys64\\' \
13                 | sed -e 's/ (0x[0-9a-f]*)$//;s/^.* => //' \
14                 | cygpath --unix --file - \
15                 | while read dll_file
16                 do
17                         dll_basename="$(basename "${dll_file}")"
18
19                         if [ -f "${bundle_dir}/${dll_basename}" ]
20                         then
21                                 continue
22                         fi
23
24                         cp --preserve=timestamps "${dll_file}" "${bundle_dir}/${dll_basename}"
25
26                         if [ "${dll_basename}" = 'libgtk-win32-2.0-0.dll' ]
27                         then
28                                 mingw="$(which 'libgtk-win32-2.0-0.dll' | cut -f2 -d'/')"
29
30                                 for component_dir in \
31                                         'share/themes/MS-Windows' \
32                                         'lib/gdk-pixbuf-2.0' \
33                                         'lib/gtk-2.0'
34                                 do
35                                         if ! [ -d "${bundle_dir}/${component_dir}" ]
36                                         then
37                                                 mkdir --parents "${bundle_dir}/$(dirname "${component_dir}")"
38                                                 cp -r --preserve=timestamps "/${mingw}/${component_dir}" \
39                                                         "${bundle_dir}/${component_dir}"
40                                         fi
41                                 done
42
43                                 find "${bundle_dir}/lib" -type f -name '*.a' -exec rm {} \;
44                                 find "${bundle_dir}/lib" -type f -name '*.h' -exec rm {} \;
45                                 find "${bundle_dir}/lib" -type d -exec rmdir --ignore-fail-on-non-empty {} \;
46                         fi
47                 done
48                 ;;
49         *)
50                 printf 'ERROR: unsupported system: %s\n' "${system_name}" >&2
51                 exit 1
52                 ;;
53 esac