Skip to content

Commit

Permalink
[V2] build.sh: Fix the behavior of specifying CC
Browse files Browse the repository at this point in the history
Update the behavior of specifying CC.
The following cases are covered:
- CC == gcc: special case in which we fall back to the default
    triplet defined by CROSS_COMPILE;
- CC == XXX != gcc != "": force the use of the specified XXX compiler;
- CC defined both in env and in BUILD_CONFIG: env has higher priority
    than BUILD_CONFIG.

This patch solves this unexpected behavior of having the CC value
specified in the environment overwritten by the one defined in
BUILD_CONFIG, preserving the behavior of the other cases.

In aosp/1090669 I forgot to add double quotes to the
variable expansion, causing the bug (Oops):

[ -n $CC_ARG ] --> [ -n "$CC_ARG" ]

Test: manual build
Bug: 138799604
Change-Id: Ie054cb7deb3ac7b1a4ae71fc5ae45857b3acaa39
Signed-off-by: Alessio Balsini <[email protected]>
  • Loading branch information
balsini committed Aug 6, 2019
1 parent d6aef5f commit a397d80
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,10 @@ SIGN_SEC=certs/signing_key.pem
SIGN_CERT=certs/signing_key.x509
SIGN_ALGO=sha512

# Save environment parameters before being overwritten by sourcing
# BUILD_CONFIG.
CC_ARG=${CC}

source "${ROOT_DIR}/build/envsetup.sh"

export MAKE_ARGS=$@
Expand All @@ -164,10 +168,14 @@ cd ${ROOT_DIR}

export CLANG_TRIPLE CROSS_COMPILE CROSS_COMPILE_ARM32 ARCH SUBARCH

# Restore the previously saved CC argument that might have been overridden by
# the BUILD_CONFIG.
[ -n "${CC_ARG}" ] && CC=${CC_ARG}

# CC=gcc is effectively a fallback to the default gcc including any target
# triplets. If the user wants to use a custom compiler, they are still able to
# pass an absolute path, e.g. CC=/usr/bin/gcc.
[ "${CC}" == "gcc" ] && unset CC
# triplets. An absolute path (e.g., CC=/usr/bin/gcc) must be specified to use a
# custom compiler.
[ "${CC}" == "gcc" ] && unset CC && unset CC_ARG

if [ -n "${CC}" ]; then
CC_ARG="CC=${CC} HOSTCC=${CC}"
Expand Down

0 comments on commit a397d80

Please sign in to comment.