|
|
|
@ -53,31 +53,41 @@ else |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
# Резолвим НЕ-Qt зависимости (FFmpeg, mingw-runtime) всегда: windeployqt копирует только Qt. |
|
|
|
# Резолвим НЕ-Qt зависимости (FFmpeg, mingw-runtime) всегда: windeployqt копирует только Qt. |
|
|
|
|
|
|
|
# FFmpeg ищем ПЕРВЫМ в $FFMPEG_BIN: exe линкован именно под кастомный билд, |
|
|
|
|
|
|
|
# а pacman-ffmpeg той же мажорной версии в /ucrt64/bin дал бы неверный набор кодеков. |
|
|
|
FFMPEG_BIN="$SRC_DIR/ffmpeg/ffmpeg_build/install/bin" |
|
|
|
FFMPEG_BIN="$SRC_DIR/ffmpeg/ffmpeg_build/install/bin" |
|
|
|
|
|
|
|
OBJDUMP="objdump"; [ -n "${MSYSTEM_PREFIX:-}" ] && OBJDUMP="$MSYSTEM_PREFIX/bin/objdump" |
|
|
|
|
|
|
|
shopt -s nocasematch |
|
|
|
log " Resolving non-Qt dependencies recursively..." |
|
|
|
log " Resolving non-Qt dependencies recursively..." |
|
|
|
todo="$BUILD_DIR/vibechat.exe" |
|
|
|
todo="$BUILD_DIR/vibechat.exe" |
|
|
|
while [ -n "$todo" ]; do |
|
|
|
while [ -n "$todo" ]; do |
|
|
|
next_todo="" |
|
|
|
next_todo="" |
|
|
|
for src in $todo; do |
|
|
|
for src in $todo; do |
|
|
|
for dep in $(objdump -p "$src" 2>/dev/null | grep "DLL Name:" | awk '{print $3}'); do |
|
|
|
for dep in $($OBJDUMP -p "$src" 2>/dev/null | grep "DLL Name:" | awk '{print $3}'); do |
|
|
|
case "$dep" in |
|
|
|
case "$dep" in |
|
|
|
KERNEL32.dll|msvcrt.dll|USER32.dll|GDI32.dll|SHELL32.dll|ADVAPI32.dll|\ |
|
|
|
kernel32.dll|msvcrt.dll|msvcp140.dll|vcruntime140.dll|ucrtbase.dll|\ |
|
|
|
WS2_32.dll|ole32.dll|OLEAUT32.dll|IPHLPAPI.DLL|BCRYPT.dll|dbghelp.dll|\ |
|
|
|
user32.dll|gdi32.dll|gdi32full.dll|shell32.dll|shlwapi.dll|advapi32.dll|\ |
|
|
|
api-ms-win-*) |
|
|
|
ole32.dll|oleaut32.dll|comdlg32.dll|comctl32.dll|ws2_32.dll|wsock32.dll|\ |
|
|
|
|
|
|
|
iphlpapi.dll|netapi32.dll|dnsapi.dll|winmm.dll|imm32.dll|version.dll|\ |
|
|
|
|
|
|
|
setupapi.dll|crypt32.dll|bcrypt.dll|ncrypt.dll|dbghelp.dll|kernelbase.dll|\ |
|
|
|
|
|
|
|
rpcrt4.dll|psapi.dll|powrprof.dll|cfgmgr32.dll|userenv.dll|secur32.dll|\ |
|
|
|
|
|
|
|
uxtheme.dll|dwmapi.dll|d3d11.dll|dxgi.dll|opengl32.dll|glu32.dll|\ |
|
|
|
|
|
|
|
wtsapi32.dll|mpr.dll|api-ms-win-*) |
|
|
|
continue ;; |
|
|
|
continue ;; |
|
|
|
esac |
|
|
|
esac |
|
|
|
[ -f "$BUILD_DIR/$dep" ] && continue |
|
|
|
[ -f "$BUILD_DIR/$dep" ] && continue |
|
|
|
if cp "/ucrt64/bin/$dep" "$BUILD_DIR/" 2>/dev/null; then |
|
|
|
if [ -d "$FFMPEG_BIN" ] && cp "$FFMPEG_BIN/$dep" "$BUILD_DIR/" 2>/dev/null; then |
|
|
|
|
|
|
|
log " OK: $dep (ffmpeg)"; next_todo="$next_todo $BUILD_DIR/$dep" |
|
|
|
|
|
|
|
elif cp "/ucrt64/bin/$dep" "$BUILD_DIR/" 2>/dev/null; then |
|
|
|
log " OK: $dep"; next_todo="$next_todo $BUILD_DIR/$dep" |
|
|
|
log " OK: $dep"; next_todo="$next_todo $BUILD_DIR/$dep" |
|
|
|
elif cp "/mingw64/bin/$dep" "$BUILD_DIR/" 2>/dev/null; then |
|
|
|
elif cp "/mingw64/bin/$dep" "$BUILD_DIR/" 2>/dev/null; then |
|
|
|
log " OK: $dep (mingw64)"; next_todo="$next_todo $BUILD_DIR/$dep" |
|
|
|
log " OK: $dep (mingw64)"; next_todo="$next_todo $BUILD_DIR/$dep" |
|
|
|
elif [ -d "$FFMPEG_BIN" ] && cp "$FFMPEG_BIN/$dep" "$BUILD_DIR/" 2>/dev/null; then |
|
|
|
|
|
|
|
log " OK: $dep (ffmpeg)"; next_todo="$next_todo $BUILD_DIR/$dep" |
|
|
|
|
|
|
|
fi |
|
|
|
fi |
|
|
|
done |
|
|
|
done |
|
|
|
done |
|
|
|
done |
|
|
|
todo="$next_todo" |
|
|
|
todo="$next_todo" |
|
|
|
done |
|
|
|
done |
|
|
|
|
|
|
|
shopt -u nocasematch |
|
|
|
# Qt platform plugin (loaded dynamically, not in import table) |
|
|
|
# Qt platform plugin (loaded dynamically, not in import table) |
|
|
|
mkdir -p "$BUILD_DIR/platforms" |
|
|
|
mkdir -p "$BUILD_DIR/platforms" |
|
|
|
for d in /ucrt64/share/qt5/plugins /ucrt64/lib/qt5/plugins; do |
|
|
|
for d in /ucrt64/share/qt5/plugins /ucrt64/lib/qt5/plugins; do |
|
|
|
@ -86,6 +96,29 @@ done |
|
|
|
cp "$SRC_DIR/rlottie_build/librlottie.dll" "$BUILD_DIR/" 2>/dev/null && log " OK: librlottie.dll" || log " WARN: librlottie.dll not found" |
|
|
|
cp "$SRC_DIR/rlottie_build/librlottie.dll" "$BUILD_DIR/" 2>/dev/null && log " OK: librlottie.dll" || log " WARN: librlottie.dll not found" |
|
|
|
cp "$SRC_DIR/setup_firewall.bat" "$BUILD_DIR/" 2>/dev/null && log " OK: setup_firewall.bat" || log " WARN: setup_firewall.bat not found" |
|
|
|
cp "$SRC_DIR/setup_firewall.bat" "$BUILD_DIR/" 2>/dev/null && log " OK: setup_firewall.bat" || log " WARN: setup_firewall.bat not found" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Проверяем, что все ожидаемые не-Qt DLL на месте (FFmpeg + mingw-runtime + rlottie + zlib + OpenSSL) |
|
|
|
|
|
|
|
log " Verifying required non-Qt DLLs..." |
|
|
|
|
|
|
|
MISSING=0 |
|
|
|
|
|
|
|
if [ -d "$FFMPEG_BIN" ]; then |
|
|
|
|
|
|
|
for d in avcodec-*.dll avformat-*.dll avutil-*.dll swscale-*.dll swresample-*.dll; do |
|
|
|
|
|
|
|
if ls "$BUILD_DIR/$d" >/dev/null 2>&1; then |
|
|
|
|
|
|
|
log " OK: $d" |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
log " WARN: $d MISSING in build dir"; MISSING=1 |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
done |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
log " SKIP: FFmpeg not built — no FFmpeg DLLs expected" |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
for d in libstdc++-6.dll libgcc_s_*.dll libwinpthread-1.dll librlottie.dll zlib1.dll libcrypto-*.dll; do |
|
|
|
|
|
|
|
if ls "$BUILD_DIR/$d" >/dev/null 2>&1; then |
|
|
|
|
|
|
|
log " OK: $d" |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
log " WARN: $d MISSING in build dir"; MISSING=1 |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
done |
|
|
|
|
|
|
|
[ "$MISSING" -eq 1 ] && log " WARN: some required non-Qt DLLs missing — app may not start" |
|
|
|
|
|
|
|
|
|
|
|
log "" |
|
|
|
log "" |
|
|
|
log "[4/4] Verifying..." |
|
|
|
log "[4/4] Verifying..." |
|
|
|
EXE="$BUILD_DIR/vibechat.exe" |
|
|
|
EXE="$BUILD_DIR/vibechat.exe" |
|
|
|
|