#!/bin/bash # # Copyright (c) 2018 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # This script has been modified for use in Android. It is used to generate .bp # files and files in the config/ directories needed to build libaom. # # Every time the upstream source code is updated this script must be run. # # Usage: # $ ./generate_config.sh # Requirements: # Install the following Debian packages. # - cmake3 # - yasm or nasm # Toolchain for armv7: # - gcc-arm-linux-gnueabihf # - g++-arm-linux-gnueabihf # Toolchain for arm64: # - gcc-aarch64-linux-gnu # - g++-aarch64-linux-gnu # 32bit build environment for cmake. Including but potentially not limited to: # - lib32gcc-7-dev # - lib32stdc++-7-dev # Alternatively: treat 32bit builds like Windows and manually tweak aom_config.h set -eE # sort() consistently. export LC_ALL=C BASE=$(pwd) SRC="${BASE}/libaom" CFG="${BASE}/config" TMP=$(mktemp -d "${BASE}/build.XXXX") # Clean up and prepare config directory rm -rf "${CFG}" mkdir -p "${CFG}/config" function clean { rm -rf "${TMP}" } # Create empty temp and config directories. # $1 - Header file directory. function reset_dirs { cd "${BASE}" rm -rf "${TMP}" mkdir "${TMP}" cd "${TMP}" echo "Generate ${1} config files." mkdir -p "${CFG}/${1}/config" } if [ $# -ne 0 ]; then echo "Unknown option(s): ${@}" exit 1 fi # Missing function: # find_duplicates # We may have enough targets to avoid re-implementing this. # Generate Config files. # $1 - Header file directory. # $2 - cmake options. function gen_config_files { cmake "${SRC}" ${2} &> cmake.txt case "${1}" in x86*) egrep "#define [A-Z0-9_]+ [01]" config/aom_config.h | \ awk '{print "%define " $2 " " $3}' > config/aom_config.asm ;; esac cp config/aom_config.{h,c,asm} "${CFG}/${1}/config/" cp config/*_rtcd.h "${CFG}/${1}/config/" #clang-format -i "${CFG}/${1}/config/"*_rtcd.h } function update_readme { local IFS=$'\n' # Split git log output '\n' on the newline to produce 2 # array entries. local vals=($(git -C "${SRC}" --no-pager log -1 --format="%cd%n%H" \ --date=format:"%A %B %d %Y")) sed -E -i.bak \ -e "s/^(Date:)[[:space:]]+.*$/\1 ${vals[0]}/" \ -e "s/^(Commit:)[[:space:]]+[a-f0-9]{40}/\1 ${vals[1]}/" \ ${BASE}/README.android rm ${BASE}/README.android.bak cat < "${BASE}/Android.bp" rm -f "${BASE}/libaom_srcs.gni" bpfmt -w "${BASE}/Android.bp" || echo "bpfmt not found: format Android.bp manually." clean