# Copyright (C) 2022 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. function gettop { local TOPFILE=build/make/core/envsetup.mk # The ${TOP-} expansion allows this to work even with set -u if [ -n "${TOP:-}" -a -f "${TOP:-}/$TOPFILE" ] ; then # The following circumlocution ensures we remove symlinks from TOP. (cd "$TOP"; PWD= /bin/pwd) else if [ -f $TOPFILE ] ; then # The following circumlocution (repeated below as well) ensures # that we record the true directory name and not one that is # faked up with symlink names. PWD= /bin/pwd else local HERE=$PWD local T= while [ \( ! \( -f $TOPFILE \) \) -a \( "$PWD" != "/" \) ]; do \cd .. T=`PWD= /bin/pwd -P` done \cd "$HERE" if [ -f "$T/$TOPFILE" ]; then echo "$T" fi fi fi } # Sets TOP, or if the root of the tree can't be found, prints a message and # exits. Since this function exits, it should not be called from functions # defined in envsetup.sh. if [ -z "${IMPORTING_ENVSETUP:-}" ] ; then function require_top { TOP=$(gettop) if [[ ! $TOP ]] ; then echo "Can not locate root of source tree. $(basename $0) must be run from within the Android source tree." >&2 exit 1 fi } fi function getoutdir { local top=$(gettop) local out_dir="${OUT_DIR:-}" if [[ -z "${out_dir}" ]]; then if [[ -n "${OUT_DIR_COMMON_BASE:-}" && -n "${top}" ]]; then out_dir="${OUT_DIR_COMMON_BASE}/$(basename ${top})" else out_dir="out" fi fi if [[ "${out_dir}" != /* ]]; then out_dir="${top}/${out_dir}" fi echo "${out_dir}" }