blob: ca5aeed69b4c961dc8ad5bfbd7dbe725ca1bd106 [file] [log] [blame]
#!/bin/bash
# Copyright (C) 2024 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# =============================================================================
# DOCUMENTATION GENERATION
# =============================================================================
if [ -z "$ANDROID_BUILD_TOP" ]; then
echo "error: Android build is not set up. Run this command after lunch." >&2
exit 2
fi
OUT_DIR=$ANDROID_BUILD_TOP/out
# Codec 2.0 source and target paths
C2_ROOT=$(dirname "$0")
C2_DOCS_ROOT=$OUT_DIR/target/common/docs/codec2
C2_OUT_TEMP=$ANDROID_PRODUCT_OUT/gen/ETC/Codec2-docs_intermediates
# Doxygen path
DOXY=$(which doxygen)
DOXY_MAC="/Applications/Doxygen.app/Contents/Resources/doxygen"
if [ -z "$DOXY" -a -x "$DOXY_MAC" ]; then
DOXY=$DOXY_MAC
fi
if [ -z "$DOXY" ]; then
echo "error: doxygen is not available" >&2
exit 2
fi
# Create doxygen config
# ---------------------
gen_doxy() {
local variant=$1
local variant_lc=$(echo $variant | tr A-Z a-z)
mkdir -p $C2_OUT_TEMP
if [ "$variant_lc" == "api" ]; then
# only document include directory, no internal sections
sed 's/\(^INPUT *=.*\)/\1core\/include\//;
s/\(^INTERNAL_DOCS *= *\).*/\1NO/;
s/\(^ENABLED_SECTIONS *=.*\)INTERNAL\(.*\).*/\1\2/;
s:\(^OUTPUT_DIRECTORY *= \)out\(.*\)api:\1'$OUT_DIR'\2'$variant_lc':;' \
$C2_ROOT/docs/doxygen.config > $C2_OUT_TEMP/doxy-$variant_lc.config
ls -la $C2_OUT_TEMP/doxy-$variant_lc.config
else
sed 's:\(^OUTPUT_DIRECTORY *= \)out\(.*\)api:\1'$OUT_DIR'\2'$variant_lc':;' \
$C2_ROOT/docs/doxygen.config > $C2_OUT_TEMP/doxy-$variant_lc.config
fi
echo $variant docs are building in $C2_DOCS_ROOT/$variant_lc
rm -rf $C2_DOCS_ROOT/$variant_lc
mkdir -p $C2_DOCS_ROOT/$variant_lc
pushd $ANDROID_BUILD_TOP
$DOXY $C2_OUT_TEMP/doxy-$variant_lc.config
popd
}
usage() {
echo "usage: $(basename "$0") [target]"
echo " where target can be one of:"
echo " all: build both API and internal docs (default)"
echo " api: build API docs only"
echo " internal: build internal docs which include implementation details"
}
TARGET=${1:-all}
case "$TARGET" in
api) gen_doxy API;;
internal) gen_doxy Internal;;
all) gen_doxy API; gen_doxy Internal;;
-h) usage; exit 0;;
*) echo "unknown target '$TARGET'" >&2; usage; exit 2;;
esac