-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-ffmpeg-msvc.sh
executable file
·50 lines (39 loc) · 1.54 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
#!/bin/sh
set -e
echo "Discovering environment..."
INSTALL_DIR="$(printenv 'ProgramFiles(x86)')/Microsoft Visual Studio/Installer"
DEVENV_DIR="$("$INSTALL_DIR/vswhere" | sed -ne 's/^productPath: //p' | sed 's/.devenv.exe//' | head -n 1)"
CL64_PATH="$(find "$DEVENV_DIR/../.." -name cl.exe | grep 'x64.*/x64/' | sed 's/.cl.exe//')"
CL32_PATH="$(find "$DEVENV_DIR/../.." -name cl.exe | grep 'x86.*/x86/' | sed 's/.cl.exe//')"
T="$HOME/lol/external/ffmpeg-`date +%Y%m%d`"
SAVED_PATH="$PATH"
echo " vswhere dir: $INSTALL_DIR"
echo " devenv dir: $DEVENV_DIR"
echo " 64-bit cl dir: $CL64_PATH"
echo " 32-bit cl dir: $CL32_PATH"
set_vs_var() {
export $2="$(cmd.exe //c "$DEVENV_DIR/../../VC/Auxiliary/Build/vcvars64.bat" $1 '&' set | sed -ne 's/^'$2'=//p')"
}
echo "Setting environment variables for x64..."
set_vs_var x64 INCLUDE
set_vs_var x64 LIB
set_vs_var x64 LIBPATH
echo "Building for x64..."
export PATH="$CL64_PATH:$SAVED_PATH"
make distclean || true
./configure --target-os=win64 --arch=x86_64 --toolchain=msvc
make -j8
make install DESTDIR="$T" LIBDIR="$T/lib/x86_64-msvc" INCDIR="$T/include"
echo "Setting environment variables for x86..."
set_vs_var x86 INCLUDE
set_vs_var x86 LIB
set_vs_var x86 LIBPATH
echo "Building for x86..."
export PATH="$CL32_PATH:$SAVED_PATH"
make distclean || true
./configure --target-os=win64 --arch=i686 --toolchain=msvc
make -j8
make install DESTDIR="$T" LIBDIR="$T/lib/i686-msvc"
rm -rf "$T/usr"
find "$T" -name 'lib*.a' | grep msvc | sed -e 's/\(.*\)lib\(.*\).a/& \1\2.lib/' | while read a b; do mv "$a" "$b"; done
exit 0