netradiant-custom/install-dlls-msys2-mingw.sh

79 lines
2.0 KiB
Bash

#!/bin/sh
# set -ex
INSTALLDIR=`pwd`/install
if [[ `file $INSTALLDIR/radiant.exe` == *"x86-64"* ]]; then
MINGWDIR=/mingw64
else
MINGWDIR=/mingw32
fi
function dependencies_single_target_no_depth {
local TARGET=$1
local DEPENDENCIESFILTER="| grep -a 'DLL Name' | sed -r 's/\s+DLL\s+Name\:\s+//' | xargs -i{} which {} | grep -a $MINGWDIR/bin"
local COMMAND="objdump -x $TARGET $DEPENDENCIESFILTER | xargs -i{} echo {}"
local DEPENDENCIES=`eval "$COMMAND"`
if [ "$DEPENDENCIES" != "" ]; then
echo "$DEPENDENCIES"
fi
}
function dependencies {
local TARGETS=$@
local TEMPORARYFILEA="install-dlls-msys2-mingw.alldependencies.tmp"
local TEMPORARYFILEB="install-dlls-msys2-mingw.dependencies.tmp"
local ALLDEPENDENCIES=""
for TARGET in $TARGETS; do
local ALLDEPENDENCIES=`dependencies_single_target_no_depth "$TARGET" && echo "$ALLDEPENDENCIES"`
done
local ALLDEPENDENCIES=`echo "$ALLDEPENDENCIES" | sort -u`
local NEWDEPENDENCIES="$ALLDEPENDENCIES"
while [ "$NEWDEPENDENCIES" != "" ]; do
local DEPENDENCIES=""
for DEPENDENCY in $NEWDEPENDENCIES; do
DEPENDENCIES=`dependencies_single_target_no_depth "$DEPENDENCY" && echo "$DEPENDENCIES"`
done
echo "$ALLDEPENDENCIES" > "$TEMPORARYFILEA"
echo "$DEPENDENCIES" | sort -u > "$TEMPORARYFILEB"
local NEWDEPENDENCIES=`comm -13 "$TEMPORARYFILEA" "$TEMPORARYFILEB"`
if [ "$NEWDEPENDENCIES" != "" ]; then
local ALLDEPENDENCIES=`printf '%s\n' "$ALLDEPENDENCIES" "$NEWDEPENDENCIES" | sort`
fi
rm "$TEMPORARYFILEA" "$TEMPORARYFILEB"
done
if [ "$ALLDEPENDENCIES" != "" ]; then
echo "$ALLDEPENDENCIES"
fi
}
for DEPENDENCY in `dependencies ./install/*.exe`; do
cp -v "$DEPENDENCY" "$INSTALLDIR"
done
cd $MINGWDIR
for EXTRAPATH in \
'./share/qt5/plugins/imageformats/*.dll' \
'./share/qt5/plugins/platforms/*.dll' \
'./share/qt5/plugins/styles/*.dll' \
; do
cp --parent -v `find $EXTRAPATH -type f` "$INSTALLDIR"
done