#!/bin/sh
# Modifies the Makefile in the current directory (and optionally its subdirs),
# - to add debug info (-g3)
# - optionally (default) remove optimizations (-O[1-9]?)
# - optionally remove -DNDEBUG and -DNO_DEBUG

# depth is 3 because flags.make is within CMakeFiles/foo.dir/
mxdp="-maxdepth 3"
for i in $*; do
  case $i in
    -k) keep=1;;
    -r) mxdp=;;
    -n) ndebug=1;;
    *) printf "Usage: adddebug [-k] [-r] [-n]\n  -k: keep optimizations (removed by default)\n  -r: recursive (process all subdirectories)\n  -n: compile without NDEBUG and NO_DEBUG being defined (makes kDebug calls work)\n"; exit 1;;
  esac
done

xpr='s/^((C|CXX|LD)_FLAGS[ \t]*=.*)$/\1 -g3/'
if test -z $keep; then
  xpr="$xpr;"'s/[\t ]-O[1-9]?\b//g'
  xpr="$xpr;"'s/[\t ]-march=\S+\b//g'
fi
if test -z $ndebug; then
  xpr="$xpr;"'s/[\t ]-DNDEBUG\b//g'
  xpr="$xpr;"'s/[\t ]-DNO_DEBUG\b//g'
fi
find . $mxdp -name flags.make -print0 | xargs -0 sed -rie "$xpr"
