forked from System233/ffmpeg-msvc-prebuilt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-ffmpeg.sh
More file actions
executable file
·66 lines (53 loc) · 2.64 KB
/
build-ffmpeg.sh
File metadata and controls
executable file
·66 lines (53 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
# Copyright (c) 2024 System233
# Copyright (c) 2025 seydx
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
set -e
echo -e "\n[Build $1]"
SRC_DIR=$(pwd)/$1
shift 1
cd $SRC_DIR
TYPE_ARGS="--enable-static --pkg-config-flags=--static"
if [ "$BUILD_ARCH" == "arm64" ]; then
CROSS_ARGS="--enable-cross-compile --disable-asm"
fi
LICENSE_ARGS="--enable-gpl --enable-version3"
# Disable programs and features we don't need (same as Jellyfin)
DISABLE_ARGS="--disable-ffplay --disable-debug --disable-doc --disable-sdl2"
CFLAGS="$CFLAGS -I${SRC_DIR}/compat/stdbit"
# Add LZMA_API_STATIC for static linking with liblzma
CFLAGS="$CFLAGS -DLZMA_API_STATIC"
# Add library paths for MSVC
EXTRA_CFLAGS=""
EXTRA_LDFLAGS="-LIBPATH:D:/a/_temp/msys64/usr/local/lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib /NODEFAULTLIB:msvcprt.lib /NODEFAULTLIB:msvcprtd.lib /NODEFAULTLIB:vcruntime.lib /NODEFAULTLIB:vcruntimed.lib /NODEFAULTLIB:ucrt.lib /NODEFAULTLIB:ucrtd.lib"
EXTRA_LIBS="libcmt.lib libvcruntime.lib libucrt.lib"
EX_BUILD_ARGS="$TYPE_ARGS $CROSS_ARGS $LICENSE_ARGS $DISABLE_ARGS"
# Note: Vulkan headers and library come from Vulkan-Shim-Loader in /usr/local
# (already in EXTRA_CFLAGS and EXTRA_LDFLAGS via default paths)
if [ "$BUILD_ARCH" != "arm64" ] && [ "$BUILD_ARCH" != "arm" ] && [ -n "$CUDA_PATH" ] && [ -f "$CUDA_PATH/bin/nvcc.exe" ]; then
CUDA_PATH_SHORT=$(cygpath -sw "$CUDA_PATH")
CUDA_PATH_FIXED=$(cygpath -m "$CUDA_PATH_SHORT")
EXTRA_CFLAGS="$EXTRA_CFLAGS -I${CUDA_PATH_FIXED}/include"
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -LIBPATH:${CUDA_PATH_FIXED}/lib/x64"
NVCC_FLAGS="-gencode arch=compute_61,code=compute_61 -O2"
echo "Configure command: ./configure --toolchain=msvc --arch=$BUILD_ARCH --extra-cflags=\"$EXTRA_CFLAGS\" --extra-ldflags=\"$EXTRA_LDFLAGS\" --extra-libs=\"$EXTRA_LIBS\" --nvccflags=\"$NVCC_FLAGS\" $EX_BUILD_ARGS $@"
echo "CFLAGS: $CFLAGS"
CFLAGS="$CFLAGS" ./configure --toolchain=msvc --arch=$BUILD_ARCH \
--extra-cflags="$EXTRA_CFLAGS" \
--extra-ldflags="$EXTRA_LDFLAGS" \
--extra-libs="$EXTRA_LIBS" \
--nvccflags="$NVCC_FLAGS" \
$EX_BUILD_ARGS $@
else
echo "Configure command: ./configure --toolchain=msvc --arch=$BUILD_ARCH --extra-cflags=\"$EXTRA_CFLAGS\" --extra-ldflags=\"$EXTRA_LDFLAGS\" --extra-libs=\"$EXTRA_LIBS\" $EX_BUILD_ARGS $@"
echo "CFLAGS: $CFLAGS"
CFLAGS="$CFLAGS" ./configure --toolchain=msvc --arch=$BUILD_ARCH \
--extra-cflags="$EXTRA_CFLAGS" \
--extra-ldflags="$EXTRA_LDFLAGS" \
--extra-libs="$EXTRA_LIBS" \
$EX_BUILD_ARGS $@
fi
make -j$(nproc)
make install prefix=$INSTALL_PREFIX