#!/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