forked from mpc-hc/LAVFilters
-
Notifications
You must be signed in to change notification settings - Fork 1
/
build_ffmpeg_msvc.sh
124 lines (106 loc) · 2.9 KB
/
build_ffmpeg_msvc.sh
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/bin/sh
arch=x86
archdir=Win32
archincdir=32
clean_build=true
debug=true
for opt in "$@"
do
case "$opt" in
x86)
;;
x64 | amd64)
arch=x86_64
archdir=x64
archincdir=64
;;
quick)
clean_build=false
;;
release)
debug=false
;;
*)
echo "Unknown Option $opt"
exit 1
esac
done
make_dirs() (
mkdir -p bin_${archdir}d/lib
mkdir -p bin_${archdir}/lib
)
copy_libs() (
if $debug ; then
cp -u lib*/*-lav-*.dll ../bin_${archdir}d
cp -u lib*/*-lav-*.pdb ../bin_${archdir}d
cp -u lib*/*.lib ../bin_${archdir}d/lib
else
cp -u lib*/*-lav-*.dll ../bin_${archdir}
cp -u lib*/*-lav-*.pdb ../bin_${archdir}
cp -u lib*/*.lib ../bin_${archdir}/lib
fi
)
clean() (
make distclean > /dev/null 2>&1
)
configure() (
OPTIONS="
--enable-shared \
--disable-static \
--enable-gpl \
--enable-version3 \
--disable-autodetect \
--enable-w32threads \
--disable-demuxer=matroska \
--disable-filters \
--enable-filter=scale,yadif,w3fdif,bwdif \
--disable-protocol=async,cache,concat,httpproxy,icecast,md5,subfile \
--disable-muxers \
--enable-muxer=spdif \
--disable-bsfs \
--enable-bsf=extract_extradata,vp9_superframe_split \
--disable-avdevice \
--disable-postproc \
--disable-encoders \
--disable-devices \
--disable-programs \
--disable-doc \
--enable-avisynth \
--enable-d3d11va \
--enable-dxva2 \
--enable-schannel \
--enable-zlib \
--build-suffix=-lav \
--arch=${arch}"
EXTRA_CFLAGS="-D_WIN32_WINNT=0x0600 -DWINVER=0x0600 -Zo -GS- -I../thirdparty/$archincdir/include/"
EXTRA_LDFLAGS=""
if $debug ; then
OPTIONS="${OPTIONS} --enable-debug"
EXTRA_CFLAGS="${EXTRA_CFLAGS} -MDd"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -NODEFAULTLIB:libcmt"
else
EXTRA_CFLAGS="${EXTRA_CFLAGS} -MD"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -NODEFAULTLIB:libcmt"
fi
sh configure --toolchain=msvc --x86asmexe=yasm --extra-cflags="${EXTRA_CFLAGS}" --extra-ldflags="${EXTRA_LDFLAGS}" ${OPTIONS}
)
build() (
make -j$NUMBER_OF_PROCESSORS
)
echo Building ffmpeg in MSVC Debug config...
make_dirs
cd ffmpeg
if $clean_build ; then
clean
## run configure, redirect to file because of a msys bug
configure > ffbuild/config.out 2>&1
CONFIGRETVAL=$?
## show configure output
cat ffbuild/config.out
fi
## Only if configure succeeded, actually build
if ! $clean_build || [ ${CONFIGRETVAL} -eq 0 ]; then
build &&
copy_libs
fi
cd ..