diff --git a/sc2/build/unix/build_clean b/sc2/build/unix/build_clean index 51ed1231e..ffc744050 100644 --- a/sc2/build/unix/build_clean +++ b/sc2/build/unix/build_clean @@ -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 diff --git a/sc2/build/unix/build_collect b/sc2/build/unix/build_collect index 5e9612e7f..7a5dcb9b7 100644 --- a/sc2/build/unix/build_collect +++ b/sc2/build/unix/build_collect @@ -1,5 +1,8 @@ #!/bin/sh +# Find all the .c, .cpp, .m, and .rc files which are relevant for the project, +# and map them to 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,45 +12,15 @@ 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 - echo "${OBJDIR}${REC_PREFIX}$FILE" - done - - eval SUBDIRS=\$${BUILD_PROJECT}_SUBDIRS - for SUBDIR in $SUBDIRS; do - recurse_subdir "$REC_PREFIX" "$SUBDIR" - done -} - - . "${BUILD_ROOT}Makeproject" . "${BUILD_WORK}build.vars" -recurse_subdir "" "" +build/unix/recurse "$BUILD_PROJECT" "$BUILD_ROOT" | \ + while read TYPE FILE; do + case "$TYPE" in + C|CXX|M|RC) + echo "$OBJDIR$FILE" + ;; + esac +done