xref: /aosp_15_r20/frameworks/av/media/codec2/doxygen.sh (revision ec779b8e0859a360c3d303172224686826e6e0e1)
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