- case `echo "$KBUILD" | sed 's,/*$,,'` in # (
- */build)
- KSRC=`echo "$KBUILD" | sed 's,/build/*$,/source,'`
- ;; # (
- *)
- KSRC=`(cd $KBUILD && pwd -P) | sed 's,-[[^-]]*$,-common,'`
- ;;
- esac
+ # Debian kernel build Makefiles tend to include a line of the form:
+ # MAKEARGS := -C /usr/src/linux-headers-3.2.0-1-common O=/usr/src/linux-headers-3.2.0-1-486
+ # First try to extract the source directory from this line.
+ KSRC=`sed -n 's/.*-C \([[^ ]]*\).*/\1/p' "$KBUILD"/Makefile`
+ if test ! -e "$KSRC"/include/linux/kernel.h; then
+ # Didn't work. Fall back to name-based heuristics that used to work.
+ case `echo "$KBUILD" | sed 's,/*$,,'` in # (
+ */build)
+ KSRC=`echo "$KBUILD" | sed 's,/build/*$,/source,'`
+ ;; # (
+ *)
+ KSRC=`(cd $KBUILD && pwd -P) | sed 's,-[[^-]]*$,-common,'`
+ ;;
+ esac
+ fi