CIVL=civl
VERIFY=${CIVL} verify -ompNoSimplify -ompLoopDecomp=ROUND_ROBIN -inputTHREAD_MAX=3 -enablePrintf=false 
VERIFYALL=${CIVL} verify -ompNoSimplify -ompLoopDecomp=ALL -inputTHREAD_MAX=3 -enablePrintf=false 
SIMPLIFY=${CIVL} verify -ompLoopDecomp=ALL -inputTHREAD_MAX=3 -enablePrintf=false 
CLOC=cloc --csv --quiet

all: simplify heatedPlate ompBug5

bug: ompBug5 ompBug5Fix ompBug5FixFix

heatedPlate: heated_plate_openmp.c
	@lessecho NAME: heated{\\U}plate{\\U}openmp.c
	@lessecho CITE: \\cite{Quinn:Book04}
	@lessecho TYPE: $$\\text{O}^r$$
	@lessecho SCALE: \\texttt\{NT=3,M=5,N=5,EPSILON=0.1\}
	@$(CLOC) heated_plate_openmp.c
	${VERIFY} -DMATH_ELABORATE_ASSUMPTIONS heated_plate_openmp.c

simplify: dotProduct1S dotProductCriticalS matProduct1S heatedPlateS fig310mxvompS quadS piS 

dotProduct1S: dotProduct1.c
	@lessecho NAME: dotProduct1.c
	@lessecho CITE: \\cite{LLNL:OpenMP:URL}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,N=8\}
	@$(CLOC) dotProduct1.c
	${SIMPLIFY} dotProduct1.c

dotProductCriticalS: dotProduct_critical.c
	@lessecho NAME: dotProduct{\\U}critical.c
	@lessecho CITE: \\cite{PP2012:OpenMP:URL}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,N=100\}
	@$(CLOC) dotProduct_critical.c
	${SIMPLIFY} dotProduct_critical.c

matProduct1S: matProduct1.c
	@lessecho NAME: matProduct1.c
	@lessecho CITE: \\cite{LLNL:OpenMP:URL}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,NRA=8,NCA=8,NCB=8\}
	@$(CLOC) matProduct1.c
	${SIMPLIFY} matProduct1.c

piS: pi.c
	@lessecho NAME: pi.c
	@lessecho CITE: \\cite{PP2012:OpenMP:URL}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,N=100\}
	@$(CLOC) pi.c
	${SIMPLIFY} pi.c

heatedPlateS: heated_plate_openmp.c
	@lessecho NAME: heated{\\U}plate{\\U}openmp.c
	@lessecho CITE: \\cite{Quinn:Book04}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,M=5,N=5,EPSILON=0.1\}
	@$(CLOC) heated_plate_openmp.c
	${SIMPLIFY} -DMATH_ELABORATE_ASSUMPTIONS heated_plate_openmp.c

fig310mxvompS: fig310-mxv-omp.c
	@lessecho NAME: fig3.10-mxv-omp.c
	@lessecho CITE: \\cite{chapman-etal:2008:using-openmp}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,M=10,N=10\}
	@$(CLOC) fig310-mxv-omp.c
	${SIMPLIFY} fig310-mxv-omp.c

quadS: quad_openmp.c
	@lessecho NAME: quad{\\U}openmp.c
	@lessecho CITE: \\cite{Burkardt:OpenMP:URL}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,N=100\}
	@$(CLOC) quad_openmp.c
	${SIMPLIFY} quad_openmp.c

ompBug5: omp_bug5.c
	@lessecho NAME: omp{\\U}bug5.c
	@lessecho CITE: \\cite{LLNL:OpenMP:URL}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,N=10\}
	@$(CLOC) omp_bug5.c
	${SIMPLIFY} omp_bug5.c

ompBug5Fix: omp_bug5fix.c
	@lessecho NAME: omp{\\U}bug5fix.c
	@lessecho CITE: \\cite{LLNL:OpenMP:URL}
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,N=10\}
	@$(CLOC) omp_bug5fix.c
	${SIMPLIFY} omp_bug5fix.c

ompBug5FixFix: omp_bug5fixfix.c
	@lessecho NAME: omp{\U}bug5fixfix.c
	@lessecho CITE: NOCITE
	@lessecho TYPE: $$\\text{O}$$
	@lessecho SCALE: \\texttt\{NT=3,N=10\}
	@$(CLOC) omp_bug5fixfix.c
	${SIMPLIFY} omp_bug5fixfix.c

md: md_openmp.c
	${SIMPLIFY} md_openmp.c

fft: fft_openmp.c
	${SIMPLIFY} fft_openmp.c

poisson: poisson_openmp.c
	${SIMPLIFY} poisson_openmp.c

clean: 
