build.sh: consistently use CC_ARG and LD_ARG

All make calls (especially `make defconfig`) might rely on the correct
compiler to be used. In order to use the same compiler consistently,
determine the CC_ARG and LD_ARG before the first call. Also combine them
to ensure they are used as a pair consistently.

The issue was discovered when building upstream-linux-4.19.y with
CC=clang and the deprecation warning got triggered during make mrproper
and make defconfig.

Change-Id: Ia1905adfda28d78f37f56724fe5fbfd13852f2c7
Cc: Alistair Strachan <astrachan@google.com>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Matthias Maennich <maennich@google.com>
diff --git a/build.sh b/build.sh
index aaf26a2..c4a57721 100755
--- a/build.sh
+++ b/build.sh
@@ -139,12 +139,22 @@
 
 export CLANG_TRIPLE CROSS_COMPILE CROSS_COMPILE_ARM32 ARCH SUBARCH
 
+if [ -n "${CC}" ]; then
+  CC_ARG="CC=${CC}"
+fi
+
+if [ -n "${LD}" ]; then
+  LD_ARG="LD=${LD}"
+fi
+
+CC_LD_ARG="${CC_ARG} ${LD_ARG}"
+
 mkdir -p ${OUT_DIR}
 echo "========================================================"
 echo " Setting up for build"
 if [ -z "${SKIP_MRPROPER}" ] ; then
   set -x
-  (cd ${KERNEL_DIR} && make O=${OUT_DIR} mrproper)
+  (cd ${KERNEL_DIR} && make ${CC_LD_ARG} O=${OUT_DIR} mrproper)
   set +x
 fi
 
@@ -158,7 +168,7 @@
 
 if [ -z "${SKIP_DEFCONFIG}" ] ; then
 set -x
-(cd ${KERNEL_DIR} && make O=${OUT_DIR} ${DEFCONFIG})
+(cd ${KERNEL_DIR} && make ${CC_LD_ARG} O=${OUT_DIR} ${DEFCONFIG})
 set +x
 
 if [ "${POST_DEFCONFIG_CMDS}" != "" ]; then
@@ -173,17 +183,9 @@
 echo "========================================================"
 echo " Building kernel"
 
-if [ -n "${CC}" ]; then
-  CC_ARG="CC=${CC}"
-fi
-
-if [ -n "${LD}" ]; then
-  LD_ARG="LD=${LD}"
-fi
-
 set -x
 (cd ${OUT_DIR} && \
- make O=${OUT_DIR} ${CC_ARG} ${LD_ARG} -j$(nproc) $@)
+ make O=${OUT_DIR} ${CC_LD_ARG} -j$(nproc) $@)
 set +x
 
 if [ "${POST_KERNEL_BUILD_CMDS}" != "" ]; then
@@ -202,7 +204,7 @@
   echo " Installing kernel modules into staging directory"
 
   (cd ${OUT_DIR} && \
-   make O=${OUT_DIR} ${CC_ARG} ${LD_ARG} INSTALL_MOD_STRIP=1 \
+   make O=${OUT_DIR} ${CC_LD_ARG} INSTALL_MOD_STRIP=1 \
         INSTALL_MOD_PATH=${MODULES_STAGING_DIR} modules_install)
 fi
 
@@ -223,9 +225,9 @@
     mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
     set -x
     make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR}  \
-                       O=${OUT_DIR} ${CC_ARG} ${LD_ARG} -j$(nproc) "$@"
+                       O=${OUT_DIR} ${CC_LD_ARG} -j$(nproc) "$@"
     make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR}  \
-                       O=${OUT_DIR} ${CC_ARG} ${LD_ARG} INSTALL_MOD_STRIP=1   \
+                       O=${OUT_DIR} ${CC_LD_ARG} INSTALL_MOD_STRIP=1   \
                        INSTALL_MOD_PATH=${MODULES_STAGING_DIR} modules_install
     set +x
   done
@@ -297,7 +299,7 @@
   echo "========================================================"
   echo " Installing UAPI kernel headers:"
   mkdir -p "${KERNEL_UAPI_HEADERS_DIR}/usr"
-  make -C ${OUT_DIR} O=${OUT_DIR} ${CC_ARG} INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" -j$(nproc) headers_install
+  make -C ${OUT_DIR} O=${OUT_DIR} ${CC_LD_ARG} INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" -j$(nproc) headers_install
   # The kernel makefiles create files named ..install.cmd and .install which
   # are only side products. We don't want those. Let's delete them.
   find ${KERNEL_UAPI_HEADERS_DIR} \( -name ..install.cmd -o -name .install \) -exec rm '{}' +