Generalise recursing through the source tree.

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3556 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
Meep-Eep
2011-02-13 18:05:57 +00:00
parent 1532693fd0
commit 38e317e75d
2 changed files with 26 additions and 80 deletions
+15 -42
View File
@@ -1,5 +1,8 @@
#!/bin/sh
# Find all the .c, .cpp, .m, and .rc files which are relevant for the project,
# and remove their respective object files in the work directory.
# Expected to be passed from the environment:
# BUILD_PROJECT - the name of the project
# BUILD_ROOT - The root of the source files.
@@ -9,48 +12,18 @@ BUILD_ROOT=${BUILD_ROOT%/}/
BUILD_WORK=${BUILD_WORK%/}/
eval OBJDIR=\"${BUILD_WORK}\${${BUILD_PROJECT}_OBJS}\"
# $1 - The prefix up to this point
# $2 - The name of the current subdir
recurse_subdir() {
local REC_PREFIX SUBDIRS SUBDIR CFILES CXXFILES MFILES RCFILES FILE
eval local ${BUILD_PROJECT}_CFILES ${BUILD_PROJECT}_CXXFILES \
${BUILD_PROJECT}_MFILES ${BUILD_PROJECT}_RCFILES \
${BUILD_PROJECT}_SUBDIRS
REC_PREFIX="$1$2/"
if [ "$REC_PREFIX" = "/" ]; then
REC_PREFIX=
fi
eval ${BUILD_PROJECT}_CFILES=
eval ${BUILD_PROJECT}_CXXFILES=
eval ${BUILD_PROJECT}_MFILES=
eval ${BUILD_PROJECT}_RCFILES=
eval ${BUILD_PROJECT}_SUBDIRS=
. "${BUILD_ROOT}${REC_PREFIX}Makeinfo"
eval CFILES=\$${BUILD_PROJECT}_CFILES
eval CXXFILES=\$${BUILD_PROJECT}_CXXFILES
eval MFILES=\$${BUILD_PROJECT}_MFILES
eval RCFILES=\$${BUILD_PROJECT}_RCFILES
for FILE in $CFILES $CXXFILES $MFILES $RCFILES; do
rm -f -- "${OBJDIR}${REC_PREFIX}$FILE.d" \
"${OBJDIR}${REC_PREFIX}$FILE.o"
done
eval SUBDIRS=\$${BUILD_PROJECT}_SUBDIRS
for SUBDIR in $SUBDIRS; do
recurse_subdir "$REC_PREFIX" "$SUBDIR"
done
rmdir -- "${OBJDIR}${REC_PREFIX%/}" 2> /dev/null
}
. "${BUILD_ROOT}Makeproject"
recurse_subdir "" ""
build/unix/recurse "$BUILD_PROJECT" "$BUILD_ROOT" | \
while read TYPE FILE; do
case "$TYPE" in
C|CXX|M|RC)
rm -f -- "${OBJDIR}${REC_PREFIX}$FILE.d" \
"${OBJDIR}${FILE}.o"
;;
DIROUT)
rmdir -- "${OBJDIR}${FILE}" 2> /dev/null
;;
esac
done