1*ec779b8eSAndroid Build Coastguard Worker#!/bin/bash 2*ec779b8eSAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project 3*ec779b8eSAndroid Build Coastguard Worker# 4*ec779b8eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*ec779b8eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*ec779b8eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*ec779b8eSAndroid Build Coastguard Worker# 8*ec779b8eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*ec779b8eSAndroid Build Coastguard Worker# 10*ec779b8eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*ec779b8eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*ec779b8eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*ec779b8eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*ec779b8eSAndroid Build Coastguard Worker# limitations under the License. 15*ec779b8eSAndroid Build Coastguard Worker 16*ec779b8eSAndroid Build Coastguard Worker# ============================================================================= 17*ec779b8eSAndroid Build Coastguard Worker# DOCUMENTATION GENERATION 18*ec779b8eSAndroid Build Coastguard Worker# ============================================================================= 19*ec779b8eSAndroid Build Coastguard Worker 20*ec779b8eSAndroid Build Coastguard Workerif [ -z "$ANDROID_BUILD_TOP" ]; then 21*ec779b8eSAndroid Build Coastguard Worker echo "error: Android build is not set up. Run this command after lunch." >&2 22*ec779b8eSAndroid Build Coastguard Worker exit 2 23*ec779b8eSAndroid Build Coastguard Workerfi 24*ec779b8eSAndroid Build Coastguard Worker 25*ec779b8eSAndroid Build Coastguard WorkerOUT_DIR=$ANDROID_BUILD_TOP/out 26*ec779b8eSAndroid Build Coastguard Worker 27*ec779b8eSAndroid Build Coastguard Worker# Codec 2.0 source and target paths 28*ec779b8eSAndroid Build Coastguard WorkerC2_ROOT=$(dirname "$0") 29*ec779b8eSAndroid Build Coastguard WorkerC2_DOCS_ROOT=$OUT_DIR/target/common/docs/codec2 30*ec779b8eSAndroid Build Coastguard WorkerC2_OUT_TEMP=$ANDROID_PRODUCT_OUT/gen/ETC/Codec2-docs_intermediates 31*ec779b8eSAndroid Build Coastguard Worker 32*ec779b8eSAndroid Build Coastguard Worker# Doxygen path 33*ec779b8eSAndroid Build Coastguard WorkerDOXY=$(which doxygen) 34*ec779b8eSAndroid Build Coastguard WorkerDOXY_MAC="/Applications/Doxygen.app/Contents/Resources/doxygen" 35*ec779b8eSAndroid Build Coastguard Workerif [ -z "$DOXY" -a -x "$DOXY_MAC" ]; then 36*ec779b8eSAndroid Build Coastguard Worker DOXY=$DOXY_MAC 37*ec779b8eSAndroid Build Coastguard Workerfi 38*ec779b8eSAndroid Build Coastguard Worker 39*ec779b8eSAndroid Build Coastguard Workerif [ -z "$DOXY" ]; then 40*ec779b8eSAndroid Build Coastguard Worker echo "error: doxygen is not available" >&2 41*ec779b8eSAndroid Build Coastguard Worker exit 2 42*ec779b8eSAndroid Build Coastguard Workerfi 43*ec779b8eSAndroid Build Coastguard Worker 44*ec779b8eSAndroid Build Coastguard Worker# Create doxygen config 45*ec779b8eSAndroid Build Coastguard Worker# --------------------- 46*ec779b8eSAndroid Build Coastguard Workergen_doxy() { 47*ec779b8eSAndroid Build Coastguard Worker local variant=$1 48*ec779b8eSAndroid Build Coastguard Worker local variant_lc=$(echo $variant | tr A-Z a-z) 49*ec779b8eSAndroid Build Coastguard Worker mkdir -p $C2_OUT_TEMP 50*ec779b8eSAndroid Build Coastguard Worker if [ "$variant_lc" == "api" ]; then 51*ec779b8eSAndroid Build Coastguard Worker # only document include directory, no internal sections 52*ec779b8eSAndroid Build Coastguard Worker sed 's/\(^INPUT *=.*\)/\1core\/include\//; 53*ec779b8eSAndroid Build Coastguard Worker s/\(^INTERNAL_DOCS *= *\).*/\1NO/; 54*ec779b8eSAndroid Build Coastguard Worker s/\(^ENABLED_SECTIONS *=.*\)INTERNAL\(.*\).*/\1\2/; 55*ec779b8eSAndroid Build Coastguard Worker s:\(^OUTPUT_DIRECTORY *= \)out\(.*\)api:\1'$OUT_DIR'\2'$variant_lc':;' \ 56*ec779b8eSAndroid Build Coastguard Worker $C2_ROOT/docs/doxygen.config > $C2_OUT_TEMP/doxy-$variant_lc.config 57*ec779b8eSAndroid Build Coastguard Worker 58*ec779b8eSAndroid Build Coastguard Worker ls -la $C2_OUT_TEMP/doxy-$variant_lc.config 59*ec779b8eSAndroid Build Coastguard Worker else 60*ec779b8eSAndroid Build Coastguard Worker sed 's:\(^OUTPUT_DIRECTORY *= \)out\(.*\)api:\1'$OUT_DIR'\2'$variant_lc':;' \ 61*ec779b8eSAndroid Build Coastguard Worker $C2_ROOT/docs/doxygen.config > $C2_OUT_TEMP/doxy-$variant_lc.config 62*ec779b8eSAndroid Build Coastguard Worker fi 63*ec779b8eSAndroid Build Coastguard Worker 64*ec779b8eSAndroid Build Coastguard Worker echo $variant docs are building in $C2_DOCS_ROOT/$variant_lc 65*ec779b8eSAndroid Build Coastguard Worker rm -rf $C2_DOCS_ROOT/$variant_lc 66*ec779b8eSAndroid Build Coastguard Worker mkdir -p $C2_DOCS_ROOT/$variant_lc 67*ec779b8eSAndroid Build Coastguard Worker pushd $ANDROID_BUILD_TOP 68*ec779b8eSAndroid Build Coastguard Worker $DOXY $C2_OUT_TEMP/doxy-$variant_lc.config 69*ec779b8eSAndroid Build Coastguard Worker popd 70*ec779b8eSAndroid Build Coastguard Worker} 71*ec779b8eSAndroid Build Coastguard Worker 72*ec779b8eSAndroid Build Coastguard Workerusage() { 73*ec779b8eSAndroid Build Coastguard Worker echo "usage: $(basename "$0") [target]" 74*ec779b8eSAndroid Build Coastguard Worker echo " where target can be one of:" 75*ec779b8eSAndroid Build Coastguard Worker echo " all: build both API and internal docs (default)" 76*ec779b8eSAndroid Build Coastguard Worker echo " api: build API docs only" 77*ec779b8eSAndroid Build Coastguard Worker echo " internal: build internal docs which include implementation details" 78*ec779b8eSAndroid Build Coastguard Worker} 79*ec779b8eSAndroid Build Coastguard Worker 80*ec779b8eSAndroid Build Coastguard WorkerTARGET=${1:-all} 81*ec779b8eSAndroid Build Coastguard Workercase "$TARGET" in 82*ec779b8eSAndroid Build Coastguard Worker api) gen_doxy API;; 83*ec779b8eSAndroid Build Coastguard Worker internal) gen_doxy Internal;; 84*ec779b8eSAndroid Build Coastguard Worker all) gen_doxy API; gen_doxy Internal;; 85*ec779b8eSAndroid Build Coastguard Worker -h) usage; exit 0;; 86*ec779b8eSAndroid Build Coastguard Worker *) echo "unknown target '$TARGET'" >&2; usage; exit 2;; 87*ec779b8eSAndroid Build Coastguard Workeresac 88