| Joe Onorato | 344e404 | 2022-12-05 15:15:36 -0800 | [diff] [blame] | 1 | # Copyright (C) 2022 The Android Open Source Project | 
|  | 2 | # | 
|  | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | 4 | # you may not use this file except in compliance with the License. | 
|  | 5 | # You may obtain a copy of the License at | 
|  | 6 | # | 
|  | 7 | #      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | 8 | # | 
|  | 9 | # Unless required by applicable law or agreed to in writing, software | 
|  | 10 | # distributed under the License is distributed on an "AS IS" BASIS, | 
|  | 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | 12 | # See the License for the specific language governing permissions and | 
|  | 13 | # limitations under the License. | 
|  | 14 |  | 
|  | 15 | function gettop | 
|  | 16 | { | 
|  | 17 | local TOPFILE=build/make/core/envsetup.mk | 
|  | 18 | # The ${TOP-} expansion allows this to work even with set -u | 
|  | 19 | if [ -n "${TOP:-}" -a -f "${TOP:-}/$TOPFILE" ] ; then | 
|  | 20 | # The following circumlocution ensures we remove symlinks from TOP. | 
|  | 21 | (cd "$TOP"; PWD= /bin/pwd) | 
|  | 22 | else | 
|  | 23 | if [ -f $TOPFILE ] ; then | 
|  | 24 | # The following circumlocution (repeated below as well) ensures | 
|  | 25 | # that we record the true directory name and not one that is | 
|  | 26 | # faked up with symlink names. | 
|  | 27 | PWD= /bin/pwd | 
|  | 28 | else | 
|  | 29 | local HERE=$PWD | 
|  | 30 | local T= | 
|  | 31 | while [ \( ! \( -f $TOPFILE \) \) -a \( "$PWD" != "/" \) ]; do | 
|  | 32 | \cd .. | 
|  | 33 | T=`PWD= /bin/pwd -P` | 
|  | 34 | done | 
|  | 35 | \cd "$HERE" | 
|  | 36 | if [ -f "$T/$TOPFILE" ]; then | 
|  | 37 | echo "$T" | 
|  | 38 | fi | 
|  | 39 | fi | 
|  | 40 | fi | 
|  | 41 | } | 
|  | 42 |  | 
|  | 43 | # Sets TOP, or if the root of the tree can't be found, prints a message and | 
|  | 44 | # exits.  Since this function exits, it should not be called from functions | 
|  | 45 | # defined in envsetup.sh. | 
|  | 46 | if [ -z "${IMPORTING_ENVSETUP:-}" ] ; then | 
|  | 47 | function require_top | 
|  | 48 | { | 
|  | 49 | TOP=$(gettop) | 
|  | 50 | if [[ ! $TOP ]] ; then | 
|  | 51 | echo "Can not locate root of source tree. $(basename $0) must be run from within the Android source tree." >&2 | 
|  | 52 | exit 1 | 
|  | 53 | fi | 
|  | 54 | } | 
|  | 55 | fi | 
|  | 56 |  | 
|  | 57 | function getoutdir | 
|  | 58 | { | 
|  | 59 | local top=$(gettop) | 
|  | 60 | local out_dir="${OUT_DIR:-}" | 
|  | 61 | if [[ -z "${out_dir}" ]]; then | 
|  | 62 | if [[ -n "${OUT_DIR_COMMON_BASE:-}" && -n "${top}" ]]; then | 
|  | 63 | out_dir="${OUT_DIR_COMMON_BASE}/$(basename ${top})" | 
|  | 64 | else | 
|  | 65 | out_dir="out" | 
|  | 66 | fi | 
|  | 67 | fi | 
|  | 68 | if [[ "${out_dir}" != /* ]]; then | 
|  | 69 | out_dir="${top}/${out_dir}" | 
|  | 70 | fi | 
|  | 71 | echo "${out_dir}" | 
|  | 72 | } | 
|  | 73 |  | 
|  | 74 |  |