	CIVL=civl
NPROCS=-input_mpi_nprocs
VERIFY=${CIVL} verify 

all: seq mpi

seq: 04_ser 05_ser_dot 05_ser_mat_vect 07_ser_mat_mult 09_bug 10_ser_jac \
14a_ser_bit 14a_rec_dfs 14a_itr_dfs

04_ser: chap04/serial.c
	${VERIFY} chap04/serial.c

05_ser_dot: chap05/serial_dot.c
	${VERIFY} chap05/serial_dot.c

05_ser_mat_vect: chap05/serial_mat_vect.c
	${VERIFY} chap05/serial_mat_vect.c

07_ser_mat_mult: chap07/serial_mat_mult.c 
	${VERIFY} chap07/serial_mat_mult.c 

09_bug: chap09/bug.c 
	${VERIFY} chap09/bug.c 

10_ser_jac: chap10/serial_jacobi.c
	${VERIFY} chap10/serial_jacobi.c

14a_ser_bit: chap14a/serial_bitonic.c
	${VERIFY} chap14a/serial_bitonic.c

14a_rec_dfs: chap14a/recursive_dfs.c
	${VERIFY} -checkMemoryLeak=false chap14a/recursive_dfs.c

14a_itr_dfs: chap14a/iterative_dfs.c
	${VERIFY} chap14a/iterative_dfs.c

mpi: 03_greetings 04_get_data 05_get_data1 05_get_data2 05_reduce \
05_par_dot 05_par_dot1 05_par_mat_vect 06_count 06_get_data3 06_sd_row \
06_sd_col 06_sd_trg 06_sd_col_row 06_get_data4 06_sp_row 07_top_fcns \
09_mat_mult 10_par_jac 10_sort_1 10_sort_2 10_sort_3 10_sort_4 \
11_par_trap 12_pp 13_par_bit 14_par_tree_sr 14_par_dfs 15_lsolve 15_sp_lsolve

03_greetings: chap03/greetings.c
	${VERIFY} ${NPROCS}=2 chap03/greetings.c

04_get_data: chap04/get_data.c
	${VERIFY} ${NPROCS}=2 chap04/get_data.c

05_get_data1: chap05/get_data1.c
	${VERIFY} ${NPROCS}=2 chap05/get_data1.c

05_get_data2: chap05/get_data2.c
	${VERIFY} ${NPROCS}=2 chap05/get_data2.c

05_reduce: chap05/reduce.c
	${VERIFY} ${NPROCS}=2 chap05/reduce.c

05_par_dot: chap05/parallel_dot.c
	${VERIFY} ${NPROCS}=2 chap05/parallel_dot.c

05_par_dot1: chap05/parallel_dot1.c
	${VERIFY} ${NPROCS}=2 chap05/parallel_dot1.c

05_par_mat_vect: chap05/parallel_mat_vect.c
	${VERIFY} ${NPROCS}=2 hap05/parallel_mat_vect.c

06_count: chap06/count.c
	${VERIFY} ${NPROCS}=2 chap06/count.c

06_get_data3: chap06/get_data3.c
	${VERIFY} ${NPROCS}=2 chap06/get_data3.c

06_sd_row: chap06/send_row.c
	${VERIFY} ${NPROCS}=2 chap06/send_row.c

06_sd_col: chap06/send_col.c
	${VERIFY} ${NPROCS}=2 chap06/send_col.c

06_sd_trg: chap06/send_triangle.c 
	${VERIFY} ${NPROCS}=2 chap06/send_triangle.c 

06_sd_col_row: chap06/send_col_to_row.c
	${VERIFY} ${NPROCS}=2 chap06/send_col_to_row.c

06_get_data4: chap06/get_data4.c
	${VERIFY} ${NPROCS}=2 chap06/get_data4.c

06_sp_row: chap06/sparse_row.c
	${VERIFY} ${NPROCS}=2 chap06/sparse_row.c

07_top_fcns: chap07/top_fcns.c
	${VERIFY} ${NPROCS}=2 chap07/top_fcns.c

09_mat_mult: chap09/mat_mult.c
	${VERIFY} ${NPROCS}=2 chap09/mat_mult.c

10_par_jac: chap10/parallel_jacobi.c
	${VERIFY} ${NPROCS}=2 chap10/parallel_jacobi.c

10_sort_1: chap10/sort_1.c
	${VERIFY} ${NPROCS}=2 chap10/sort_1.c

10_sort_2: chap10/sort_2.c chap10/sort_2.h
	${VERIFY} ${NPROCS}=2 chap10/sort_2.c

10_sort_3: chap10/sort_3.c
	${VERIFY} ${NPROCS}=2 chap10/sort_3.c

10_sort_4: chap10/sort_4.c
	${VERIFY} ${NPROCS}=2 chap10/sort_4.c

11_par_trap: chap11/parallel_trap.c
	${VERIFY} ${NPROCS}=2 chap11/parallel_trap.c

12_pp: chap12/ping_pong.c
	${VERIFY} ${NPROCS}=2 chap12/ping_pong.c

13_par_bit: chap14a/parallel_bitonic.c
	${VERIFY} ${NPROCS}=2 chap14a/parallel_bitonic.c

14_par_tree_sr: chap14b/par_tree_search.c
	${VERIFY} ${NPROCS}=2 chap14b/par_tree_search.c

14_par_dfs: chap14b/par_dfs.c
	${VERIFY} ${NPROCS}=2 chap14b/par_dfs.c

15_lsolve: chap15/linsolve.c
	${VERIFY} ${NPROCS}=2 chap15/linsolve.c

15_sp_lsolve: chap15/sparse_linsolve.c
	${VERIFY} ${NPROCS}=2 chap15/sparse_linsolve.c

clean:
	rm -rf CIVLREP/~*
