forked from stps/mpv-ios-scripts
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathcompile.sh
executable file
·161 lines (148 loc) · 5.54 KB
/
compile.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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#!/bin/sh -e
LIBRARIES="libuchardet libfribidi libfreetype libharfbuzz libass ffmpeg libmpv libssl"
IOS_SDK_VERSION="15.5"
TVOS_SDK_VERSION="15.4"
DEPLOYMENT_TARGET="11.0"
export PKG_CONFIG_PATH
export LDFLAGS
export CFLAGS
export CXXFLAGS
export COMMON_OPTIONS
export ENVIRONMENT
export ARCH
export PLATFORM
export CMAKE_OSX_ARCHITECTURES
while getopts "p:e:" OPTION; do
case $OPTION in
e )
ENVIRONMENT=$(echo "$OPTARG" | awk '{print tolower($0)}')
;;
p )
PLATFORM=$(echo "$OPTARG" | awk '{print tolower($0)}')
;;
? )
echo "Invalid option"
exit 1
;;
esac
done
export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/:$PATH"
if [[ "$ENVIRONMENT" = "distribution" ]]; then
ARCHS="arm64"
elif [[ "$ENVIRONMENT" = "development" ]]; then
ARCHS="x86_64 arm64"
elif [[ "$ENVIRONMENT" = "" ]]; then
echo "An environment option is required (-e development or -e distribution)"
exit 1
else
echo "Unhandled environment option"
exit 1
fi
if [[ "$PLATFORM" = "ios" ]]; then
SDK_VERSION=$IOS_SDK_VERSION
PLATFORM_SIMULATOR="iPhoneSimulator"
PLATFORM_DEVICE="iPhoneOS"
SDKPATH_SIMULATOR="$(xcodebuild -sdk iphonesimulator -version Path)"
SDKPATH_DEVICE="$(xcodebuild -sdk iphoneos -version Path)"
MIN_VERSION_SIMULATOR_CFLAG="-mios-simulator-version-min"
MIN_VERSION_SIMULATOR_LDFLAG="-Wl,-ios_simulator_version_min"
MIN_VERSION_DEVICE_CFLAG="-mios-version-min"
MIN_VERSION_DEVICE_LDFLAG="-Wl,-ios_version_min"
elif [[ "$PLATFORM" = "tv" ]]; then
SDK_VERSION=$TVOS_SDK_VERSION
PLATFORM_SIMULATOR="AppleTVSimulator"
PLATFORM_DEVICE="AppleTVOS"
SDKPATH_SIMULATOR="$(xcodebuild -sdk appletvsimulator -version Path)"
SDKPATH_DEVICE="$(xcodebuild -sdk appletvos -version Path)"
MIN_VERSION_SIMULATOR_CFLAG="-mtvos-simulator-version-min"
MIN_VERSION_SIMULATOR_LDFLAG="-Wl,-tvos_simulator_version_min"
MIN_VERSION_DEVICE_CFLAG="-mtvos-version-min"
MIN_VERSION_DEVICE_LDFLAG="-Wl,-tvos_version_min"
elif [[ "$PLATFORM" = "" ]]; then
echo "A platform option is required (-p ios or -p tv)"
exit 1
else
echo "Unhandled platform option"
exit 1
fi
ROOT="$(pwd)"
SCRIPTS="$ROOT/scripts"
SCRATCH="$ROOT/scratch-$PLATFORM"
export SRC="$ROOT/src"
for ARCH in $ARCHS; do
if [[ $ARCH = "arm64" ]]; then
HOSTFLAG="aarch64"
CMAKE_OSX_ARCHITECTURES=$ARCH
if [[ "$ENVIRONMENT" = "development" ]]; then
PLATFORM=$PLATFORM_SIMULATOR
export SDKPATH=$SDKPATH_SIMULATOR
ACFLAGS="-arch $ARCH -isysroot $SDKPATH $MIN_VERSION_SIMULATOR_CFLAG=$DEPLOYMENT_TARGET"
ALDFLAGS="-arch $ARCH -isysroot $SDKPATH $MIN_VERSION_SIMULATOR_LDFLAG,$DEPLOYMENT_TARGET -lbz2"
OPENSSL="$ROOT/openssl/$PLATFORM$SDK_VERSION-arm64.sdk"
else
PLATFORM=$PLATFORM_DEVICE
export SDKPATH=$SDKPATH_DEVICE
ACFLAGS="-arch $ARCH -isysroot $SDKPATH $MIN_VERSION_DEVICE_CFLAG=$DEPLOYMENT_TARGET"
ALDFLAGS="-arch $ARCH -isysroot $SDKPATH $MIN_VERSION_DEVICE_LDFLAG,$DEPLOYMENT_TARGET -lbz2"
OPENSSL="$ROOT/openssl/$PLATFORM$SDK_VERSION-arm64.sdk"
fi
elif [[ $ARCH = "x86_64" ]]; then
HOSTFLAG="x86_64"
CMAKE_OSX_ARCHITECTURES=$ARCH
PLATFORM=$PLATFORM_SIMULATOR
export SDKPATH=$SDKPATH_SIMULATOR
ACFLAGS="-arch $ARCH -isysroot $SDKPATH $MIN_VERSION_SIMULATOR_CFLAG=$DEPLOYMENT_TARGET"
ALDFLAGS="-arch $ARCH -isysroot $SDKPATH $MIN_VERSION_SIMULATOR_LDFLAG,$DEPLOYMENT_TARGET -lbz2"
OPENSSL="$ROOT/openssl/$PLATFORM$SDK_VERSION-x86_64.sdk"
else
echo "Unhandled architecture option"
exit 1
fi
if [[ "$ENVIRONMENT" = "development" ]]; then
CFLAGS="$ACFLAGS"
LDFLAGS="$ALDFLAGS"
else
CFLAGS="$ACFLAGS -fembed-bitcode -Os"
LDFLAGS="$ALDFLAGS -fembed-bitcode -Os"
fi
CXXFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -I$OPENSSL/include"
LDFLAGS="$LDFLAGS -L$OPENSSL/lib"
mkdir -p $SCRATCH
PKG_CONFIG_PATH="$SCRATCH/$ARCH-$ENVIRONMENT/lib/pkgconfig"
COMMON_OPTIONS="--prefix=$SCRATCH/$ARCH-$ENVIRONMENT --exec-prefix=$SCRATCH/$ARCH-$ENVIRONMENT --build=x86_64-apple-darwin14 --enable-static \
--disable-shared --disable-dependency-tracking --with-pic --host=$HOSTFLAG"
for LIBRARY in $LIBRARIES; do
case $LIBRARY in
"libfribidi" )
mkdir -p $SCRATCH/$ARCH-$ENVIRONMENT/fribidi && cd $_ && $SCRIPTS/fribidi-build
;;
"libfreetype" )
mkdir -p $SCRATCH/$ARCH-$ENVIRONMENT/freetype && cd $_ && $SCRIPTS/freetype-build
;;
"libharfbuzz" )
mkdir -p $SCRATCH/$ARCH-$ENVIRONMENT/harfbuzz && cd $_ && $SCRIPTS/harfbuzz-build
;;
"libass" )
mkdir -p $SCRATCH/$ARCH-$ENVIRONMENT/libass && cd $_ && $SCRIPTS/libass-build
;;
"libuchardet" )
mkdir -p $SCRATCH/$ARCH-$ENVIRONMENT/uchardet && cd $_ && $SCRIPTS/uchardet-build
;;
"ffmpeg" )
mkdir -p $SCRATCH/$ARCH-$ENVIRONMENT/ffmpeg && cd $_ && $SCRIPTS/ffmpeg-build
;;
"libmpv" )
if [[ "$ENVIRONMENT" = "development" ]]; then
CFLAGS="$ACFLAGS -fembed-bitcode -g2 -Og"
LDFLAGS="$ALDFLAGS -fembed-bitcode -g2 -Og"
fi
$SCRIPTS/mpv-build && cp $SRC/mpv*/build/libmpv.a "$SCRATCH/$ARCH-$ENVIRONMENT/lib"
;;
"libssl" )
cp -a $OPENSSL/include/. $SCRATCH/$ARCH-$ENVIRONMENT/include/
cp -a $OPENSSL/lib/. $SCRATCH/$ARCH-$ENVIRONMENT/lib/
;;
esac
done
done