configure: correct submodule code, only reconfigure LLVM when changed.

This commit is contained in:
Graydon Hoare 2012-02-28 19:15:13 -08:00
parent 341f414220
commit 8c337026b5

121
configure vendored
View file

@ -173,7 +173,6 @@ opt() {
fi
}
msg "looking for configure programs"
need_cmd cmp
need_cmd mkdir
@ -482,55 +481,48 @@ then
fi
# Have to be in the top of src directory for this
cd ${CFG_SRC_DIR}
if [ -z $CFG_DISABLE_MANAGE_SUBMODULES ]
then
msg "git: submodule sync"
"${CFG_GIT}" submodule sync --quiet
SUBMODULE_STATUS=$("${CFG_GIT}" submodule status)
NEED_INIT_COUNT=$(echo "$SUBMODULE_STATUS" | grep -c "^-")
NEED_UPDATE_COUNT=$(echo "$SUBMODULE_STATUS" | grep -c "^+")
NEED_INIT=$(test $NEED_INIT_COUNT -gt 0)$?
NEED_UPDATE=$(test "($NEED_INIT)" -o "$NEED_UPDATE_COUNT" -gt 0)$?
else
NEED_INIT=
NEED_UPDATE=
fi
if [ $NEED_INIT ]
then
msg "git: submodule init"
"${CFG_GIT}" submodule init --quiet
cd ${CFG_SRC_DIR}
msg "git: submodule sync"
"${CFG_GIT}" submodule sync --quiet
SUBMODULES=$("${CFG_GIT}" submodule status | awk '{print $2}')
for s in $SUBMODULES
do
msg "git: submodule status ${s}"
status=$("${CFG_GIT}" submodule status ${s} | awk '{print $1}')
case ${status} in
-*)
msg "${s} is not initialized, initializing"
"${CFG_GIT}" submodule init --quiet ${s}
need_ok "git failed"
fi
if [ $NEED_UPDATE ]
then
msg "git: submodule update"
"${CFG_GIT}" submodule update --quiet
msg "${s} updating"
"${CFG_GIT}" submodule update --quiet ${s}
need_ok "git failed"
;;
+*)
msg "${s} is not up to date, updating"
"${CFG_GIT}" submodule update --quiet ${s}
need_ok "git failed"
;;
*)
msg "${s} is clean"
;;
esac
done
cd ${CFG_BUILD_DIR}
fi
cd ${CFG_BUILD_DIR}
# Configure llvm. Here we go...
# Configure llvm, only if necessary
step_msg "looking at LLVM"
CFG_LLVM_SRC_DIR=${CFG_SRC_DIR}src/llvm
for t in $CFG_TARGET_TRIPLES
do
do_reconfigure=1
if [ -z $CFG_LLVM_ROOT ]
then
step_msg "configuring LLVM for $t"
LLVM_BUILD_DIR=$CFG_BUILD_DIR/llvm/$t
LLVM_TARGETS="--enable-targets=x86,x86_64"
LLVM_BUILD="--build=$t"
LLVM_HOST="--host=$t"
LLVM_TARGET="--target=$t"
if [ ! -z "$CFG_DISABLE_OPTIMIZE_LLVM" ]
then
LLVM_DBG_OPTS=""
@ -541,8 +533,47 @@ do
LLVM_DBG_OPTS="--enable-optimized"
LLVM_INST_DIR=$LLVM_BUILD_DIR/Release+Asserts
fi
else
msg "not reconfiguring LLVM, external LLVM root"
# The user is using their own LLVM
LLVM_BUILD_DIR=
LLVM_INST_DIR=$CFG_LLVM_ROOT
do_reconfigure=0
fi
if [ ${do_reconfigure} -ne 0 ]
then
# because git is hilarious, it might have put the module index
# in a couple places.
index1="${CFG_SRC_DIR}.git/modules/src/llvm/index"
index2="${CFG_SRC_DIR}src/llvm/.git/index"
for index in ${index1} ${index2}
do
config_status="${CFG_BUILD_DIR}/llvm/$t/config.status"
if test -e ${index} -a \
-e ${config_status} -a \
${config_status} -nt ${index}
then
msg "not reconfiguring LLVM, config.status is fresh"
do_reconfigure=0
fi
done
fi
if [ ${do_reconfigure} -ne 0 ]
then
msg "configuring LLVM for $t"
LLVM_TARGETS="--enable-targets=x86,x86_64"
LLVM_BUILD="--build=$t"
LLVM_HOST="--host=$t"
LLVM_TARGET="--target=$t"
# Disable unused LLVM features
LLVM_OPTS="$LLVM_DBG_OPTS --disable-docs --disable-jit --enable-bindings=none --disable-threads --disable-pthreads"
LLVM_OPTS="$LLVM_DBG_OPTS --disable-docs --disable-jit \
--enable-bindings=none --disable-threads \
--disable-pthreads"
if [ "$CFG_C_COMPILER" = "clang" ]
then
@ -567,7 +598,7 @@ do
LLVM_CXXFLAGS_64=""
LLVM_LDFLAGS_64=""
if echo $t | grep x86_64
if echo $t | grep -q x86_64
then
LLVM_CXX=$LLVM_CXX_64
LLVM_CC=$LLVM_CC_64
@ -588,7 +619,8 @@ do
CXXFLAGS=$LLVM_CXXFLAGS
LDFLAGS=$LLVM_LDFLAGS
LLVM_FLAGS="$LLVM_TARGETS $LLVM_OPTS $LLVM_BUILD $LLVM_HOST $LLVM_TARGET"
LLVM_FLAGS="$LLVM_TARGETS $LLVM_OPTS $LLVM_BUILD \
$LLVM_HOST $LLVM_TARGET"
msg "configuring LLVM with:"
msg "$LLVM_FLAGS"
@ -605,15 +637,12 @@ do
${CFG_LLVM_SRC_DIR}/configure $LLVM_FLAGS
;;
*)
${CFG_BUILD_DIR}/${CFG_LLVM_SRC_DIR}/configure $LLVM_FLAGS
${CFG_BUILD_DIR}/${CFG_LLVM_SRC_DIR}/configure \
$LLVM_FLAGS
;;
esac
need_ok "LLVM configure failed"
cd $CFG_BUILD_DIR
else
LLVM_BUILD_DIR=
# The user is using their own LLVM
LLVM_INST_DIR=$CFG_LLVM_ROOT
fi
# Construct variables for LLVM build and install directories for