@@ -39,13 +39,74 @@ function checkPreRequisites {
3939 fi
4040}
4141
42+ function build_one {
43+ echo " Building ${ARCH} ..."
44+
45+ if [[ " ${CURRENT_PLATFORM} " == " Darwin" * ]]; then
46+ PREBUILT=${NDK} /toolchains/llvm/prebuilt/darwin-x86_64
47+ else
48+ PREBUILT=${NDK} /toolchains/${PREBUILT_ARCH}${PREBUILT_MIDDLE} -${VERSION} /prebuilt/${BUILD_PLATFORM}
49+ fi
50+
51+ PLATFORM=${NDK} /platforms/android-${ANDROID_API} /arch-${ARCH}
52+
53+ if [[ " ${CURRENT_PLATFORM} " == " Darwin" * ]]; then
54+ TOOLS_PREFIX=" ${PREBUILT} /bin/${ARCH_NAME} -linux-${BIN_MIDDLE} -"
55+ else
56+ TOOLS_PREFIX=" ${LLVM_BIN} /${ARCH_NAME} -linux-${BIN_MIDDLE} -"
57+ fi
58+
59+ LD=${TOOLS_PREFIX} ld
60+ AR=${TOOLS_PREFIX} ar
61+ STRIP=${TOOLS_PREFIX} strip
62+ NM=${TOOLS_PREFIX} nm
63+
64+ if [[ " ${CURRENT_PLATFORM} " == " Darwin" * ]]; then
65+ CC_PREFIX=" ${PREBUILT} /bin/${CLANG_PREFIX} -linux-${BIN_MIDDLE}${ANDROID_API} -"
66+ else
67+ CC_PREFIX=" ${LLVM_BIN} /${CLANG_PREFIX} -linux-${BIN_MIDDLE}${ANDROID_API} -"
68+ fi
69+
70+ CC=${CC_PREFIX} clang
71+ CXX=${CC_PREFIX} clang++
72+ CROSS_PREFIX=${PREBUILT} /bin/${ARCH_NAME} -linux-${BIN_MIDDLE} -
73+
74+ INCLUDES=" -I${LIBVPXPREFIX} /include"
75+ LIBS=" -L${LIBVPXPREFIX} /lib"
76+
77+ echo " Cleaning..."
78+ rm -f config.h
79+ make clean || true
80+
81+ echo " Configuring..."
82+
83+ meson setup builddir-${ARCH} \
84+ --prefix " $PREFIX " \
85+ --libdir=" lib" \
86+ --includedir=" include" \
87+ --buildtype=release -Denable_tests=false -Denable_tools=false -Ddefault_library=static \
88+ --cross-file <( echo "
89+ [binaries]
90+ c = '${CC} '
91+ ar = '${AR} '
92+
93+ [host_machine]
94+ system = 'android'
95+ cpu_family = '${MESON_CPU_FAMILY} '
96+ cpu = '${MESON_CPU} '
97+ endian = 'little'
98+ " )
99+ ninja -C builddir-${ARCH}
100+ ninja -C builddir-${ARCH} install
101+ }
102+
42103setCurrentPlatform
43104checkPreRequisites
44105
45106cd dav1d
46107
47108# # common
48- LLVM_PREFIX=" ${NDK} /toolchains/llvm/prebuilt/linux-x86_64 "
109+ LLVM_PREFIX=" ${NDK} /toolchains/llvm/prebuilt/${BUILD_PLATFORM} "
49110LLVM_BIN=" ${LLVM_PREFIX} /bin"
50111VERSION=" 4.9"
51112ANDROID_API=21
@@ -54,110 +115,83 @@ function build {
54115 for arg in " $@ " ; do
55116 case " ${arg} " in
56117 x86_64)
118+ ANDROID_API=21
119+
57120 ARCH=x86_64
58- PREFIX=" $( pwd) /build/"
59-
60- echo " Building ${ARCH} ..."
61- echo " Configuring..."
62-
63- meson setup builddir-x86_64 \
64- --prefix " $PREFIX /x86_64" \
65- --libdir=" lib" \
66- --includedir=" include" \
67- --buildtype=release -Denable_tests=false -Denable_tools=false -Ddefault_library=static \
68- --cross-file <( echo "
69- [binaries]
70- c = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android21-clang'
71- ar = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android-ar'
72-
73- [host_machine]
74- system = 'android'
75- cpu_family = 'x86_64'
76- cpu = 'x86_64'
77- endian = 'little'
78- " )
79- ninja -C builddir-x86_64
80- ninja -C builddir-x86_64 install
81- ;;
82- x86)
83- ARCH=x86
84- PREFIX=" $( pwd) /build/"
85-
86- echo " Building ${ARCH} ..."
87- echo " Configuring..."
88-
89- meson setup builddir-x86 \
90- --prefix " $PREFIX /x86" \
91- --libdir=" lib" \
92- --includedir=" include" \
93- --buildtype=release -Denable_tests=false -Denable_tools=false -Ddefault_library=static \
94- --cross-file <( echo "
95- [binaries]
96- c = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang'
97- ar = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar'
98-
99- [host_machine]
100- system = 'android'
101- cpu_family = 'x86'
102- cpu = 'i686'
103- endian = 'little'
104- " )
105- ninja -C builddir-x86
106- ninja -C builddir-x86 install
121+ ARCH_NAME=x86_64
122+ PREBUILT_ARCH=x86_64
123+ PREBUILT_MIDDLE=
124+ CLANG_PREFIX=x86_64
125+ BIN_MIDDLE=android
126+ CPU=x86_64
127+ PREFIX=" $( pwd) /build/x86_64"
128+ LIBVPXPREFIX=../libvpx/build/$ARCH_NAME
129+ ADDITIONAL_CONFIGURE_FLAG=" --disable-asm"
130+
131+ MESON_CPU=x86_64
132+ MESON_CPU_FAMILY=x86_64
133+
134+ build_one
107135 ;;
108136 arm64)
109- ARCH=arm64
110- PREFIX=" $( pwd) /build/"
111-
112- echo " Building ${ARCH} ..."
113- echo " Configuring..."
114-
115- meson setup builddir-arm64 \
116- --prefix " $PREFIX /arm64-v8a" \
117- --libdir=" lib" \
118- --includedir=" include" \
119- --buildtype=release -Denable_tests=false -Denable_tools=false -Ddefault_library=static \
120- --cross-file <( echo "
121- [binaries]
122- c = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang'
123- ar = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ar'
124-
125- [host_machine]
126- system = 'android'
127- cpu_family = 'aarch64'
128- cpu = 'arm64'
129- endian = 'little'
130- " )
131- ninja -C builddir-arm64
132- ninja -C builddir-arm64 install
137+ ANDROID_API=21
133138
139+ ARCH=arm64
140+ ARCH_NAME=aarch64
141+ PREBUILT_ARCH=aarch64
142+ PREBUILT_MIDDLE=" -linux-android"
143+ CLANG_PREFIX=aarch64
144+ BIN_MIDDLE=android
145+ CPU=arm64-v8a
146+ OPTIMIZE_CFLAGS=
147+ PREFIX=" $( pwd) /build/arm64-v8a"
148+ LIBVPXPREFIX=../libvpx/build/$CPU
149+ ADDITIONAL_CONFIGURE_FLAG=" --enable-neon --enable-optimizations"
150+
151+ MESON_CPU=arm64
152+ MESON_CPU_FAMILY=aarch64
153+
154+ build_one
134155 ;;
135156 arm)
157+ ANDROID_API=16
158+
136159 ARCH=arm
137- PREFIX=" $( pwd) /build/"
138-
139- echo " Building ${ARCH} ..."
140- echo " Configuring..."
141-
142- meson setup builddir-armv7 \
143- --prefix " $PREFIX /armeabi-v7a" \
144- --libdir=" lib" \
145- --includedir=" include" \
146- --buildtype=release -Denable_tests=false -Denable_tools=false -Ddefault_library=static \
147- --cross-file <( echo "
148- [binaries]
149- c = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi21-clang'
150- ar = '${NDK} /toolchains/llvm/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-ar'
151-
152- [host_machine]
153- system = 'android'
154- cpu_family = 'arm'
155- cpu = 'armv7'
156- endian = 'little'
157- " ) \
158- -Dc_args=" -DDAV1D_NO_GETAUXVAL"
159- ninja -C builddir-armv7
160- ninja -C builddir-armv7 install
160+ ARCH_NAME=arm
161+ PREBUILT_ARCH=arm
162+ PREBUILT_MIDDLE=" -linux-androideabi"
163+ CLANG_PREFIX=armv7a
164+ BIN_MIDDLE=androideabi
165+ CPU=armv7-a
166+ OPTIMIZE_CFLAGS=" -marm -march=$CPU "
167+ PREFIX=" $( pwd) /build/armeabi-v7a"
168+ LIBVPXPREFIX=../libvpx/build/armeabi-v7a
169+ ADDITIONAL_CONFIGURE_FLAG=--enable-neon
170+
171+ MESON_CPU=armv7
172+ MESON_CPU_FAMILY=arm
173+
174+ build_one
175+ ;;
176+ x86)
177+ ANDROID_API=16
178+
179+ ARCH=x86
180+ ARCH_NAME=i686
181+ PREBUILT_ARCH=x86
182+ PREBUILT_MIDDLE=
183+ CLANG_PREFIX=i686
184+ BIN_MIDDLE=android
185+ CPU=i686
186+ OPTIMIZE_CFLAGS=" -march=$CPU "
187+ PREFIX=" $( pwd) /build/x86"
188+ LIBVPXPREFIX=../libvpx/build/$ARCH
189+ ADDITIONAL_CONFIGURE_FLAG=" --disable-x86asm --disable-inline-asm --disable-asm"
190+
191+ MESON_CPU=i686
192+ MESON_CPU_FAMILY=x86
193+
194+ build_one
161195 ;;
162196 * )
163197 ;;
@@ -169,4 +203,4 @@ if (( $# == 0 )); then
169203 build x86_64 x86 arm arm64
170204else
171205 build $@
172- fi
206+ fi
0 commit comments