koch: better valgrind support

This commit is contained in:
Andreas Rumpf 2017-03-17 08:29:28 +01:00
commit 7ba565258d
2 changed files with 26 additions and 5 deletions

View file

@ -513,12 +513,26 @@ proc pushCsources() =
setCurrentDir(cwd)
proc valgrind(cmd: string) =
exec("nim c " & cmd)
var i = cmd.len-1
while i >= 0 and cmd[i] != ' ': dec i
let file = if i >= 0: substr(cmd, i+1) else: cmd
# somewhat hacky: '=' sign means "pass to valgrind" else "pass to Nim"
let args = parseCmdLine(cmd)
var nimcmd = ""
var valcmd = ""
for i, a in args:
if i == args.len-1:
# last element is the filename:
valcmd.add ' '
valcmd.add changeFileExt(a, ExeExt)
nimcmd.add ' '
nimcmd.add a
elif '=' in a:
valcmd.add ' '
valcmd.add a
else:
nimcmd.add ' '
nimcmd.add a
exec("nim c" & nimcmd)
let supp = getAppDir() / "tools" / "nimgrind.supp"
exec("valgrind --suppressions=" & supp & " " & changeFileExt(file, ""))
exec("valgrind --suppressions=" & supp & valcmd)
proc showHelp() =
quit(HelpText % [VersionAsString & spaces(44-len(VersionAsString)),