xref: /aosp_15_r20/external/libvpx/configure (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker#!/bin/sh
2*fb1b10abSAndroid Build Coastguard Worker##
3*fb1b10abSAndroid Build Coastguard Worker##  configure
4*fb1b10abSAndroid Build Coastguard Worker##
5*fb1b10abSAndroid Build Coastguard Worker##  This script is the front-end to the build system. It provides a similar
6*fb1b10abSAndroid Build Coastguard Worker##  interface to standard configure scripts with some extra bits for dealing
7*fb1b10abSAndroid Build Coastguard Worker##  with toolchains that differ from the standard POSIX interface and
8*fb1b10abSAndroid Build Coastguard Worker##  for extracting subsets of the source tree. In theory, reusable parts
9*fb1b10abSAndroid Build Coastguard Worker##  of this script were intended to live in build/make/configure.sh,
10*fb1b10abSAndroid Build Coastguard Worker##  but in practice, the line is pretty blurry.
11*fb1b10abSAndroid Build Coastguard Worker##
12*fb1b10abSAndroid Build Coastguard Worker##  This build system is based in part on the FFmpeg configure script.
13*fb1b10abSAndroid Build Coastguard Worker##
14*fb1b10abSAndroid Build Coastguard Worker
15*fb1b10abSAndroid Build Coastguard Worker#source_path="`dirname \"$0\"`"
16*fb1b10abSAndroid Build Coastguard Workersource_path=${0%/*}
17*fb1b10abSAndroid Build Coastguard Worker. "${source_path}/build/make/configure.sh"
18*fb1b10abSAndroid Build Coastguard Worker
19*fb1b10abSAndroid Build Coastguard Workershow_help(){
20*fb1b10abSAndroid Build Coastguard Worker    show_help_pre
21*fb1b10abSAndroid Build Coastguard Worker    cat << EOF
22*fb1b10abSAndroid Build Coastguard WorkerAdvanced options:
23*fb1b10abSAndroid Build Coastguard Worker  ${toggle_libs}                  libraries
24*fb1b10abSAndroid Build Coastguard Worker  ${toggle_examples}              examples
25*fb1b10abSAndroid Build Coastguard Worker  ${toggle_tools}                 tools
26*fb1b10abSAndroid Build Coastguard Worker  ${toggle_docs}                  documentation
27*fb1b10abSAndroid Build Coastguard Worker  ${toggle_unit_tests}            unit tests
28*fb1b10abSAndroid Build Coastguard Worker  ${toggle_decode_perf_tests}     build decoder perf tests with unit tests
29*fb1b10abSAndroid Build Coastguard Worker  ${toggle_encode_perf_tests}     build encoder perf tests with unit tests
30*fb1b10abSAndroid Build Coastguard Worker  --cpu=CPU                       tune for the specified CPU (ARM: cortex-a8, X86: sse3)
31*fb1b10abSAndroid Build Coastguard Worker  --libc=PATH                     path to alternate libc
32*fb1b10abSAndroid Build Coastguard Worker  --size-limit=WxH                max size to allow in the decoder
33*fb1b10abSAndroid Build Coastguard Worker  --as={yasm|nasm|auto}           use specified assembler [auto, yasm preferred]
34*fb1b10abSAndroid Build Coastguard Worker  ${toggle_codec_srcs}            in/exclude codec library source code
35*fb1b10abSAndroid Build Coastguard Worker  ${toggle_debug_libs}            in/exclude debug version of libraries
36*fb1b10abSAndroid Build Coastguard Worker  ${toggle_static_msvcrt}         use static MSVCRT (VS builds only)
37*fb1b10abSAndroid Build Coastguard Worker  ${toggle_vp9_highbitdepth}      use VP9 high bit depth (10/12) profiles
38*fb1b10abSAndroid Build Coastguard Worker  ${toggle_better_hw_compatibility}
39*fb1b10abSAndroid Build Coastguard Worker                                  enable encoder to produce streams with better
40*fb1b10abSAndroid Build Coastguard Worker                                  hardware decoder compatibility
41*fb1b10abSAndroid Build Coastguard Worker  ${toggle_vp8}                   VP8 codec support
42*fb1b10abSAndroid Build Coastguard Worker  ${toggle_vp9}                   VP9 codec support
43*fb1b10abSAndroid Build Coastguard Worker  ${toggle_internal_stats}        output of encoder internal stats for debug, if supported (encoders)
44*fb1b10abSAndroid Build Coastguard Worker  ${toggle_postproc}              postprocessing
45*fb1b10abSAndroid Build Coastguard Worker  ${toggle_vp9_postproc}          vp9 specific postprocessing
46*fb1b10abSAndroid Build Coastguard Worker  ${toggle_multithread}           multithreaded encoding and decoding
47*fb1b10abSAndroid Build Coastguard Worker  ${toggle_spatial_resampling}    spatial sampling (scaling) support
48*fb1b10abSAndroid Build Coastguard Worker  ${toggle_realtime_only}         enable this option while building for real-time encoding
49*fb1b10abSAndroid Build Coastguard Worker  ${toggle_onthefly_bitpacking}   enable on-the-fly bitpacking in real-time encoding
50*fb1b10abSAndroid Build Coastguard Worker  ${toggle_error_concealment}     enable this option to get a decoder which is able to conceal losses
51*fb1b10abSAndroid Build Coastguard Worker  ${toggle_coefficient_range_checking}
52*fb1b10abSAndroid Build Coastguard Worker                                  enable decoder to check if intermediate
53*fb1b10abSAndroid Build Coastguard Worker                                  transform coefficients are in valid range
54*fb1b10abSAndroid Build Coastguard Worker  ${toggle_runtime_cpu_detect}    runtime cpu detection
55*fb1b10abSAndroid Build Coastguard Worker  ${toggle_shared}                shared library support
56*fb1b10abSAndroid Build Coastguard Worker  ${toggle_static}                static library support
57*fb1b10abSAndroid Build Coastguard Worker  ${toggle_small}                 favor smaller size over speed
58*fb1b10abSAndroid Build Coastguard Worker  ${toggle_postproc_visualizer}   macro block / block level visualizers
59*fb1b10abSAndroid Build Coastguard Worker  ${toggle_multi_res_encoding}    enable multiple-resolution encoding
60*fb1b10abSAndroid Build Coastguard Worker  ${toggle_temporal_denoising}    enable temporal denoising and disable the spatial denoiser
61*fb1b10abSAndroid Build Coastguard Worker  ${toggle_vp9_temporal_denoising}
62*fb1b10abSAndroid Build Coastguard Worker                                  enable vp9 temporal denoising
63*fb1b10abSAndroid Build Coastguard Worker  ${toggle_webm_io}               enable input from and output to WebM container
64*fb1b10abSAndroid Build Coastguard Worker  ${toggle_libyuv}                enable libyuv
65*fb1b10abSAndroid Build Coastguard Worker
66*fb1b10abSAndroid Build Coastguard WorkerCodecs:
67*fb1b10abSAndroid Build Coastguard Worker  Codecs can be selectively enabled or disabled individually, or by family:
68*fb1b10abSAndroid Build Coastguard Worker      --disable-<codec>
69*fb1b10abSAndroid Build Coastguard Worker  is equivalent to:
70*fb1b10abSAndroid Build Coastguard Worker      --disable-<codec>-encoder
71*fb1b10abSAndroid Build Coastguard Worker      --disable-<codec>-decoder
72*fb1b10abSAndroid Build Coastguard Worker
73*fb1b10abSAndroid Build Coastguard Worker  Codecs available in this distribution:
74*fb1b10abSAndroid Build Coastguard WorkerEOF
75*fb1b10abSAndroid Build Coastguard Worker#restore editor state '
76*fb1b10abSAndroid Build Coastguard Worker
77*fb1b10abSAndroid Build Coastguard Worker    family="";
78*fb1b10abSAndroid Build Coastguard Worker    last_family="";
79*fb1b10abSAndroid Build Coastguard Worker    c="";
80*fb1b10abSAndroid Build Coastguard Worker    str="";
81*fb1b10abSAndroid Build Coastguard Worker    for c in ${CODECS}; do
82*fb1b10abSAndroid Build Coastguard Worker        family=${c%_*}
83*fb1b10abSAndroid Build Coastguard Worker        if [ "${family}" != "${last_family}" ]; then
84*fb1b10abSAndroid Build Coastguard Worker            [ -z "${str}" ] || echo "${str}"
85*fb1b10abSAndroid Build Coastguard Worker            str="$(printf '    %10s:' ${family})"
86*fb1b10abSAndroid Build Coastguard Worker        fi
87*fb1b10abSAndroid Build Coastguard Worker        str="${str} $(printf '%10s' ${c#*_})"
88*fb1b10abSAndroid Build Coastguard Worker        last_family=${family}
89*fb1b10abSAndroid Build Coastguard Worker    done
90*fb1b10abSAndroid Build Coastguard Worker    echo "${str}"
91*fb1b10abSAndroid Build Coastguard Worker    show_help_post
92*fb1b10abSAndroid Build Coastguard Worker}
93*fb1b10abSAndroid Build Coastguard Worker
94*fb1b10abSAndroid Build Coastguard Worker##
95*fb1b10abSAndroid Build Coastguard Worker## BEGIN APPLICATION SPECIFIC CONFIGURATION
96*fb1b10abSAndroid Build Coastguard Worker##
97*fb1b10abSAndroid Build Coastguard Worker
98*fb1b10abSAndroid Build Coastguard Worker# all_platforms is a list of all supported target platforms. Maintain
99*fb1b10abSAndroid Build Coastguard Worker# alphabetically by architecture, generic-gnu last.
100*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-android-gcc"
101*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-darwin-gcc"
102*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-darwin20-gcc"
103*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-darwin21-gcc"
104*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-darwin22-gcc"
105*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-darwin23-gcc"
106*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-linux-gcc"
107*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-win64-gcc"
108*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-win64-vs15"
109*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-win64-vs16"
110*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-win64-vs16-clangcl"
111*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-win64-vs17"
112*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} arm64-win64-vs17-clangcl"
113*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-android-gcc"   #neon Cortex-A8
114*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-darwin-gcc"    #neon Cortex-A8
115*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-linux-rvct"    #neon Cortex-A8
116*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-linux-gcc"     #neon Cortex-A8
117*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-none-rvct"     #neon Cortex-A8
118*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-win32-gcc"
119*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-win32-vs14"
120*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-win32-vs15"
121*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-win32-vs16"
122*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7-win32-vs17"
123*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv7s-darwin-gcc"
124*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} armv8-linux-gcc"
125*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} loongarch32-linux-gcc"
126*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} loongarch64-linux-gcc"
127*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} mips32-linux-gcc"
128*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} mips64-linux-gcc"
129*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} ppc64le-linux-gcc"
130*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} sparc-solaris-gcc"
131*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-android-gcc"
132*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin8-gcc"
133*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin8-icc"
134*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin9-gcc"
135*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin9-icc"
136*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin10-gcc"
137*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin11-gcc"
138*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin12-gcc"
139*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin13-gcc"
140*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin14-gcc"
141*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin15-gcc"
142*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin16-gcc"
143*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-darwin17-gcc"
144*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-iphonesimulator-gcc"
145*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-linux-gcc"
146*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-linux-icc"
147*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-os2-gcc"
148*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-solaris-gcc"
149*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-win32-gcc"
150*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-win32-vs14"
151*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-win32-vs15"
152*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-win32-vs16"
153*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86-win32-vs17"
154*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-android-gcc"
155*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin9-gcc"
156*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin10-gcc"
157*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin11-gcc"
158*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin12-gcc"
159*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin13-gcc"
160*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin14-gcc"
161*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin15-gcc"
162*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin16-gcc"
163*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin17-gcc"
164*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin18-gcc"
165*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin19-gcc"
166*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin20-gcc"
167*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin21-gcc"
168*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin22-gcc"
169*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-darwin23-gcc"
170*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-iphonesimulator-gcc"
171*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-linux-gcc"
172*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-linux-icc"
173*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-solaris-gcc"
174*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-win64-gcc"
175*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-win64-vs14"
176*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-win64-vs15"
177*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-win64-vs16"
178*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} x86_64-win64-vs17"
179*fb1b10abSAndroid Build Coastguard Workerall_platforms="${all_platforms} generic-gnu"
180*fb1b10abSAndroid Build Coastguard Worker
181*fb1b10abSAndroid Build Coastguard Worker# all_targets is a list of all targets that can be configured
182*fb1b10abSAndroid Build Coastguard Worker# note that these should be in dependency order for now.
183*fb1b10abSAndroid Build Coastguard Workerall_targets="libs examples tools docs"
184*fb1b10abSAndroid Build Coastguard Worker
185*fb1b10abSAndroid Build Coastguard Worker# all targets available are enabled, by default.
186*fb1b10abSAndroid Build Coastguard Workerfor t in ${all_targets}; do
187*fb1b10abSAndroid Build Coastguard Worker    [ -f "${source_path}/${t}.mk" ] && enable_feature ${t}
188*fb1b10abSAndroid Build Coastguard Workerdone
189*fb1b10abSAndroid Build Coastguard Worker
190*fb1b10abSAndroid Build Coastguard Workerif ! diff --version >/dev/null; then
191*fb1b10abSAndroid Build Coastguard Worker  die "diff missing: Try installing diffutils via your package manager."
192*fb1b10abSAndroid Build Coastguard Workerfi
193*fb1b10abSAndroid Build Coastguard Worker
194*fb1b10abSAndroid Build Coastguard Workerif ! perl --version >/dev/null; then
195*fb1b10abSAndroid Build Coastguard Worker    die "Perl is required to build"
196*fb1b10abSAndroid Build Coastguard Workerfi
197*fb1b10abSAndroid Build Coastguard Worker
198*fb1b10abSAndroid Build Coastguard Workerif [ "`cd \"${source_path}\" && pwd`" != "`pwd`" ]; then
199*fb1b10abSAndroid Build Coastguard Worker  # test to see if source_path already configured
200*fb1b10abSAndroid Build Coastguard Worker  if [ -f "${source_path}/vpx_config.h" ]; then
201*fb1b10abSAndroid Build Coastguard Worker    die "source directory already configured; run 'make distclean' there first"
202*fb1b10abSAndroid Build Coastguard Worker  fi
203*fb1b10abSAndroid Build Coastguard Workerfi
204*fb1b10abSAndroid Build Coastguard Worker
205*fb1b10abSAndroid Build Coastguard Worker# check installed doxygen version
206*fb1b10abSAndroid Build Coastguard Workerdoxy_version=$(doxygen --version 2>/dev/null)
207*fb1b10abSAndroid Build Coastguard Workerdoxy_major=${doxy_version%%.*}
208*fb1b10abSAndroid Build Coastguard Workerif [ ${doxy_major:-0} -ge 1 ]; then
209*fb1b10abSAndroid Build Coastguard Worker    doxy_version=${doxy_version#*.}
210*fb1b10abSAndroid Build Coastguard Worker    doxy_minor=${doxy_version%%.*}
211*fb1b10abSAndroid Build Coastguard Worker    doxy_patch=${doxy_version##*.}
212*fb1b10abSAndroid Build Coastguard Worker
213*fb1b10abSAndroid Build Coastguard Worker    [ $doxy_major -gt 1 ] && enable_feature doxygen
214*fb1b10abSAndroid Build Coastguard Worker    [ $doxy_minor -gt 5 ] && enable_feature doxygen
215*fb1b10abSAndroid Build Coastguard Worker    [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable_feature doxygen
216*fb1b10abSAndroid Build Coastguard Workerfi
217*fb1b10abSAndroid Build Coastguard Worker
218*fb1b10abSAndroid Build Coastguard Worker# disable codecs when their source directory does not exist
219*fb1b10abSAndroid Build Coastguard Worker[ -d "${source_path}/vp8" ] || disable_codec vp8
220*fb1b10abSAndroid Build Coastguard Worker[ -d "${source_path}/vp9" ] || disable_codec vp9
221*fb1b10abSAndroid Build Coastguard Worker
222*fb1b10abSAndroid Build Coastguard Worker# install everything except the sources, by default. sources will have
223*fb1b10abSAndroid Build Coastguard Worker# to be enabled when doing dist builds, since that's no longer a common
224*fb1b10abSAndroid Build Coastguard Worker# case.
225*fb1b10abSAndroid Build Coastguard Workerenabled doxygen && enable_feature install_docs
226*fb1b10abSAndroid Build Coastguard Workerenable_feature install_bins
227*fb1b10abSAndroid Build Coastguard Workerenable_feature install_libs
228*fb1b10abSAndroid Build Coastguard Worker
229*fb1b10abSAndroid Build Coastguard Workerenable_feature static
230*fb1b10abSAndroid Build Coastguard Workerenable_feature optimizations
231*fb1b10abSAndroid Build Coastguard Workerenable_feature dependency_tracking
232*fb1b10abSAndroid Build Coastguard Workerenable_feature spatial_resampling
233*fb1b10abSAndroid Build Coastguard Workerenable_feature multithread
234*fb1b10abSAndroid Build Coastguard Workerenable_feature os_support
235*fb1b10abSAndroid Build Coastguard Workerenable_feature temporal_denoising
236*fb1b10abSAndroid Build Coastguard Worker
237*fb1b10abSAndroid Build Coastguard WorkerCODECS="
238*fb1b10abSAndroid Build Coastguard Worker    vp8_encoder
239*fb1b10abSAndroid Build Coastguard Worker    vp8_decoder
240*fb1b10abSAndroid Build Coastguard Worker    vp9_encoder
241*fb1b10abSAndroid Build Coastguard Worker    vp9_decoder
242*fb1b10abSAndroid Build Coastguard Worker"
243*fb1b10abSAndroid Build Coastguard WorkerCODEC_FAMILIES="
244*fb1b10abSAndroid Build Coastguard Worker    vp8
245*fb1b10abSAndroid Build Coastguard Worker    vp9
246*fb1b10abSAndroid Build Coastguard Worker"
247*fb1b10abSAndroid Build Coastguard Worker
248*fb1b10abSAndroid Build Coastguard WorkerARCH_LIST="
249*fb1b10abSAndroid Build Coastguard Worker    arm
250*fb1b10abSAndroid Build Coastguard Worker    aarch64
251*fb1b10abSAndroid Build Coastguard Worker    mips
252*fb1b10abSAndroid Build Coastguard Worker    x86
253*fb1b10abSAndroid Build Coastguard Worker    x86_64
254*fb1b10abSAndroid Build Coastguard Worker    ppc
255*fb1b10abSAndroid Build Coastguard Worker    loongarch
256*fb1b10abSAndroid Build Coastguard Worker"
257*fb1b10abSAndroid Build Coastguard Worker
258*fb1b10abSAndroid Build Coastguard WorkerARCH_EXT_LIST_AARCH64="
259*fb1b10abSAndroid Build Coastguard Worker    neon
260*fb1b10abSAndroid Build Coastguard Worker    neon_dotprod
261*fb1b10abSAndroid Build Coastguard Worker    neon_i8mm
262*fb1b10abSAndroid Build Coastguard Worker    sve
263*fb1b10abSAndroid Build Coastguard Worker    sve2
264*fb1b10abSAndroid Build Coastguard Worker"
265*fb1b10abSAndroid Build Coastguard Worker
266*fb1b10abSAndroid Build Coastguard WorkerARCH_EXT_LIST_X86="
267*fb1b10abSAndroid Build Coastguard Worker    mmx
268*fb1b10abSAndroid Build Coastguard Worker    sse
269*fb1b10abSAndroid Build Coastguard Worker    sse2
270*fb1b10abSAndroid Build Coastguard Worker    sse3
271*fb1b10abSAndroid Build Coastguard Worker    ssse3
272*fb1b10abSAndroid Build Coastguard Worker    sse4_1
273*fb1b10abSAndroid Build Coastguard Worker    avx
274*fb1b10abSAndroid Build Coastguard Worker    avx2
275*fb1b10abSAndroid Build Coastguard Worker    avx512
276*fb1b10abSAndroid Build Coastguard Worker"
277*fb1b10abSAndroid Build Coastguard Worker
278*fb1b10abSAndroid Build Coastguard WorkerARCH_EXT_LIST_LOONGSON="
279*fb1b10abSAndroid Build Coastguard Worker    mmi
280*fb1b10abSAndroid Build Coastguard Worker    lsx
281*fb1b10abSAndroid Build Coastguard Worker    lasx
282*fb1b10abSAndroid Build Coastguard Worker"
283*fb1b10abSAndroid Build Coastguard Worker
284*fb1b10abSAndroid Build Coastguard WorkerARCH_EXT_LIST="
285*fb1b10abSAndroid Build Coastguard Worker    neon_asm
286*fb1b10abSAndroid Build Coastguard Worker    ${ARCH_EXT_LIST_AARCH64}
287*fb1b10abSAndroid Build Coastguard Worker
288*fb1b10abSAndroid Build Coastguard Worker    mips32
289*fb1b10abSAndroid Build Coastguard Worker    dspr2
290*fb1b10abSAndroid Build Coastguard Worker    msa
291*fb1b10abSAndroid Build Coastguard Worker    mips64
292*fb1b10abSAndroid Build Coastguard Worker
293*fb1b10abSAndroid Build Coastguard Worker    ${ARCH_EXT_LIST_X86}
294*fb1b10abSAndroid Build Coastguard Worker
295*fb1b10abSAndroid Build Coastguard Worker    vsx
296*fb1b10abSAndroid Build Coastguard Worker
297*fb1b10abSAndroid Build Coastguard Worker    ${ARCH_EXT_LIST_LOONGSON}
298*fb1b10abSAndroid Build Coastguard Worker"
299*fb1b10abSAndroid Build Coastguard WorkerHAVE_LIST="
300*fb1b10abSAndroid Build Coastguard Worker    ${ARCH_EXT_LIST}
301*fb1b10abSAndroid Build Coastguard Worker    vpx_ports
302*fb1b10abSAndroid Build Coastguard Worker    pthread_h
303*fb1b10abSAndroid Build Coastguard Worker    unistd_h
304*fb1b10abSAndroid Build Coastguard Worker"
305*fb1b10abSAndroid Build Coastguard WorkerEXPERIMENT_LIST="
306*fb1b10abSAndroid Build Coastguard Worker    fp_mb_stats
307*fb1b10abSAndroid Build Coastguard Worker    emulate_hardware
308*fb1b10abSAndroid Build Coastguard Worker    non_greedy_mv
309*fb1b10abSAndroid Build Coastguard Worker    rate_ctrl
310*fb1b10abSAndroid Build Coastguard Worker    collect_component_timing
311*fb1b10abSAndroid Build Coastguard Worker"
312*fb1b10abSAndroid Build Coastguard WorkerCONFIG_LIST="
313*fb1b10abSAndroid Build Coastguard Worker    dependency_tracking
314*fb1b10abSAndroid Build Coastguard Worker    external_build
315*fb1b10abSAndroid Build Coastguard Worker    install_docs
316*fb1b10abSAndroid Build Coastguard Worker    install_bins
317*fb1b10abSAndroid Build Coastguard Worker    install_libs
318*fb1b10abSAndroid Build Coastguard Worker    install_srcs
319*fb1b10abSAndroid Build Coastguard Worker    debug
320*fb1b10abSAndroid Build Coastguard Worker    gprof
321*fb1b10abSAndroid Build Coastguard Worker    gcov
322*fb1b10abSAndroid Build Coastguard Worker    rvct
323*fb1b10abSAndroid Build Coastguard Worker    gcc
324*fb1b10abSAndroid Build Coastguard Worker    msvs
325*fb1b10abSAndroid Build Coastguard Worker    pic
326*fb1b10abSAndroid Build Coastguard Worker    big_endian
327*fb1b10abSAndroid Build Coastguard Worker
328*fb1b10abSAndroid Build Coastguard Worker    codec_srcs
329*fb1b10abSAndroid Build Coastguard Worker    debug_libs
330*fb1b10abSAndroid Build Coastguard Worker
331*fb1b10abSAndroid Build Coastguard Worker    dequant_tokens
332*fb1b10abSAndroid Build Coastguard Worker    dc_recon
333*fb1b10abSAndroid Build Coastguard Worker    runtime_cpu_detect
334*fb1b10abSAndroid Build Coastguard Worker    postproc
335*fb1b10abSAndroid Build Coastguard Worker    vp9_postproc
336*fb1b10abSAndroid Build Coastguard Worker    multithread
337*fb1b10abSAndroid Build Coastguard Worker    internal_stats
338*fb1b10abSAndroid Build Coastguard Worker    ${CODECS}
339*fb1b10abSAndroid Build Coastguard Worker    ${CODEC_FAMILIES}
340*fb1b10abSAndroid Build Coastguard Worker    encoders
341*fb1b10abSAndroid Build Coastguard Worker    decoders
342*fb1b10abSAndroid Build Coastguard Worker    static_msvcrt
343*fb1b10abSAndroid Build Coastguard Worker    spatial_resampling
344*fb1b10abSAndroid Build Coastguard Worker    realtime_only
345*fb1b10abSAndroid Build Coastguard Worker    onthefly_bitpacking
346*fb1b10abSAndroid Build Coastguard Worker    error_concealment
347*fb1b10abSAndroid Build Coastguard Worker    shared
348*fb1b10abSAndroid Build Coastguard Worker    static
349*fb1b10abSAndroid Build Coastguard Worker    small
350*fb1b10abSAndroid Build Coastguard Worker    postproc_visualizer
351*fb1b10abSAndroid Build Coastguard Worker    os_support
352*fb1b10abSAndroid Build Coastguard Worker    unit_tests
353*fb1b10abSAndroid Build Coastguard Worker    webm_io
354*fb1b10abSAndroid Build Coastguard Worker    libyuv
355*fb1b10abSAndroid Build Coastguard Worker    decode_perf_tests
356*fb1b10abSAndroid Build Coastguard Worker    encode_perf_tests
357*fb1b10abSAndroid Build Coastguard Worker    multi_res_encoding
358*fb1b10abSAndroid Build Coastguard Worker    temporal_denoising
359*fb1b10abSAndroid Build Coastguard Worker    vp9_temporal_denoising
360*fb1b10abSAndroid Build Coastguard Worker    coefficient_range_checking
361*fb1b10abSAndroid Build Coastguard Worker    vp9_highbitdepth
362*fb1b10abSAndroid Build Coastguard Worker    better_hw_compatibility
363*fb1b10abSAndroid Build Coastguard Worker    experimental
364*fb1b10abSAndroid Build Coastguard Worker    size_limit
365*fb1b10abSAndroid Build Coastguard Worker    always_adjust_bpm
366*fb1b10abSAndroid Build Coastguard Worker    bitstream_debug
367*fb1b10abSAndroid Build Coastguard Worker    mismatch_debug
368*fb1b10abSAndroid Build Coastguard Worker    ${EXPERIMENT_LIST}
369*fb1b10abSAndroid Build Coastguard Worker"
370*fb1b10abSAndroid Build Coastguard WorkerCMDLINE_SELECT="
371*fb1b10abSAndroid Build Coastguard Worker    dependency_tracking
372*fb1b10abSAndroid Build Coastguard Worker    external_build
373*fb1b10abSAndroid Build Coastguard Worker    extra_warnings
374*fb1b10abSAndroid Build Coastguard Worker    werror
375*fb1b10abSAndroid Build Coastguard Worker    install_docs
376*fb1b10abSAndroid Build Coastguard Worker    install_bins
377*fb1b10abSAndroid Build Coastguard Worker    install_libs
378*fb1b10abSAndroid Build Coastguard Worker    install_srcs
379*fb1b10abSAndroid Build Coastguard Worker    debug
380*fb1b10abSAndroid Build Coastguard Worker    profile
381*fb1b10abSAndroid Build Coastguard Worker    gprof
382*fb1b10abSAndroid Build Coastguard Worker    gcov
383*fb1b10abSAndroid Build Coastguard Worker    pic
384*fb1b10abSAndroid Build Coastguard Worker    optimizations
385*fb1b10abSAndroid Build Coastguard Worker    ccache
386*fb1b10abSAndroid Build Coastguard Worker    runtime_cpu_detect
387*fb1b10abSAndroid Build Coastguard Worker    thumb
388*fb1b10abSAndroid Build Coastguard Worker
389*fb1b10abSAndroid Build Coastguard Worker    libs
390*fb1b10abSAndroid Build Coastguard Worker    examples
391*fb1b10abSAndroid Build Coastguard Worker    tools
392*fb1b10abSAndroid Build Coastguard Worker    docs
393*fb1b10abSAndroid Build Coastguard Worker    libc
394*fb1b10abSAndroid Build Coastguard Worker    as
395*fb1b10abSAndroid Build Coastguard Worker    size_limit
396*fb1b10abSAndroid Build Coastguard Worker    codec_srcs
397*fb1b10abSAndroid Build Coastguard Worker    debug_libs
398*fb1b10abSAndroid Build Coastguard Worker
399*fb1b10abSAndroid Build Coastguard Worker    dequant_tokens
400*fb1b10abSAndroid Build Coastguard Worker    dc_recon
401*fb1b10abSAndroid Build Coastguard Worker    postproc
402*fb1b10abSAndroid Build Coastguard Worker    vp9_postproc
403*fb1b10abSAndroid Build Coastguard Worker    multithread
404*fb1b10abSAndroid Build Coastguard Worker    internal_stats
405*fb1b10abSAndroid Build Coastguard Worker    ${CODECS}
406*fb1b10abSAndroid Build Coastguard Worker    ${CODEC_FAMILIES}
407*fb1b10abSAndroid Build Coastguard Worker    static_msvcrt
408*fb1b10abSAndroid Build Coastguard Worker    spatial_resampling
409*fb1b10abSAndroid Build Coastguard Worker    realtime_only
410*fb1b10abSAndroid Build Coastguard Worker    onthefly_bitpacking
411*fb1b10abSAndroid Build Coastguard Worker    error_concealment
412*fb1b10abSAndroid Build Coastguard Worker    shared
413*fb1b10abSAndroid Build Coastguard Worker    static
414*fb1b10abSAndroid Build Coastguard Worker    small
415*fb1b10abSAndroid Build Coastguard Worker    postproc_visualizer
416*fb1b10abSAndroid Build Coastguard Worker    unit_tests
417*fb1b10abSAndroid Build Coastguard Worker    webm_io
418*fb1b10abSAndroid Build Coastguard Worker    libyuv
419*fb1b10abSAndroid Build Coastguard Worker    decode_perf_tests
420*fb1b10abSAndroid Build Coastguard Worker    encode_perf_tests
421*fb1b10abSAndroid Build Coastguard Worker    multi_res_encoding
422*fb1b10abSAndroid Build Coastguard Worker    temporal_denoising
423*fb1b10abSAndroid Build Coastguard Worker    vp9_temporal_denoising
424*fb1b10abSAndroid Build Coastguard Worker    coefficient_range_checking
425*fb1b10abSAndroid Build Coastguard Worker    better_hw_compatibility
426*fb1b10abSAndroid Build Coastguard Worker    vp9_highbitdepth
427*fb1b10abSAndroid Build Coastguard Worker    experimental
428*fb1b10abSAndroid Build Coastguard Worker    always_adjust_bpm
429*fb1b10abSAndroid Build Coastguard Worker    bitstream_debug
430*fb1b10abSAndroid Build Coastguard Worker    mismatch_debug
431*fb1b10abSAndroid Build Coastguard Worker"
432*fb1b10abSAndroid Build Coastguard Worker
433*fb1b10abSAndroid Build Coastguard Workerprocess_cmdline() {
434*fb1b10abSAndroid Build Coastguard Worker    for opt do
435*fb1b10abSAndroid Build Coastguard Worker        optval="${opt#*=}"
436*fb1b10abSAndroid Build Coastguard Worker        case "$opt" in
437*fb1b10abSAndroid Build Coastguard Worker        --disable-codecs)
438*fb1b10abSAndroid Build Coastguard Worker          for c in ${CODEC_FAMILIES}; do disable_codec $c; done
439*fb1b10abSAndroid Build Coastguard Worker          ;;
440*fb1b10abSAndroid Build Coastguard Worker        --enable-?*|--disable-?*)
441*fb1b10abSAndroid Build Coastguard Worker        eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
442*fb1b10abSAndroid Build Coastguard Worker        if is_in ${option} ${EXPERIMENT_LIST}; then
443*fb1b10abSAndroid Build Coastguard Worker            if enabled experimental; then
444*fb1b10abSAndroid Build Coastguard Worker                ${action}_feature $option
445*fb1b10abSAndroid Build Coastguard Worker            else
446*fb1b10abSAndroid Build Coastguard Worker                log_echo "Ignoring $opt -- not in experimental mode."
447*fb1b10abSAndroid Build Coastguard Worker            fi
448*fb1b10abSAndroid Build Coastguard Worker        elif is_in ${option} "${CODECS} ${CODEC_FAMILIES}"; then
449*fb1b10abSAndroid Build Coastguard Worker            ${action}_codec ${option}
450*fb1b10abSAndroid Build Coastguard Worker        else
451*fb1b10abSAndroid Build Coastguard Worker            process_common_cmdline $opt
452*fb1b10abSAndroid Build Coastguard Worker        fi
453*fb1b10abSAndroid Build Coastguard Worker        ;;
454*fb1b10abSAndroid Build Coastguard Worker        *) process_common_cmdline "$opt"
455*fb1b10abSAndroid Build Coastguard Worker        ;;
456*fb1b10abSAndroid Build Coastguard Worker        esac
457*fb1b10abSAndroid Build Coastguard Worker    done
458*fb1b10abSAndroid Build Coastguard Worker}
459*fb1b10abSAndroid Build Coastguard Worker
460*fb1b10abSAndroid Build Coastguard Workerpost_process_cmdline() {
461*fb1b10abSAndroid Build Coastguard Worker    if enabled coefficient_range_checking; then
462*fb1b10abSAndroid Build Coastguard Worker      echo "coefficient-range-checking is for decoders only, disabling encoders:"
463*fb1b10abSAndroid Build Coastguard Worker      soft_disable vp8_encoder
464*fb1b10abSAndroid Build Coastguard Worker      soft_disable vp9_encoder
465*fb1b10abSAndroid Build Coastguard Worker    fi
466*fb1b10abSAndroid Build Coastguard Worker
467*fb1b10abSAndroid Build Coastguard Worker    c=""
468*fb1b10abSAndroid Build Coastguard Worker
469*fb1b10abSAndroid Build Coastguard Worker    # Enable all detected codecs, if they haven't been disabled
470*fb1b10abSAndroid Build Coastguard Worker    for c in ${CODECS}; do soft_enable $c; done
471*fb1b10abSAndroid Build Coastguard Worker
472*fb1b10abSAndroid Build Coastguard Worker    # Enable the codec family if any component of that family is enabled
473*fb1b10abSAndroid Build Coastguard Worker    for c in ${CODECS}; do
474*fb1b10abSAndroid Build Coastguard Worker        enabled $c && enable_feature ${c%_*}
475*fb1b10abSAndroid Build Coastguard Worker    done
476*fb1b10abSAndroid Build Coastguard Worker
477*fb1b10abSAndroid Build Coastguard Worker    # Set the {en,de}coders variable if any algorithm in that class is enabled
478*fb1b10abSAndroid Build Coastguard Worker    for c in ${CODECS}; do
479*fb1b10abSAndroid Build Coastguard Worker        enabled ${c} && enable_feature ${c##*_}s
480*fb1b10abSAndroid Build Coastguard Worker    done
481*fb1b10abSAndroid Build Coastguard Worker}
482*fb1b10abSAndroid Build Coastguard Worker
483*fb1b10abSAndroid Build Coastguard Worker
484*fb1b10abSAndroid Build Coastguard Workerprocess_targets() {
485*fb1b10abSAndroid Build Coastguard Worker    enabled child || write_common_config_banner
486*fb1b10abSAndroid Build Coastguard Worker    write_common_target_config_h ${BUILD_PFX}vpx_config.h
487*fb1b10abSAndroid Build Coastguard Worker    write_common_config_targets
488*fb1b10abSAndroid Build Coastguard Worker    enabled win_arm64_neon_h_workaround && write_win_arm64_neon_h_workaround ${BUILD_PFX}arm_neon.h
489*fb1b10abSAndroid Build Coastguard Worker
490*fb1b10abSAndroid Build Coastguard Worker    # Calculate the default distribution name, based on the enabled features
491*fb1b10abSAndroid Build Coastguard Worker    cf=""
492*fb1b10abSAndroid Build Coastguard Worker    DIST_DIR=vpx
493*fb1b10abSAndroid Build Coastguard Worker    for cf in $CODEC_FAMILIES; do
494*fb1b10abSAndroid Build Coastguard Worker        if enabled ${cf}_encoder && enabled ${cf}_decoder; then
495*fb1b10abSAndroid Build Coastguard Worker            DIST_DIR="${DIST_DIR}-${cf}"
496*fb1b10abSAndroid Build Coastguard Worker        elif enabled ${cf}_encoder; then
497*fb1b10abSAndroid Build Coastguard Worker            DIST_DIR="${DIST_DIR}-${cf}cx"
498*fb1b10abSAndroid Build Coastguard Worker        elif enabled ${cf}_decoder; then
499*fb1b10abSAndroid Build Coastguard Worker            DIST_DIR="${DIST_DIR}-${cf}dx"
500*fb1b10abSAndroid Build Coastguard Worker        fi
501*fb1b10abSAndroid Build Coastguard Worker    done
502*fb1b10abSAndroid Build Coastguard Worker    enabled debug_libs && DIST_DIR="${DIST_DIR}-debug"
503*fb1b10abSAndroid Build Coastguard Worker    enabled codec_srcs && DIST_DIR="${DIST_DIR}-src"
504*fb1b10abSAndroid Build Coastguard Worker    ! enabled postproc && ! enabled vp9_postproc && DIST_DIR="${DIST_DIR}-nopost"
505*fb1b10abSAndroid Build Coastguard Worker    ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt"
506*fb1b10abSAndroid Build Coastguard Worker    ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs"
507*fb1b10abSAndroid Build Coastguard Worker    DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}"
508*fb1b10abSAndroid Build Coastguard Worker    case "${tgt_os}" in
509*fb1b10abSAndroid Build Coastguard Worker    win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md"
510*fb1b10abSAndroid Build Coastguard Worker          DIST_DIR="${DIST_DIR}-${tgt_cc}"
511*fb1b10abSAndroid Build Coastguard Worker          ;;
512*fb1b10abSAndroid Build Coastguard Worker    esac
513*fb1b10abSAndroid Build Coastguard Worker    if [ -f "${source_path}/build/make/version.sh" ]; then
514*fb1b10abSAndroid Build Coastguard Worker        ver=`"$source_path/build/make/version.sh" --bare "$source_path"`
515*fb1b10abSAndroid Build Coastguard Worker        DIST_DIR="${DIST_DIR}-${ver}"
516*fb1b10abSAndroid Build Coastguard Worker        VERSION_STRING=${ver}
517*fb1b10abSAndroid Build Coastguard Worker        ver=${ver%%-*}
518*fb1b10abSAndroid Build Coastguard Worker        VERSION_PATCH=${ver##*.}
519*fb1b10abSAndroid Build Coastguard Worker        ver=${ver%.*}
520*fb1b10abSAndroid Build Coastguard Worker        VERSION_MINOR=${ver##*.}
521*fb1b10abSAndroid Build Coastguard Worker        ver=${ver#v}
522*fb1b10abSAndroid Build Coastguard Worker        VERSION_MAJOR=${ver%.*}
523*fb1b10abSAndroid Build Coastguard Worker    fi
524*fb1b10abSAndroid Build Coastguard Worker    enabled child || cat <<EOF >> config.mk
525*fb1b10abSAndroid Build Coastguard Worker
526*fb1b10abSAndroid Build Coastguard WorkerPREFIX=${prefix}
527*fb1b10abSAndroid Build Coastguard Workerifeq (\$(MAKECMDGOALS),dist)
528*fb1b10abSAndroid Build Coastguard WorkerDIST_DIR?=${DIST_DIR}
529*fb1b10abSAndroid Build Coastguard Workerelse
530*fb1b10abSAndroid Build Coastguard WorkerDIST_DIR?=\$(DESTDIR)${prefix}
531*fb1b10abSAndroid Build Coastguard Workerendif
532*fb1b10abSAndroid Build Coastguard WorkerLIBSUBDIR=${libdir##${prefix}/}
533*fb1b10abSAndroid Build Coastguard Worker
534*fb1b10abSAndroid Build Coastguard WorkerVERSION_STRING=${VERSION_STRING}
535*fb1b10abSAndroid Build Coastguard Worker
536*fb1b10abSAndroid Build Coastguard WorkerVERSION_MAJOR=${VERSION_MAJOR}
537*fb1b10abSAndroid Build Coastguard WorkerVERSION_MINOR=${VERSION_MINOR}
538*fb1b10abSAndroid Build Coastguard WorkerVERSION_PATCH=${VERSION_PATCH}
539*fb1b10abSAndroid Build Coastguard Worker
540*fb1b10abSAndroid Build Coastguard WorkerCONFIGURE_ARGS=${CONFIGURE_ARGS}
541*fb1b10abSAndroid Build Coastguard WorkerEOF
542*fb1b10abSAndroid Build Coastguard Worker    enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk
543*fb1b10abSAndroid Build Coastguard Worker
544*fb1b10abSAndroid Build Coastguard Worker    #
545*fb1b10abSAndroid Build Coastguard Worker    # Write makefiles for all enabled targets
546*fb1b10abSAndroid Build Coastguard Worker    #
547*fb1b10abSAndroid Build Coastguard Worker    for tgt in libs examples tools docs solution; do
548*fb1b10abSAndroid Build Coastguard Worker        tgt_fn="$tgt-$toolchain.mk"
549*fb1b10abSAndroid Build Coastguard Worker
550*fb1b10abSAndroid Build Coastguard Worker        if enabled $tgt; then
551*fb1b10abSAndroid Build Coastguard Worker            echo "Creating makefiles for ${toolchain} ${tgt}"
552*fb1b10abSAndroid Build Coastguard Worker            write_common_target_config_mk $tgt_fn ${BUILD_PFX}vpx_config.h
553*fb1b10abSAndroid Build Coastguard Worker            #write_${tgt}_config
554*fb1b10abSAndroid Build Coastguard Worker        fi
555*fb1b10abSAndroid Build Coastguard Worker    done
556*fb1b10abSAndroid Build Coastguard Worker
557*fb1b10abSAndroid Build Coastguard Worker}
558*fb1b10abSAndroid Build Coastguard Worker
559*fb1b10abSAndroid Build Coastguard Workerprocess_detect() {
560*fb1b10abSAndroid Build Coastguard Worker    if enabled shared; then
561*fb1b10abSAndroid Build Coastguard Worker        # Can only build shared libs on a subset of platforms. Doing this check
562*fb1b10abSAndroid Build Coastguard Worker        # here rather than at option parse time because the target auto-detect
563*fb1b10abSAndroid Build Coastguard Worker        # magic happens after the command line has been parsed.
564*fb1b10abSAndroid Build Coastguard Worker        case "${tgt_os}" in
565*fb1b10abSAndroid Build Coastguard Worker        linux|os2|solaris|darwin*|iphonesimulator*)
566*fb1b10abSAndroid Build Coastguard Worker            # Supported platforms
567*fb1b10abSAndroid Build Coastguard Worker            ;;
568*fb1b10abSAndroid Build Coastguard Worker        *)
569*fb1b10abSAndroid Build Coastguard Worker            if enabled gnu; then
570*fb1b10abSAndroid Build Coastguard Worker                echo "--enable-shared is only supported on ELF; assuming this is OK"
571*fb1b10abSAndroid Build Coastguard Worker            else
572*fb1b10abSAndroid Build Coastguard Worker                die "--enable-shared only supported on ELF, OS/2, and Darwin for now"
573*fb1b10abSAndroid Build Coastguard Worker            fi
574*fb1b10abSAndroid Build Coastguard Worker            ;;
575*fb1b10abSAndroid Build Coastguard Worker        esac
576*fb1b10abSAndroid Build Coastguard Worker    fi
577*fb1b10abSAndroid Build Coastguard Worker    if [ -z "$CC" ] || enabled external_build; then
578*fb1b10abSAndroid Build Coastguard Worker        echo "Bypassing toolchain for environment detection."
579*fb1b10abSAndroid Build Coastguard Worker        enable_feature external_build
580*fb1b10abSAndroid Build Coastguard Worker        check_header() {
581*fb1b10abSAndroid Build Coastguard Worker            log fake_check_header "$@"
582*fb1b10abSAndroid Build Coastguard Worker            header=$1
583*fb1b10abSAndroid Build Coastguard Worker            shift
584*fb1b10abSAndroid Build Coastguard Worker            var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
585*fb1b10abSAndroid Build Coastguard Worker            disable_feature $var
586*fb1b10abSAndroid Build Coastguard Worker            # Headers common to all environments
587*fb1b10abSAndroid Build Coastguard Worker            case $header in
588*fb1b10abSAndroid Build Coastguard Worker                stdio.h)
589*fb1b10abSAndroid Build Coastguard Worker                    true;
590*fb1b10abSAndroid Build Coastguard Worker                ;;
591*fb1b10abSAndroid Build Coastguard Worker                *)
592*fb1b10abSAndroid Build Coastguard Worker                    result=false
593*fb1b10abSAndroid Build Coastguard Worker                    for d in "$@"; do
594*fb1b10abSAndroid Build Coastguard Worker                        [ -f "${d##-I}/$header" ] && result=true && break
595*fb1b10abSAndroid Build Coastguard Worker                    done
596*fb1b10abSAndroid Build Coastguard Worker                    ${result:-true}
597*fb1b10abSAndroid Build Coastguard Worker            esac && enable_feature $var
598*fb1b10abSAndroid Build Coastguard Worker
599*fb1b10abSAndroid Build Coastguard Worker            # Specialize windows and POSIX environments.
600*fb1b10abSAndroid Build Coastguard Worker            case $toolchain in
601*fb1b10abSAndroid Build Coastguard Worker                *-win*-*)
602*fb1b10abSAndroid Build Coastguard Worker                    # Don't check for any headers in Windows builds.
603*fb1b10abSAndroid Build Coastguard Worker                    false
604*fb1b10abSAndroid Build Coastguard Worker                ;;
605*fb1b10abSAndroid Build Coastguard Worker                *)
606*fb1b10abSAndroid Build Coastguard Worker                    case $header in
607*fb1b10abSAndroid Build Coastguard Worker                        pthread.h) true;;
608*fb1b10abSAndroid Build Coastguard Worker                        unistd.h) true;;
609*fb1b10abSAndroid Build Coastguard Worker                        *) false;;
610*fb1b10abSAndroid Build Coastguard Worker                    esac && enable_feature $var
611*fb1b10abSAndroid Build Coastguard Worker            esac
612*fb1b10abSAndroid Build Coastguard Worker            enabled $var
613*fb1b10abSAndroid Build Coastguard Worker        }
614*fb1b10abSAndroid Build Coastguard Worker        check_ld() {
615*fb1b10abSAndroid Build Coastguard Worker            true
616*fb1b10abSAndroid Build Coastguard Worker        }
617*fb1b10abSAndroid Build Coastguard Worker        check_lib() {
618*fb1b10abSAndroid Build Coastguard Worker            true
619*fb1b10abSAndroid Build Coastguard Worker        }
620*fb1b10abSAndroid Build Coastguard Worker    fi
621*fb1b10abSAndroid Build Coastguard Worker    check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}"
622*fb1b10abSAndroid Build Coastguard Worker    check_ld <<EOF || die "Toolchain is unable to link executables"
623*fb1b10abSAndroid Build Coastguard Workerint main(void) {return 0;}
624*fb1b10abSAndroid Build Coastguard WorkerEOF
625*fb1b10abSAndroid Build Coastguard Worker    # check system headers
626*fb1b10abSAndroid Build Coastguard Worker
627*fb1b10abSAndroid Build Coastguard Worker    # Use both check_header and check_lib here, since check_lib
628*fb1b10abSAndroid Build Coastguard Worker    # could be a stub that always returns true.
629*fb1b10abSAndroid Build Coastguard Worker    check_header pthread.h && check_lib -lpthread <<EOF || disable_feature pthread_h
630*fb1b10abSAndroid Build Coastguard Worker#include <pthread.h>
631*fb1b10abSAndroid Build Coastguard Worker#include <stddef.h>
632*fb1b10abSAndroid Build Coastguard Workerint main(void) { return pthread_create(NULL, NULL, NULL, NULL); }
633*fb1b10abSAndroid Build Coastguard WorkerEOF
634*fb1b10abSAndroid Build Coastguard Worker    check_header unistd.h # for sysconf(3) and friends.
635*fb1b10abSAndroid Build Coastguard Worker
636*fb1b10abSAndroid Build Coastguard Worker    check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports
637*fb1b10abSAndroid Build Coastguard Worker
638*fb1b10abSAndroid Build Coastguard Worker    if enabled neon && ! enabled external_build; then
639*fb1b10abSAndroid Build Coastguard Worker      check_header arm_neon.h || die "Unable to find arm_neon.h"
640*fb1b10abSAndroid Build Coastguard Worker    fi
641*fb1b10abSAndroid Build Coastguard Worker}
642*fb1b10abSAndroid Build Coastguard Worker
643*fb1b10abSAndroid Build Coastguard Workerprocess_toolchain() {
644*fb1b10abSAndroid Build Coastguard Worker    process_common_toolchain
645*fb1b10abSAndroid Build Coastguard Worker
646*fb1b10abSAndroid Build Coastguard Worker    # Enable some useful compiler flags
647*fb1b10abSAndroid Build Coastguard Worker    if enabled gcc; then
648*fb1b10abSAndroid Build Coastguard Worker        enabled werror && check_add_cflags -Werror
649*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wall
650*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wdisabled-optimization
651*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wextra-semi
652*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wextra-semi-stmt
653*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wfloat-conversion
654*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wformat=2
655*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wparentheses-equality
656*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wpointer-arith
657*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wtype-limits
658*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wcast-qual
659*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wvla
660*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wimplicit-function-declaration
661*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wmissing-declarations
662*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wmissing-prototypes
663*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wshadow
664*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wstrict-prototypes
665*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wuninitialized
666*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wunreachable-code-aggressive
667*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wunused
668*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wextra
669*fb1b10abSAndroid Build Coastguard Worker        # check_add_cflags also adds to cxxflags. gtest does not do well with
670*fb1b10abSAndroid Build Coastguard Worker        # these flags so add them explicitly to CFLAGS only.
671*fb1b10abSAndroid Build Coastguard Worker        check_cflags -Wundef && add_cflags_only -Wundef
672*fb1b10abSAndroid Build Coastguard Worker        check_cflags -Wframe-larger-than=52000 && \
673*fb1b10abSAndroid Build Coastguard Worker          add_cflags_only -Wframe-larger-than=52000
674*fb1b10abSAndroid Build Coastguard Worker        if enabled mips || [ -z "${INLINE}" ]; then
675*fb1b10abSAndroid Build Coastguard Worker          enabled extra_warnings || check_add_cflags -Wno-unused-function
676*fb1b10abSAndroid Build Coastguard Worker        fi
677*fb1b10abSAndroid Build Coastguard Worker        # Enforce C99 for C files. Allow GNU extensions.
678*fb1b10abSAndroid Build Coastguard Worker        check_cflags -std=gnu99 && add_cflags_only -std=gnu99
679*fb1b10abSAndroid Build Coastguard Worker        # Avoid this warning for third_party C++ sources. Some reorganization
680*fb1b10abSAndroid Build Coastguard Worker        # would be needed to apply this only to test/*.cc.
681*fb1b10abSAndroid Build Coastguard Worker        check_cflags -Wshorten-64-to-32 && add_cflags_only -Wshorten-64-to-32
682*fb1b10abSAndroid Build Coastguard Worker
683*fb1b10abSAndroid Build Coastguard Worker        # Do not allow implicit vector type conversions on Clang builds (this
684*fb1b10abSAndroid Build Coastguard Worker        # is already the default on GCC builds).
685*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -flax-vector-conversions=none
686*fb1b10abSAndroid Build Coastguard Worker
687*fb1b10abSAndroid Build Coastguard Worker        # Quiet gcc 6 vs 7 abi warnings:
688*fb1b10abSAndroid Build Coastguard Worker        # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
689*fb1b10abSAndroid Build Coastguard Worker        if enabled arm; then
690*fb1b10abSAndroid Build Coastguard Worker          check_add_cxxflags -Wno-psabi
691*fb1b10abSAndroid Build Coastguard Worker        fi
692*fb1b10abSAndroid Build Coastguard Worker
693*fb1b10abSAndroid Build Coastguard Worker        # Enforce C++11 compatibility.
694*fb1b10abSAndroid Build Coastguard Worker        check_add_cxxflags -Wc++14-extensions
695*fb1b10abSAndroid Build Coastguard Worker        check_add_cxxflags -Wc++17-extensions
696*fb1b10abSAndroid Build Coastguard Worker        check_add_cxxflags -Wc++20-extensions
697*fb1b10abSAndroid Build Coastguard Worker        check_add_cxxflags -Wnon-virtual-dtor
698*fb1b10abSAndroid Build Coastguard Worker
699*fb1b10abSAndroid Build Coastguard Worker        # disable some warnings specific to libyuv / libwebm.
700*fb1b10abSAndroid Build Coastguard Worker        check_cxxflags -Wno-missing-declarations \
701*fb1b10abSAndroid Build Coastguard Worker          && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-missing-declarations"
702*fb1b10abSAndroid Build Coastguard Worker        check_cxxflags -Wno-missing-prototypes \
703*fb1b10abSAndroid Build Coastguard Worker          && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-missing-prototypes"
704*fb1b10abSAndroid Build Coastguard Worker        check_cxxflags -Wno-pass-failed \
705*fb1b10abSAndroid Build Coastguard Worker          && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-pass-failed"
706*fb1b10abSAndroid Build Coastguard Worker        check_cxxflags -Wno-shadow \
707*fb1b10abSAndroid Build Coastguard Worker          && LIBWEBM_CXXFLAGS="${LIBWEBM_CXXFLAGS} -Wno-shadow" \
708*fb1b10abSAndroid Build Coastguard Worker          && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-shadow"
709*fb1b10abSAndroid Build Coastguard Worker        check_cxxflags -Wno-unused-parameter \
710*fb1b10abSAndroid Build Coastguard Worker          && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-unused-parameter"
711*fb1b10abSAndroid Build Coastguard Worker    fi
712*fb1b10abSAndroid Build Coastguard Worker
713*fb1b10abSAndroid Build Coastguard Worker    if enabled icc; then
714*fb1b10abSAndroid Build Coastguard Worker        enabled werror && check_add_cflags -Werror
715*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wall
716*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags -Wpointer-arith
717*fb1b10abSAndroid Build Coastguard Worker
718*fb1b10abSAndroid Build Coastguard Worker        # ICC has a number of floating point optimizations that we disable
719*fb1b10abSAndroid Build Coastguard Worker        # in favor of deterministic output WRT to other compilers
720*fb1b10abSAndroid Build Coastguard Worker        add_cflags -fp-model precise
721*fb1b10abSAndroid Build Coastguard Worker    fi
722*fb1b10abSAndroid Build Coastguard Worker
723*fb1b10abSAndroid Build Coastguard Worker    # Enable extra, harmless warnings. These might provide additional insight
724*fb1b10abSAndroid Build Coastguard Worker    # to what the compiler is doing and why, but in general, but they shouldn't
725*fb1b10abSAndroid Build Coastguard Worker    # be treated as fatal, even if we're treating warnings as errors.
726*fb1b10abSAndroid Build Coastguard Worker    GCC_EXTRA_WARNINGS="
727*fb1b10abSAndroid Build Coastguard Worker        -Wdisabled-optimization
728*fb1b10abSAndroid Build Coastguard Worker        -Winline
729*fb1b10abSAndroid Build Coastguard Worker    "
730*fb1b10abSAndroid Build Coastguard Worker    enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}"
731*fb1b10abSAndroid Build Coastguard Worker    RVCT_EXTRA_WARNINGS="
732*fb1b10abSAndroid Build Coastguard Worker        --remarks
733*fb1b10abSAndroid Build Coastguard Worker    "
734*fb1b10abSAndroid Build Coastguard Worker    enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}"
735*fb1b10abSAndroid Build Coastguard Worker    if enabled extra_warnings; then
736*fb1b10abSAndroid Build Coastguard Worker        for w in ${EXTRA_WARNINGS}; do
737*fb1b10abSAndroid Build Coastguard Worker            check_add_cflags ${w}
738*fb1b10abSAndroid Build Coastguard Worker            enabled gcc && enabled werror && check_add_cflags -Wno-error=${w}
739*fb1b10abSAndroid Build Coastguard Worker        done
740*fb1b10abSAndroid Build Coastguard Worker    fi
741*fb1b10abSAndroid Build Coastguard Worker
742*fb1b10abSAndroid Build Coastguard Worker    # ccache only really works on gcc toolchains
743*fb1b10abSAndroid Build Coastguard Worker    enabled gcc || soft_disable ccache
744*fb1b10abSAndroid Build Coastguard Worker    if enabled mips; then
745*fb1b10abSAndroid Build Coastguard Worker        enable_feature dequant_tokens
746*fb1b10abSAndroid Build Coastguard Worker        enable_feature dc_recon
747*fb1b10abSAndroid Build Coastguard Worker    fi
748*fb1b10abSAndroid Build Coastguard Worker
749*fb1b10abSAndroid Build Coastguard Worker    if enabled internal_stats; then
750*fb1b10abSAndroid Build Coastguard Worker        enable_feature vp9_postproc
751*fb1b10abSAndroid Build Coastguard Worker    fi
752*fb1b10abSAndroid Build Coastguard Worker
753*fb1b10abSAndroid Build Coastguard Worker    # Enable the postbuild target if building for visual studio.
754*fb1b10abSAndroid Build Coastguard Worker    case "$tgt_cc" in
755*fb1b10abSAndroid Build Coastguard Worker        vs*) enable_feature msvs
756*fb1b10abSAndroid Build Coastguard Worker             enable_feature solution
757*fb1b10abSAndroid Build Coastguard Worker             vs_version=${tgt_cc##vs}
758*fb1b10abSAndroid Build Coastguard Worker             VCPROJ_SFX=vcxproj
759*fb1b10abSAndroid Build Coastguard Worker             gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh
760*fb1b10abSAndroid Build Coastguard Worker             enabled werror && gen_vcproj_cmd="${gen_vcproj_cmd} --enable-werror"
761*fb1b10abSAndroid Build Coastguard Worker             all_targets="${all_targets} solution"
762*fb1b10abSAndroid Build Coastguard Worker             INLINE="__inline"
763*fb1b10abSAndroid Build Coastguard Worker        ;;
764*fb1b10abSAndroid Build Coastguard Worker    esac
765*fb1b10abSAndroid Build Coastguard Worker
766*fb1b10abSAndroid Build Coastguard Worker    # Other toolchain specific defaults
767*fb1b10abSAndroid Build Coastguard Worker    case $toolchain in x86*) soft_enable postproc;; esac
768*fb1b10abSAndroid Build Coastguard Worker
769*fb1b10abSAndroid Build Coastguard Worker    if enabled postproc_visualizer; then
770*fb1b10abSAndroid Build Coastguard Worker        enabled postproc || die "postproc_visualizer requires postproc to be enabled"
771*fb1b10abSAndroid Build Coastguard Worker    fi
772*fb1b10abSAndroid Build Coastguard Worker
773*fb1b10abSAndroid Build Coastguard Worker    # Enable unit tests by default if we have a working C++ compiler.
774*fb1b10abSAndroid Build Coastguard Worker    case "$toolchain" in
775*fb1b10abSAndroid Build Coastguard Worker        *-vs*)
776*fb1b10abSAndroid Build Coastguard Worker            soft_enable unit_tests
777*fb1b10abSAndroid Build Coastguard Worker            soft_enable webm_io
778*fb1b10abSAndroid Build Coastguard Worker            soft_enable libyuv
779*fb1b10abSAndroid Build Coastguard Worker        ;;
780*fb1b10abSAndroid Build Coastguard Worker        *-android-*)
781*fb1b10abSAndroid Build Coastguard Worker            check_add_cxxflags -std=gnu++11 && soft_enable webm_io
782*fb1b10abSAndroid Build Coastguard Worker            soft_enable libyuv
783*fb1b10abSAndroid Build Coastguard Worker            # GTestLog must be modified to use Android logging utilities.
784*fb1b10abSAndroid Build Coastguard Worker        ;;
785*fb1b10abSAndroid Build Coastguard Worker        *-darwin-*)
786*fb1b10abSAndroid Build Coastguard Worker            check_add_cxxflags -std=gnu++11
787*fb1b10abSAndroid Build Coastguard Worker            # iOS/ARM builds do not work with gtest. This does not match
788*fb1b10abSAndroid Build Coastguard Worker            # x86 targets.
789*fb1b10abSAndroid Build Coastguard Worker        ;;
790*fb1b10abSAndroid Build Coastguard Worker        *-iphonesimulator-*)
791*fb1b10abSAndroid Build Coastguard Worker            check_add_cxxflags -std=gnu++11 && soft_enable webm_io
792*fb1b10abSAndroid Build Coastguard Worker            soft_enable libyuv
793*fb1b10abSAndroid Build Coastguard Worker        ;;
794*fb1b10abSAndroid Build Coastguard Worker        *-win*)
795*fb1b10abSAndroid Build Coastguard Worker            # Some mingw toolchains don't have pthread available by default.
796*fb1b10abSAndroid Build Coastguard Worker            # Treat these more like visual studio where threading in gtest
797*fb1b10abSAndroid Build Coastguard Worker            # would be disabled for the same reason.
798*fb1b10abSAndroid Build Coastguard Worker            check_add_cxxflags -std=gnu++11 && soft_enable unit_tests \
799*fb1b10abSAndroid Build Coastguard Worker              && soft_enable webm_io
800*fb1b10abSAndroid Build Coastguard Worker            check_cxx "$@" <<EOF && soft_enable libyuv
801*fb1b10abSAndroid Build Coastguard Workerint z;
802*fb1b10abSAndroid Build Coastguard WorkerEOF
803*fb1b10abSAndroid Build Coastguard Worker        ;;
804*fb1b10abSAndroid Build Coastguard Worker        *)
805*fb1b10abSAndroid Build Coastguard Worker            enabled pthread_h && check_add_cxxflags -std=gnu++11 \
806*fb1b10abSAndroid Build Coastguard Worker              && soft_enable unit_tests
807*fb1b10abSAndroid Build Coastguard Worker            check_add_cxxflags -std=gnu++11 && soft_enable webm_io
808*fb1b10abSAndroid Build Coastguard Worker            check_cxx "$@" <<EOF && soft_enable libyuv
809*fb1b10abSAndroid Build Coastguard Workerint z;
810*fb1b10abSAndroid Build Coastguard WorkerEOF
811*fb1b10abSAndroid Build Coastguard Worker        ;;
812*fb1b10abSAndroid Build Coastguard Worker    esac
813*fb1b10abSAndroid Build Coastguard Worker    # libwebm needs to be linked with C++ standard library
814*fb1b10abSAndroid Build Coastguard Worker    enabled webm_io && LD=${CXX}
815*fb1b10abSAndroid Build Coastguard Worker
816*fb1b10abSAndroid Build Coastguard Worker    # append any user defined extra cflags
817*fb1b10abSAndroid Build Coastguard Worker    if [ -n "${extra_cflags}" ] ; then
818*fb1b10abSAndroid Build Coastguard Worker        check_add_cflags ${extra_cflags} || \
819*fb1b10abSAndroid Build Coastguard Worker        die "Requested extra CFLAGS '${extra_cflags}' not supported by compiler"
820*fb1b10abSAndroid Build Coastguard Worker    fi
821*fb1b10abSAndroid Build Coastguard Worker    if [ -n "${extra_cxxflags}" ]; then
822*fb1b10abSAndroid Build Coastguard Worker        check_add_cxxflags ${extra_cxxflags} || \
823*fb1b10abSAndroid Build Coastguard Worker        die "Requested extra CXXFLAGS '${extra_cxxflags}' not supported by compiler"
824*fb1b10abSAndroid Build Coastguard Worker    fi
825*fb1b10abSAndroid Build Coastguard Worker}
826*fb1b10abSAndroid Build Coastguard Worker
827*fb1b10abSAndroid Build Coastguard Worker
828*fb1b10abSAndroid Build Coastguard Worker##
829*fb1b10abSAndroid Build Coastguard Worker## END APPLICATION SPECIFIC CONFIGURATION
830*fb1b10abSAndroid Build Coastguard Worker##
831*fb1b10abSAndroid Build Coastguard WorkerCONFIGURE_ARGS="$@"
832*fb1b10abSAndroid Build Coastguard Workerprocess "$@"
833*fb1b10abSAndroid Build Coastguard Workerprint_webm_license ${BUILD_PFX}vpx_config.c "/*" " */"
834*fb1b10abSAndroid Build Coastguard Workercat <<EOF >> ${BUILD_PFX}vpx_config.c
835*fb1b10abSAndroid Build Coastguard Worker#include "vpx/vpx_codec.h"
836*fb1b10abSAndroid Build Coastguard Workerstatic const char* const cfg = "$CONFIGURE_ARGS";
837*fb1b10abSAndroid Build Coastguard Workerconst char *vpx_codec_build_config(void) {return cfg;}
838*fb1b10abSAndroid Build Coastguard WorkerEOF
839