| # 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}" |
| } |
| |
| |