xref: /aosp_15_r20/external/libvpx/generate_config.sh (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker#!/bin/bash -e
2*fb1b10abSAndroid Build Coastguard Worker#
3*fb1b10abSAndroid Build Coastguard Worker# Copyright (c) 2012 The Chromium Authors. All rights reserved.
4*fb1b10abSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
5*fb1b10abSAndroid Build Coastguard Worker# found in the LICENSE file.
6*fb1b10abSAndroid Build Coastguard Worker
7*fb1b10abSAndroid Build Coastguard Worker# This script is used to generate files in the <platform> directories needed to
8*fb1b10abSAndroid Build Coastguard Worker# build libvpx. Every time libvpx source code is updated run this script.
9*fb1b10abSAndroid Build Coastguard Worker#
10*fb1b10abSAndroid Build Coastguard Worker# The script depends on the bpfmt tool, which may need to be built with
11*fb1b10abSAndroid Build Coastguard Worker# m -j blueprint_tools
12*fb1b10abSAndroid Build Coastguard Worker#
13*fb1b10abSAndroid Build Coastguard Worker# For example, from the top of an Android tree:
14*fb1b10abSAndroid Build Coastguard Worker# $ source build/envsetup.sh
15*fb1b10abSAndroid Build Coastguard Worker# $ m -j blueprint_tools
16*fb1b10abSAndroid Build Coastguard Worker# $ external/libvpx/generate_config.sh
17*fb1b10abSAndroid Build Coastguard Worker#
18*fb1b10abSAndroid Build Coastguard Worker# And this will update all the config files needed.
19*fb1b10abSAndroid Build Coastguard Worker
20*fb1b10abSAndroid Build Coastguard Workerexport LC_ALL=C
21*fb1b10abSAndroid Build Coastguard Workercd $(dirname $0)
22*fb1b10abSAndroid Build Coastguard WorkerBASE_DIR=$(pwd)
23*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SRC_DIR="."
24*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_CONFIG_DIR="config"
25*fb1b10abSAndroid Build Coastguard Worker
26*fb1b10abSAndroid Build Coastguard Worker# Clean files from previous make.
27*fb1b10abSAndroid Build Coastguard Workerfunction make_clean {
28*fb1b10abSAndroid Build Coastguard Worker  make clean > /dev/null
29*fb1b10abSAndroid Build Coastguard Worker  rm -f libvpx_srcs.txt
30*fb1b10abSAndroid Build Coastguard Worker}
31*fb1b10abSAndroid Build Coastguard Worker
32*fb1b10abSAndroid Build Coastguard Worker# Lint a pair of vpx_config.h and vpx_config.asm to make sure they match.
33*fb1b10abSAndroid Build Coastguard Worker# $1 - Header file directory.
34*fb1b10abSAndroid Build Coastguard Workerfunction lint_config {
35*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/lint_config.sh \
36*fb1b10abSAndroid Build Coastguard Worker    -h $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_config.h \
37*fb1b10abSAndroid Build Coastguard Worker    -a $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_config.asm
38*fb1b10abSAndroid Build Coastguard Worker}
39*fb1b10abSAndroid Build Coastguard Worker
40*fb1b10abSAndroid Build Coastguard Worker# Print the configuration.
41*fb1b10abSAndroid Build Coastguard Worker# $1 - Header file directory.
42*fb1b10abSAndroid Build Coastguard Workerfunction print_config {
43*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/lint_config.sh -p \
44*fb1b10abSAndroid Build Coastguard Worker    -h $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_config.h \
45*fb1b10abSAndroid Build Coastguard Worker    -a $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_config.asm
46*fb1b10abSAndroid Build Coastguard Worker}
47*fb1b10abSAndroid Build Coastguard Worker
48*fb1b10abSAndroid Build Coastguard Worker# Print the configuration from Header file.
49*fb1b10abSAndroid Build Coastguard Worker# This function is an abridged version of print_config which does not use
50*fb1b10abSAndroid Build Coastguard Worker# lint_config and it does not require existence of vpx_config.asm.
51*fb1b10abSAndroid Build Coastguard Worker# $1 - Header file directory.
52*fb1b10abSAndroid Build Coastguard Workerfunction print_config_basic {
53*fb1b10abSAndroid Build Coastguard Worker  combined_config="$(cat $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_config.h \
54*fb1b10abSAndroid Build Coastguard Worker                   | grep -E ' +[01] *$')"
55*fb1b10abSAndroid Build Coastguard Worker  combined_config="$(echo "$combined_config" | grep -v DO1STROUNDING)"
56*fb1b10abSAndroid Build Coastguard Worker  combined_config="$(echo "$combined_config" | sed 's/[ \t]//g')"
57*fb1b10abSAndroid Build Coastguard Worker  combined_config="$(echo "$combined_config" | sed 's/.*define//')"
58*fb1b10abSAndroid Build Coastguard Worker  combined_config="$(echo "$combined_config" | sed 's/0$/=no/')"
59*fb1b10abSAndroid Build Coastguard Worker  combined_config="$(echo "$combined_config" | sed 's/1$/=yes/')"
60*fb1b10abSAndroid Build Coastguard Worker  echo "$combined_config" | sort | uniq
61*fb1b10abSAndroid Build Coastguard Worker}
62*fb1b10abSAndroid Build Coastguard Worker
63*fb1b10abSAndroid Build Coastguard Worker# Generate *_rtcd.h files.
64*fb1b10abSAndroid Build Coastguard Worker# $1 - Header file directory.
65*fb1b10abSAndroid Build Coastguard Worker# $2 - Architecture.
66*fb1b10abSAndroid Build Coastguard Worker# $3 - Optional - any additional arguments to pass through.
67*fb1b10abSAndroid Build Coastguard Workerfunction gen_rtcd_header {
68*fb1b10abSAndroid Build Coastguard Worker  echo "Generate $LIBVPX_CONFIG_DIR/$1/*_rtcd.h files."
69*fb1b10abSAndroid Build Coastguard Worker
70*fb1b10abSAndroid Build Coastguard Worker  rm -rf $BASE_DIR/$TEMP_DIR/libvpx.config
71*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/lint_config.sh -p \
72*fb1b10abSAndroid Build Coastguard Worker    -h $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_config.h \
73*fb1b10abSAndroid Build Coastguard Worker    -a $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_config.asm \
74*fb1b10abSAndroid Build Coastguard Worker    -o $BASE_DIR/$TEMP_DIR/libvpx.config
75*fb1b10abSAndroid Build Coastguard Worker
76*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/$LIBVPX_SRC_DIR/build/make/rtcd.pl \
77*fb1b10abSAndroid Build Coastguard Worker    --arch=$2 \
78*fb1b10abSAndroid Build Coastguard Worker    --sym=vp8_rtcd $3 \
79*fb1b10abSAndroid Build Coastguard Worker    --config=$BASE_DIR/$TEMP_DIR/libvpx.config \
80*fb1b10abSAndroid Build Coastguard Worker    $BASE_DIR/$LIBVPX_SRC_DIR/vp8/common/rtcd_defs.pl \
81*fb1b10abSAndroid Build Coastguard Worker    > $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vp8_rtcd.h
82*fb1b10abSAndroid Build Coastguard Worker
83*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/$LIBVPX_SRC_DIR/build/make/rtcd.pl \
84*fb1b10abSAndroid Build Coastguard Worker    --arch=$2 \
85*fb1b10abSAndroid Build Coastguard Worker    --sym=vp9_rtcd $3 \
86*fb1b10abSAndroid Build Coastguard Worker    --config=$BASE_DIR/$TEMP_DIR/libvpx.config \
87*fb1b10abSAndroid Build Coastguard Worker    $BASE_DIR/$LIBVPX_SRC_DIR/vp9/common/vp9_rtcd_defs.pl \
88*fb1b10abSAndroid Build Coastguard Worker    > $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vp9_rtcd.h
89*fb1b10abSAndroid Build Coastguard Worker
90*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/$LIBVPX_SRC_DIR/build/make/rtcd.pl \
91*fb1b10abSAndroid Build Coastguard Worker    --arch=$2 \
92*fb1b10abSAndroid Build Coastguard Worker    --sym=vpx_scale_rtcd $3 \
93*fb1b10abSAndroid Build Coastguard Worker    --config=$BASE_DIR/$TEMP_DIR/libvpx.config \
94*fb1b10abSAndroid Build Coastguard Worker    $BASE_DIR/$LIBVPX_SRC_DIR/vpx_scale/vpx_scale_rtcd.pl \
95*fb1b10abSAndroid Build Coastguard Worker    > $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_scale_rtcd.h
96*fb1b10abSAndroid Build Coastguard Worker
97*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/$LIBVPX_SRC_DIR/build/make/rtcd.pl \
98*fb1b10abSAndroid Build Coastguard Worker    --arch=$2 \
99*fb1b10abSAndroid Build Coastguard Worker    --sym=vpx_dsp_rtcd $3 \
100*fb1b10abSAndroid Build Coastguard Worker    --config=$BASE_DIR/$TEMP_DIR/libvpx.config \
101*fb1b10abSAndroid Build Coastguard Worker    $BASE_DIR/$LIBVPX_SRC_DIR/vpx_dsp/vpx_dsp_rtcd_defs.pl \
102*fb1b10abSAndroid Build Coastguard Worker    > $BASE_DIR/$LIBVPX_CONFIG_DIR/$1/vpx_dsp_rtcd.h
103*fb1b10abSAndroid Build Coastguard Worker
104*fb1b10abSAndroid Build Coastguard Worker  rm -rf $BASE_DIR/$TEMP_DIR/libvpx.config
105*fb1b10abSAndroid Build Coastguard Worker}
106*fb1b10abSAndroid Build Coastguard Worker
107*fb1b10abSAndroid Build Coastguard Worker# Generate Config files. "--enable-external-build" must be set to skip
108*fb1b10abSAndroid Build Coastguard Worker# detection of capabilities on specific targets.
109*fb1b10abSAndroid Build Coastguard Worker# $1 - Header file directory.
110*fb1b10abSAndroid Build Coastguard Worker# $2 - Config command line.
111*fb1b10abSAndroid Build Coastguard Workerfunction gen_config_files {
112*fb1b10abSAndroid Build Coastguard Worker  ./configure $2 > /dev/null
113*fb1b10abSAndroid Build Coastguard Worker
114*fb1b10abSAndroid Build Coastguard Worker  # Generate vpx_config.asm for x86[_64].
115*fb1b10abSAndroid Build Coastguard Worker  if [[ "$1" == *x86* ]]; then
116*fb1b10abSAndroid Build Coastguard Worker    egrep "#define [A-Z0-9_]+ [01]" vpx_config.h \
117*fb1b10abSAndroid Build Coastguard Worker      | awk '{print "%define " $2 " " $3}' > vpx_config.asm
118*fb1b10abSAndroid Build Coastguard Worker  else
119*fb1b10abSAndroid Build Coastguard Worker    # vpx_config.asm is unused for arm[64] but is needed to pass lint_config.
120*fb1b10abSAndroid Build Coastguard Worker    egrep "#define [A-Z0-9_]+ [01]" vpx_config.h \
121*fb1b10abSAndroid Build Coastguard Worker      | awk '{print $2 " EQU " $3}' \
122*fb1b10abSAndroid Build Coastguard Worker      | perl $BASE_DIR/$LIBVPX_SRC_DIR/build/make/ads2gas.pl > vpx_config.asm
123*fb1b10abSAndroid Build Coastguard Worker  fi
124*fb1b10abSAndroid Build Coastguard Worker
125*fb1b10abSAndroid Build Coastguard Worker  # Generate vpx_version.h
126*fb1b10abSAndroid Build Coastguard Worker  $BASE_DIR/$LIBVPX_SRC_DIR/build/make/version.sh "$BASE_DIR/$LIBVPX_SRC_DIR" vpx_version.h
127*fb1b10abSAndroid Build Coastguard Worker
128*fb1b10abSAndroid Build Coastguard Worker  cp vpx_config.* vpx_version.h $BASE_DIR/$LIBVPX_CONFIG_DIR/$1
129*fb1b10abSAndroid Build Coastguard Worker  make_clean
130*fb1b10abSAndroid Build Coastguard Worker  rm -rf vpx_config.* vpx_version.h
131*fb1b10abSAndroid Build Coastguard Worker}
132*fb1b10abSAndroid Build Coastguard Worker
133*fb1b10abSAndroid Build Coastguard Worker# Generate a text file containing sources for a config
134*fb1b10abSAndroid Build Coastguard Worker# $1 - Config
135*fb1b10abSAndroid Build Coastguard Workerfunction gen_source_list {
136*fb1b10abSAndroid Build Coastguard Worker  make_clean
137*fb1b10abSAndroid Build Coastguard Worker  if [[ "$1" = "generic" ]]; then
138*fb1b10abSAndroid Build Coastguard Worker    config=$(print_config_basic $1)
139*fb1b10abSAndroid Build Coastguard Worker  else
140*fb1b10abSAndroid Build Coastguard Worker    config=$(print_config $1)
141*fb1b10abSAndroid Build Coastguard Worker  fi
142*fb1b10abSAndroid Build Coastguard Worker  make libvpx_srcs.txt libvpxrc_srcs.txt target=libs $config > /dev/null
143*fb1b10abSAndroid Build Coastguard Worker  mv libvpx_srcs.txt libvpx_srcs_$1.txt
144*fb1b10abSAndroid Build Coastguard Worker  mv libvpxrc_srcs.txt libvpxrc_srcs_$1.txt
145*fb1b10abSAndroid Build Coastguard Worker}
146*fb1b10abSAndroid Build Coastguard Worker
147*fb1b10abSAndroid Build Coastguard Worker# Extract a list of C sources from a libvpx_srcs.txt file
148*fb1b10abSAndroid Build Coastguard Worker# $1 - path to libvpx_srcs.txt
149*fb1b10abSAndroid Build Coastguard Worker# $2 - C file match pattern
150*fb1b10abSAndroid Build Coastguard Worker# $3 - Negative match pattern (default: none)
151*fb1b10abSAndroid Build Coastguard Workerfunction libvpx_srcs_txt_to_c_srcs {
152*fb1b10abSAndroid Build Coastguard Worker  local match_pattern="$2"
153*fb1b10abSAndroid Build Coastguard Worker  local negative_patterns=(-e "^vpx_config\\.c$")
154*fb1b10abSAndroid Build Coastguard Worker  if [[ -n "$3" ]]; then
155*fb1b10abSAndroid Build Coastguard Worker    negative_patterns+=(-e "$3")
156*fb1b10abSAndroid Build Coastguard Worker  fi
157*fb1b10abSAndroid Build Coastguard Worker  grep "${match_pattern}" $1 \
158*fb1b10abSAndroid Build Coastguard Worker    | grep -v "${negative_patterns[@]}" \
159*fb1b10abSAndroid Build Coastguard Worker    | awk '$0="\""$0"\","' \
160*fb1b10abSAndroid Build Coastguard Worker    | sort
161*fb1b10abSAndroid Build Coastguard Worker}
162*fb1b10abSAndroid Build Coastguard Worker
163*fb1b10abSAndroid Build Coastguard Worker# Extract a list of C++ sources from a libvpxrc_srcs.txt file
164*fb1b10abSAndroid Build Coastguard Worker# $1 - path to libvpxrc_srcs.txt
165*fb1b10abSAndroid Build Coastguard Workerfunction libvpxrc_srcs_txt_to_cc_srcs {
166*fb1b10abSAndroid Build Coastguard Worker  grep ".cc$" $1 | awk '$0="\""$0"\","' | sort
167*fb1b10abSAndroid Build Coastguard Worker}
168*fb1b10abSAndroid Build Coastguard Worker
169*fb1b10abSAndroid Build Coastguard Worker# Extract a list of ASM sources from a libvpx_srcs.txt file
170*fb1b10abSAndroid Build Coastguard Worker# $1 - path to libvpx_srcs.txt
171*fb1b10abSAndroid Build Coastguard Workerfunction libvpx_srcs_txt_to_asm_srcs {
172*fb1b10abSAndroid Build Coastguard Worker    grep ".asm$" $1 | awk '$0="\""$0"\","' | sort
173*fb1b10abSAndroid Build Coastguard Worker}
174*fb1b10abSAndroid Build Coastguard Worker
175*fb1b10abSAndroid Build Coastguard Worker# Extract a list of converted ASM sources from a libvpx_srcs.txt file
176*fb1b10abSAndroid Build Coastguard Worker# $1 - path to libvpx_srcs.txt
177*fb1b10abSAndroid Build Coastguard Workerfunction libvpx_srcs_txt_to_asm_S_srcs {
178*fb1b10abSAndroid Build Coastguard Worker    grep ".asm.S$" $1 | awk '$0="\""$0"\","' | sort
179*fb1b10abSAndroid Build Coastguard Worker}
180*fb1b10abSAndroid Build Coastguard Worker
181*fb1b10abSAndroid Build Coastguard Worker# Convert a list of sources to a blueprint file containing a variable
182*fb1b10abSAndroid Build Coastguard Worker# assignment.
183*fb1b10abSAndroid Build Coastguard Worker# $1 - Config
184*fb1b10abSAndroid Build Coastguard Workerfunction gen_bp_srcs {
185*fb1b10abSAndroid Build Coastguard Worker  (
186*fb1b10abSAndroid Build Coastguard Worker    # First collect the libvpx sources into variables.
187*fb1b10abSAndroid Build Coastguard Worker    varprefix=libvpx_${1//-/_}
188*fb1b10abSAndroid Build Coastguard Worker    local negative_pattern
189*fb1b10abSAndroid Build Coastguard Worker    if [[ "$1" == "arm64" ]]; then
190*fb1b10abSAndroid Build Coastguard Worker      negative_pattern="\\(_neon_\\(dotprod\\|i8mm\\)\\|_sve\\)\\.c"
191*fb1b10abSAndroid Build Coastguard Worker      for suffix in "neon_dotprod" "neon_i8mm" "sve"; do
192*fb1b10abSAndroid Build Coastguard Worker        echo "${varprefix}_${suffix}_c_srcs = ["
193*fb1b10abSAndroid Build Coastguard Worker        libvpx_srcs_txt_to_c_srcs libvpx_srcs_$1.txt "_${suffix}\\.c"
194*fb1b10abSAndroid Build Coastguard Worker        echo "]"
195*fb1b10abSAndroid Build Coastguard Worker        echo
196*fb1b10abSAndroid Build Coastguard Worker      done
197*fb1b10abSAndroid Build Coastguard Worker    fi
198*fb1b10abSAndroid Build Coastguard Worker    echo "${varprefix}_c_srcs = ["
199*fb1b10abSAndroid Build Coastguard Worker    libvpx_srcs_txt_to_c_srcs libvpx_srcs_$1.txt "\\.c$" "${negative_pattern}"
200*fb1b10abSAndroid Build Coastguard Worker    echo "\"$LIBVPX_CONFIG_DIR/$1/vpx_config.c\","
201*fb1b10abSAndroid Build Coastguard Worker    echo "]"
202*fb1b10abSAndroid Build Coastguard Worker    if grep -qE ".asm(.S)?$" libvpx_srcs_$1.txt; then
203*fb1b10abSAndroid Build Coastguard Worker      echo
204*fb1b10abSAndroid Build Coastguard Worker      echo "${varprefix}_asm_srcs = ["
205*fb1b10abSAndroid Build Coastguard Worker      libvpx_srcs_txt_to_asm_srcs libvpx_srcs_$1.txt
206*fb1b10abSAndroid Build Coastguard Worker      libvpx_srcs_txt_to_asm_S_srcs libvpx_srcs_$1.txt
207*fb1b10abSAndroid Build Coastguard Worker      echo "]"
208*fb1b10abSAndroid Build Coastguard Worker    fi
209*fb1b10abSAndroid Build Coastguard Worker
210*fb1b10abSAndroid Build Coastguard Worker    # Now collect the libvpxrc sources into variables. Note that we're only
211*fb1b10abSAndroid Build Coastguard Worker    # interested in x86_64 for now, but this can be expanded later.
212*fb1b10abSAndroid Build Coastguard Worker    if [[ "$1" == "x86_64" ]]; then
213*fb1b10abSAndroid Build Coastguard Worker      varprefix=libvpxrc_${1//-/_}
214*fb1b10abSAndroid Build Coastguard Worker      echo
215*fb1b10abSAndroid Build Coastguard Worker      echo "${varprefix}_c_srcs = ["
216*fb1b10abSAndroid Build Coastguard Worker      libvpx_srcs_txt_to_c_srcs libvpxrc_srcs_$1.txt "\\.c$" ""
217*fb1b10abSAndroid Build Coastguard Worker      echo "]"
218*fb1b10abSAndroid Build Coastguard Worker      echo
219*fb1b10abSAndroid Build Coastguard Worker      echo "${varprefix}_cc_srcs = ["
220*fb1b10abSAndroid Build Coastguard Worker      libvpxrc_srcs_txt_to_cc_srcs libvpxrc_srcs_$1.txt "\\.cc$" ""
221*fb1b10abSAndroid Build Coastguard Worker      echo "]"
222*fb1b10abSAndroid Build Coastguard Worker      echo
223*fb1b10abSAndroid Build Coastguard Worker      echo "${varprefix}_asm_srcs = ["
224*fb1b10abSAndroid Build Coastguard Worker      libvpx_srcs_txt_to_asm_srcs libvpxrc_srcs_$1.txt
225*fb1b10abSAndroid Build Coastguard Worker      libvpx_srcs_txt_to_asm_S_srcs libvpxrc_srcs_$1.txt
226*fb1b10abSAndroid Build Coastguard Worker      echo "]"
227*fb1b10abSAndroid Build Coastguard Worker    fi
228*fb1b10abSAndroid Build Coastguard Worker
229*fb1b10abSAndroid Build Coastguard Worker    echo
230*fb1b10abSAndroid Build Coastguard Worker  ) > config_$1.bp
231*fb1b10abSAndroid Build Coastguard Worker}
232*fb1b10abSAndroid Build Coastguard Worker
233*fb1b10abSAndroid Build Coastguard Worker# The ARM assembly sources must be converted from ADS to GAS compatible format.
234*fb1b10abSAndroid Build Coastguard Worker# This step is only required for ARM. MIPS uses intrinsics exclusively and x86
235*fb1b10abSAndroid Build Coastguard Worker# requires 'yasm' to pre-process its assembly files.
236*fb1b10abSAndroid Build Coastguard Workerfunction convert_arm_asm {
237*fb1b10abSAndroid Build Coastguard Worker  find $BASE_DIR/$LIBVPX_CONFIG_DIR/arm-neon -name '*.asm.S' | xargs -r rm
238*fb1b10abSAndroid Build Coastguard Worker  for src in $(grep ".asm$" libvpx_srcs_arm-neon.txt); do
239*fb1b10abSAndroid Build Coastguard Worker    newsrc=$LIBVPX_CONFIG_DIR/arm-neon/$src.S
240*fb1b10abSAndroid Build Coastguard Worker    mkdir -p $BASE_DIR/$(dirname $newsrc)
241*fb1b10abSAndroid Build Coastguard Worker    perl $BASE_DIR/$LIBVPX_SRC_DIR/build/make/ads2gas.pl <$BASE_DIR/$LIBVPX_SRC_DIR/$src >$BASE_DIR/$newsrc
242*fb1b10abSAndroid Build Coastguard Worker    echo $newsrc >>libvpx_srcs_arm-neon.txt
243*fb1b10abSAndroid Build Coastguard Worker  done
244*fb1b10abSAndroid Build Coastguard Worker  sed -i "/\.asm$/ d" libvpx_srcs_arm-neon.txt
245*fb1b10abSAndroid Build Coastguard Worker}
246*fb1b10abSAndroid Build Coastguard Worker
247*fb1b10abSAndroid Build Coastguard Workerecho "Create temporary directory."
248*fb1b10abSAndroid Build Coastguard WorkerTEMP_DIR="../libvpx.temp"
249*fb1b10abSAndroid Build Coastguard Workerrm -rf $TEMP_DIR
250*fb1b10abSAndroid Build Coastguard Workercp -R $LIBVPX_SRC_DIR $TEMP_DIR
251*fb1b10abSAndroid Build Coastguard Workercd $TEMP_DIR
252*fb1b10abSAndroid Build Coastguard Worker
253*fb1b10abSAndroid Build Coastguard Workerecho "Generate config files."
254*fb1b10abSAndroid Build Coastguard Workerall_platforms="--enable-external-build --enable-realtime-only --enable-pic"
255*fb1b10abSAndroid Build Coastguard Workerall_platforms+=" --disable-runtime-cpu-detect --disable-install-docs"
256*fb1b10abSAndroid Build Coastguard Workerall_platforms+=" --size-limit=4096x3072 --enable-vp9-highbitdepth"
257*fb1b10abSAndroid Build Coastguard Workerintel="--disable-sse4_1 --disable-avx --disable-avx2 --disable-avx512 --as=yasm"
258*fb1b10abSAndroid Build Coastguard Workergen_config_files x86 "--target=x86-linux-gcc ${intel} ${all_platforms}"
259*fb1b10abSAndroid Build Coastguard Workergen_config_files x86_64 "--target=x86_64-linux-gcc ${intel} ${all_platforms}"
260*fb1b10abSAndroid Build Coastguard Workergen_config_files arm-neon "--target=armv7-linux-gcc ${all_platforms}"
261*fb1b10abSAndroid Build Coastguard Workerarm64="--disable-sve2"
262*fb1b10abSAndroid Build Coastguard Workergen_config_files arm64 "--target=armv8-linux-gcc ${arm64} ${all_platforms} \
263*fb1b10abSAndroid Build Coastguard Worker  --enable-runtime-cpu-detect"
264*fb1b10abSAndroid Build Coastguard Workergen_config_files generic "--target=generic-gnu ${all_platforms}"
265*fb1b10abSAndroid Build Coastguard Worker
266*fb1b10abSAndroid Build Coastguard Workerecho "Remove temporary directory."
267*fb1b10abSAndroid Build Coastguard Workercd $BASE_DIR
268*fb1b10abSAndroid Build Coastguard Workerrm -rf $TEMP_DIR
269*fb1b10abSAndroid Build Coastguard Worker
270*fb1b10abSAndroid Build Coastguard Workerecho "Lint libvpx configuration."
271*fb1b10abSAndroid Build Coastguard Workerlint_config x86
272*fb1b10abSAndroid Build Coastguard Workerlint_config x86_64
273*fb1b10abSAndroid Build Coastguard Workerlint_config arm-neon
274*fb1b10abSAndroid Build Coastguard Workerlint_config arm64
275*fb1b10abSAndroid Build Coastguard Workerlint_config generic
276*fb1b10abSAndroid Build Coastguard Worker
277*fb1b10abSAndroid Build Coastguard Workerecho "Create temporary directory."
278*fb1b10abSAndroid Build Coastguard WorkerTEMP_DIR="../libvpx.temp"
279*fb1b10abSAndroid Build Coastguard Workerrm -rf $TEMP_DIR
280*fb1b10abSAndroid Build Coastguard Workercp -R $LIBVPX_SRC_DIR $TEMP_DIR
281*fb1b10abSAndroid Build Coastguard Workercd $TEMP_DIR
282*fb1b10abSAndroid Build Coastguard Worker
283*fb1b10abSAndroid Build Coastguard Workergen_rtcd_header x86 x86 "${intel}"
284*fb1b10abSAndroid Build Coastguard Workergen_rtcd_header x86_64 x86_64 "${intel}"
285*fb1b10abSAndroid Build Coastguard Workergen_rtcd_header arm-neon armv7
286*fb1b10abSAndroid Build Coastguard Workergen_rtcd_header arm64 armv8 "${arm64}"
287*fb1b10abSAndroid Build Coastguard Workergen_rtcd_header generic generic
288*fb1b10abSAndroid Build Coastguard Worker
289*fb1b10abSAndroid Build Coastguard Workerecho "Prepare Makefile."
290*fb1b10abSAndroid Build Coastguard Worker./configure --target=generic-gnu > /dev/null
291*fb1b10abSAndroid Build Coastguard Workermake_clean
292*fb1b10abSAndroid Build Coastguard Worker
293*fb1b10abSAndroid Build Coastguard Workerecho "Generate source lists"
294*fb1b10abSAndroid Build Coastguard Workergen_source_list x86
295*fb1b10abSAndroid Build Coastguard Workergen_source_list x86_64
296*fb1b10abSAndroid Build Coastguard Workergen_source_list arm-neon
297*fb1b10abSAndroid Build Coastguard Workergen_source_list arm64
298*fb1b10abSAndroid Build Coastguard Workergen_source_list generic
299*fb1b10abSAndroid Build Coastguard Worker
300*fb1b10abSAndroid Build Coastguard Workerecho "Convert ARM assembly format"
301*fb1b10abSAndroid Build Coastguard Workerconvert_arm_asm
302*fb1b10abSAndroid Build Coastguard Worker
303*fb1b10abSAndroid Build Coastguard Workerecho "Convert to bp"
304*fb1b10abSAndroid Build Coastguard Workergen_bp_srcs x86
305*fb1b10abSAndroid Build Coastguard Workergen_bp_srcs x86_64
306*fb1b10abSAndroid Build Coastguard Workergen_bp_srcs arm-neon
307*fb1b10abSAndroid Build Coastguard Workergen_bp_srcs arm64
308*fb1b10abSAndroid Build Coastguard Workergen_bp_srcs generic
309*fb1b10abSAndroid Build Coastguard Worker
310*fb1b10abSAndroid Build Coastguard Workerrm -f $BASE_DIR/Android.bp
311*fb1b10abSAndroid Build Coastguard Worker(
312*fb1b10abSAndroid Build Coastguard Worker  echo "// THIS FILE IS AUTOGENERATED, DO NOT EDIT"
313*fb1b10abSAndroid Build Coastguard Worker  echo "// Generated from Android.bp.in, run ./generate_config.sh to regenerate"
314*fb1b10abSAndroid Build Coastguard Worker  echo
315*fb1b10abSAndroid Build Coastguard Worker  cat config_*.bp
316*fb1b10abSAndroid Build Coastguard Worker  cat $BASE_DIR/Android.bp.in
317*fb1b10abSAndroid Build Coastguard Worker) > $BASE_DIR/Android.bp
318*fb1b10abSAndroid Build Coastguard Workerbpfmt -s -w "${BASE_DIR}/Android.bp" \
319*fb1b10abSAndroid Build Coastguard Worker  || echo "bpfmt not found. Run 'm bpfmt' followed by" \
320*fb1b10abSAndroid Build Coastguard Worker          "'bpfmt -s -w ${BASE_DIR}/Android.bp'."
321*fb1b10abSAndroid Build Coastguard Worker
322*fb1b10abSAndroid Build Coastguard Workerecho "Remove temporary directory."
323*fb1b10abSAndroid Build Coastguard Workercd $BASE_DIR
324*fb1b10abSAndroid Build Coastguard Workerrm -rf $TEMP_DIR
325