-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild_msvc.sh
129 lines (104 loc) · 2.59 KB
/
build_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
125
126
127
128
129
#!/bin/sh
arch=x86
archdir=x86
shortarch=x86
clean_build=true
debug=true
dir_suffix="d"
build_suffix="-if"
ffmpeg_dir="src/FFmpeg"
ffmpeg_ver=`head -1 ${ffmpeg_dir}/VERSION`
for opt in "$@"
do
case "$opt" in
x86)
shortarch=x86
;;
x64 | amd64)
arch=x86_64
archdir=x64
shortarch=x64
;;
quick)
clean_build=false
;;
debug)
debug=true
dir_suffix="d"
;;
release)
debug=false
dir_suffix=""
;;
*)
echo "Unknown Option $opt"
exit 1
esac
done
ffmpeg_build_dir=build_FFmpeg_${ffmpeg_ver}_${shortarch}${dir_suffix}
install_dir=install_FFmpeg_${ffmpeg_ver}_${shortarch}${dir_suffix}
echo $ffmpeg_build_dir
sysdir=$(readlink -f sys-${shortarch})
make_build_dir() (
if [ ! -d ${ffmpeg_build_dir} ]; then
mkdir -p "${ffmpeg_build_dir}"
fi
)
clean() (
make distclean > /dev/null 2>&1
)
configure() (
OPTIONS="
--prefix=../${install_dir} \
--toolchain=msvc \
--disable-static \
--enable-shared \
--enable-version3 \
--enable-libmp3lame \
--enable-zlib \
--yasmexe=../tools/yasm-1.3.0-win64.exe \
--build-suffix=${build_suffix} \
--arch=${arch}"
EXTRA_CFLAGS="-D_WIN32_WINNT=0x0502 -DWINVER=0x0502 -I${sysdir}/include"
EXTRA_LDFLAGS="-NODEFAULTLIB:libcmt \
${sysdir}/lib/mp3lame.lib \
-LIBPATH:${sysdir}/lib/"
if $debug ; then
OPTIONS="$OPTIONS --enable-debug --disable-optimizations"
EXTRA_CFLAGS="$EXTRA_CFLAGS -Gy -MDd -Zi -O1 -Oy-"
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -OPT:REF"
else
OPTIONS="$OPTIONS --disable-debug"
fi
sh ../${ffmpeg_dir}/configure ${OPTIONS} --extra-cflags="${EXTRA_CFLAGS}" --extra-ldflags="${EXTRA_LDFLAGS}"
)
build() (
echo Building
make
)
install() (
echo Installing
make install
)
copy_symbols() (
cp lib*/*.pdb ../${install_dir}/bin
)
echo Building ffmpeg using MSVC ...
#make_dirs
make_build_dir
cp misc/makedef ${ffmpeg_build_dir}
cd ${ffmpeg_build_dir}
if $clean_build ; then
#clean
## run configure, redirect to file because of a msys bug
configure > config.out 2>&1
CONFIGRETVAL=$?
## show configure output
cat config.out
fi
## Only if configure succeeded, actually build
if ! $clean_build || [ ${CONFIGRETVAL} -eq 0 ]; then
build &&
install && copy_symbols
fi
cd ..