Index: Jenkinsfile
===================================================================
--- Jenkinsfile	(revision b0ccd1cae8625613608879e09ef64da910b948bd)
+++ Jenkinsfile	(revision f15fe0a1f735a1835eace55776b7074833013644)
@@ -153,5 +153,5 @@
 		dir (BuildDir) {
 			//Append bench results
-			sh "${SrcDir}/benchmark/jenkins.sh ${Settings.GitNewRef} ${Settings.Architecture} ${BuildDir}/bench.json"
+			sh "make --no-print-directory -C benchmark jenkins"
 		}
 	}
@@ -177,7 +177,33 @@
 
 		if( !Settings.Publish ) return
+		if( !Settings.RunBenchmark ) {
+			echo 'No results to publish!!!'
+			return
+		}
 
 		//Then publish the results
-		sh 'curl --silent --show-error -H \'Content-Type: application/json\' --data @${BuildDir}/bench.json https://cforall.uwaterloo.ca:8082/jenkins/publish > /dev/null || true'
+		plot csvFileName: "cforall-${env.BRANCH_NAME}-compilation.csv",
+			csvSeries: [[file: "${BuildDir}/benchmark/compile.csv"]],
+			group: 'Compilation',
+			title: 'Compilation',
+			style: 'line'
+
+		plot csvFileName: 'cforall-${env.BRANCH_NAME}-ctxswitch.csv',
+			csvSeries: [[file: "${BuildDir}/benchmark/ctxswitch.csv"]],
+			group: 'Concurrency',
+			title: 'Context Switching',
+			style: 'line'
+
+		plot csvFileName: 'cforall-${env.BRANCH_NAME}-mutex.csv',
+			csvSeries: [[file: "${BuildDir}/benchmark/mutex.csv"]],
+			group: 'Concurrency',
+			title: 'Mutual Exclusion',
+			style: 'line'
+
+		plot csvFileName: 'cforall-${env.BRANCH_NAME}-signal.csv',
+			csvSeries: [[file: "${BuildDir}/benchmark/signal.csv"]],
+			group: 'Concurrency',
+			title: 'Internal and External Scheduling',
+			style: 'line'
 	}
 }
Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision b0ccd1cae8625613608879e09ef64da910b948bd)
+++ benchmark/Makefile.am	(revision f15fe0a1f735a1835eace55776b7074833013644)
@@ -67,4 +67,5 @@
 
 .NOTPARALLEL:
+.PHONY: compile.csv ctxswitch.csv mutex.csv signal.csv
 
 ## =========================================================================================================
@@ -94,38 +95,45 @@
 ## =========================================================================================================
 
+FIX_NEW_LINES = cat $@ | tr "\n" "\t" | sed -r 's/\t,/,/' | tr "\t" "\n" > $@
+
 jenkins$(EXEEXT):
-	@echo "{"
-	@echo -e '\t"githash": "'${githash}'",'
-	@echo -e '\t"arch": "'   ${arch}   '",'
 @DOifskipcompile@
-	@echo -e '\t"compile": {'
-	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
-	@echo -e '\t\t"dummy" : {}'
-	@echo -e '\t},'
+	@+make compile.csv
 @DOendif@
-	@echo -e '\t"ctxswitch": {'
-	@echo -en '\t\t"coroutine":'
-	@+make ctxswitch-cfa_coroutine.runquiet
-	@echo -en '\t\t,"thread":'
-	@+make ctxswitch-cfa_thread.runquiet
-	@echo -e '\t},'
-	@echo -e '\t"mutex": ['
-	@echo -en '\t\t'
-	@+make mutex-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make mutex-cfa2.runquiet
-	@echo -e '\t],'
-	@echo -e '\t"scheduling": ['
-	@echo -en '\t\t'
-	@+make signal-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make signal-cfa2.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa2.runquiet
-	@echo -e '\n\t],'
-	@echo -e '\t"epoch": ' $(shell date +%s)
-	@echo "}"
+	@+make ctxswitch.csv
+	@+make mutex.csv
+	@+make signal.csv
+
+compile.csv:
+	@echo "array,attributes,empty,expression,io,monitor,operators,typeof" > $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-array.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-empty.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-expression.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-io.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-monitor.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-operators.make >> $@
+	@+make TIME_FORMAT='%e' PRINT_FORMAT='' compile-typeof.make >> $@
+	@$(srcdir)/fixcsv.sh $@
+
+ctxswitch.csv:
+	@echo "coroutine,thread" > $@
+	@+make ctxswitch-cfa_coroutine.runquiet >> $@ && echo -n ',' >> $@
+	@+make ctxswitch-cfa_thread.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
+
+mutex.csv:
+	@echo "1-monitor,2-monitor" > $@
+	@+make mutex-cfa1.runquiet >> $@ && echo -n ',' >> $@
+	@+make mutex-cfa2.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
+
+signal.csv:
+	@echo "signal-1,signal-2,waitfor-1,waitfor-2" > $@
+	@+make signal-cfa1.runquiet >> $@ && echo -n ',' >> $@
+	@+make signal-cfa2.runquiet >> $@ && echo -n ',' >> $@
+	@+make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@
+	@+make waitfor-cfa2.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
 
 ## =========================================================================================================
Index: benchmark/Makefile.in
===================================================================
--- benchmark/Makefile.in	(revision b0ccd1cae8625613608879e09ef64da910b948bd)
+++ benchmark/Makefile.in	(revision f15fe0a1f735a1835eace55776b7074833013644)
@@ -401,4 +401,5 @@
 PRINT_FORMAT = %20s: #Comments needed for spacing
 dummy_SOURCES = dummyC.c dummyCXX.cpp
+FIX_NEW_LINES = cat $@ | tr "\n" "\t" | sed -r 's/\t,/,/' | tr "\t" "\n" > $@
 CTXSWITCH_DEPEND = loop.run function.run fetch_add.run \
 	tls-fetch_add.run ctxswitch-pthread.run \
@@ -731,4 +732,5 @@
 
 .NOTPARALLEL:
+.PHONY: compile.csv ctxswitch.csv mutex.csv signal.csv
 
 all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
@@ -756,37 +758,42 @@
 
 jenkins$(EXEEXT):
-	@echo "{"
-	@echo -e '\t"githash": "'${githash}'",'
-	@echo -e '\t"arch": "'   ${arch}   '",'
 @DOifskipcompile@
-	@echo -e '\t"compile": {'
-	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
-	@echo -e '\t\t"dummy" : {}'
-	@echo -e '\t},'
+	@+make compile.csv
 @DOendif@
-	@echo -e '\t"ctxswitch": {'
-	@echo -en '\t\t"coroutine":'
-	@+make ctxswitch-cfa_coroutine.runquiet
-	@echo -en '\t\t,"thread":'
-	@+make ctxswitch-cfa_thread.runquiet
-	@echo -e '\t},'
-	@echo -e '\t"mutex": ['
-	@echo -en '\t\t'
-	@+make mutex-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make mutex-cfa2.runquiet
-	@echo -e '\t],'
-	@echo -e '\t"scheduling": ['
-	@echo -en '\t\t'
-	@+make signal-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make signal-cfa2.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa2.runquiet
-	@echo -e '\n\t],'
-	@echo -e '\t"epoch": ' $(shell date +%s)
-	@echo "}"
+	@+make ctxswitch.csv
+	@+make mutex.csv
+	@+make signal.csv
+
+compile.csv:
+	@echo "array,attributes,empty,expression,io,monitor,operators,typeof" > $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-array.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-empty.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-expression.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-io.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-monitor.make >> $@
+	@+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-operators.make >> $@
+	@+make TIME_FORMAT='%e' PRINT_FORMAT='' compile-typeof.make >> $@
+	@$(srcdir)/fixcsv.sh $@
+
+ctxswitch.csv:
+	@echo "coroutine,thread" > $@
+	@+make ctxswitch-cfa_coroutine.runquiet >> $@ && echo -n ',' >> $@
+	@+make ctxswitch-cfa_thread.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
+
+mutex.csv:
+	@echo "1-monitor,2-monitor" > $@
+	@+make mutex-cfa1.runquiet >> $@ && echo -n ',' >> $@
+	@+make mutex-cfa2.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
+
+signal.csv:
+	@echo "signal-1,signal-2,waitfor-1,waitfor-2" > $@
+	@+make signal-cfa1.runquiet >> $@ && echo -n ',' >> $@
+	@+make signal-cfa2.runquiet >> $@ && echo -n ',' >> $@
+	@+make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@
+	@+make waitfor-cfa2.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
 
 loop$(EXEEXT):
Index: benchmark/fixcsv.sh
===================================================================
--- benchmark/fixcsv.sh	(revision f15fe0a1f735a1835eace55776b7074833013644)
+++ benchmark/fixcsv.sh	(revision f15fe0a1f735a1835eace55776b7074833013644)
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+CSV=$1
+tmpfile=$(mktemp)
+function finish {
+  rm -rf "$tmpfile"
+}
+trap finish EXIT
+
+mv $CSV $tmpfile
+cat $tmpfile | tr "\n" "\t" | sed -r 's/\t,/,/g;s/,\t/,/g' | tr "\t" "\n" > $CSV
Index: nchmark/jenkins.sh
===================================================================
--- benchmark/jenkins.sh	(revision b0ccd1cae8625613608879e09ef64da910b948bd)
+++ 	(revision )
@@ -1,9 +1,0 @@
-#!/bin/bash
-
-set -o pipefail
-
-GitNewRef=$1
-Architecture=$2
-Out=$3
-
-make --no-print-directory -C benchmark jenkins githash=${GitNewRef} arch=${Architecture} | tee ${Out}
