diff options
Diffstat (limited to 'scripts/makeobj')
-rwxr-xr-x | scripts/makeobj | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/scripts/makeobj b/scripts/makeobj new file mode 100755 index 00000000..cc79c663 --- /dev/null +++ b/scripts/makeobj @@ -0,0 +1,96 @@ +#! /usr/bin/env bash + +# this is a script around make which basicly checks +# if it's in srcdir or in builddir and changes to +# the right directory for calling /usr/bin/make +# (C) Stephan Kulow + +# You may need to set OBJ_REPLACEMENT variable to get it to work. +# In the variable use the sed syntax to switch directories, for example +# export OBJ_REPLACEMENT="s:/home/zack/cvs/kde:/home/zack/build:" +# will assure that the builds are performed under /home/zack/build +# directory, when the cvs is held under /home/zack/cvs/kde. + +file=Makefile +dir=. +args=() + +while test $# -gt 0 ; do + case "${1}" in + -f) + shift + file="${1}" + shift + args=("${args[@]}" -f $file) + ;; + -C) + shift + dir="${1}" + shift ;; + *) + args=("${args[@]}" "$1") + shift + ;; + esac +done + +if test ! -f $dir/$file; then + if test -n "$OBJ_SUBDIR"; then + dir=$PWD + subdir=. + while test ! -f $dir/$OBJ_SUBDIR/$file; do + subdir=`basename $dir`"/$subdir" + dir=`dirname $dir` + if test "$dir" = "/"; then + # the case that someone puts the compile dir in / + # is very unlikely, so we better skip here ;) + echo "can't find $OBJ_SUBDIR above current dir" + exit 1 + fi + done + cd $dir/$OBJ_SUBDIR/$subdir + else + if test -n "$OBJ_REPLACEMENT"; then + pwd=`echo $PWD | sed -e "$OBJ_REPLACEMENT"` + if test ! -f $pwd/$dir/$file; then + # No objdir found. But if "make" will work in srcdir, then go ahead; might be a non-kde project. + test -f $dir/GNUmakefile && file=GNUmakefile + test -f $dir/makefile && file=makefile + test -f $dir/$file || file="" + if test -z "$file"; then + echo "no objdir found. Tried $pwd" + exit 1 + fi + fi + cd $pwd/$dir + fi + fi +else + cd $dir +fi + +echo "makeobj[0]: Entering directory \`$PWD'" +if test -z "$MAKE"; then + using_new_unsermake=0 + if head -n 1 $file | grep unsermake >/dev/null; then + using_new_unsermake=1 + fi + if head -n 1 $file | grep automake >/dev/null; then + using_new_unsermake=0 + fi + if test $using_new_unsermake -eq 1; then + MAKE=`type -p unsermake` + if test ! -x "$MAKE"; then + echo 'Makefile was created with unsermake, but there' + echo 'is no unsermake in $PATH' + exit 1 + fi + else + MAKE=/usr/bin/make + fi +fi +LANGUAGE=C $MAKE "${args[@]}" +retval=$? +echo "makeobj[0]: Leaving directory \`$PWD'" +exit $retval + |