diff --git a/tools/chatgui/build.sh b/tools/chatgui/build.sh index cd195e15..4239febd 100755 --- a/tools/chatgui/build.sh +++ b/tools/chatgui/build.sh @@ -42,11 +42,10 @@ if [ -x "$WINDEPLOYQT" ]; then else log " WARN: $WINDEPLOYQT not found (install: pacman -S mingw-w64-ucrt-x86_64-qt5-tools)" log " Resolving dependencies recursively..." - changed=1 - while [ $changed -eq 1 ]; do - changed=0 - for src in "$BUILD_DIR"/chatgui.exe "$BUILD_DIR"/*.dll; do - [ -f "$src" ] || continue + todo="$BUILD_DIR/chatgui.exe" + while [ -n "$todo" ]; do + next_todo="" + for src in $todo; do for dep in $(objdump -p "$src" 2>/dev/null | grep "DLL Name:" | awk '{print $3}'); do case "$dep" in KERNEL32.dll|msvcrt.dll|USER32.dll|GDI32.dll|SHELL32.dll|ADVAPI32.dll|\ @@ -56,12 +55,13 @@ else esac [ -f "$BUILD_DIR/$dep" ] && continue if cp "/ucrt64/bin/$dep" "$BUILD_DIR/" 2>/dev/null; then - log " OK: $dep"; changed=1 + log " OK: $dep"; next_todo="$next_todo $BUILD_DIR/$dep" elif cp "/mingw64/bin/$dep" "$BUILD_DIR/" 2>/dev/null; then - log " OK: $dep (mingw64)"; changed=1 + log " OK: $dep (mingw64)"; next_todo="$next_todo $BUILD_DIR/$dep" fi done done + todo="$next_todo" done fi cp "$SRC_DIR/rlottie_build/librlottie.dll" "$BUILD_DIR/" 2>/dev/null && log " OK: librlottie.dll" || log " WARN: librlottie.dll not found"