envsetup.sh: take control of defining OUT_DIR and DIST_DIR

Delegate calculation of OUT_DIR and DIST_DIR to envsetup.sh. That way it
can be reused for other scripts like build.sh.
Also ensure that envsetup.sh is only included once.

Change-Id: Ie61b8b6bc2ac10d31302a0e161748899c7463496
Signed-off-by: Matthias Maennich <maennich@google.com>
diff --git a/envsetup.sh b/envsetup.sh
index d8a9729..db02d2c 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -20,6 +20,7 @@
 #     just:
 #       make -j24
 
+[ -n "$ENVSETUP_SH_INCLUDED" ] && return || export ENVSETUP_SH_INCLUDED=1
 
 # TODO: Use a $(gettop) style method.
 export ROOT_DIR=$PWD
@@ -27,6 +28,10 @@
 export BUILD_CONFIG=${BUILD_CONFIG:-build.config}
 . ${ROOT_DIR}/${BUILD_CONFIG}
 
+export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out/${BRANCH}})
+export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
+export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
+
 echo "========================================================"
 echo "= build config: ${ROOT_DIR}/${BUILD_CONFIG}"
 cat ${ROOT_DIR}/${BUILD_CONFIG}