CPP=g++
AR=ar
RANLIB=ranlib
CFLAGS= -O2 -g -Wall
LIBPATH=../src/
LDFLAGS=-L$(LIBPATH) -lpards
INCFLAGS=-I$(LIBPATH)

all: sample fib qsort listsample listsample2 queuesample workpoolsample spmdsample spmdmatmul timedreadsample timedlistsample timedqueuesample intrreadsample intrlistsample intrqueuesample mergersample mergersample2 intrputsample timedputsample

sample: sample.cc $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o sample sample.cc $(INCFLAGS) $(LDFLAGS) 

fib: fib.cc $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o fib fib.cc $(INCFLAGS) $(LDFLAGS) 

qsort: qsort.cc $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o qsort qsort.cc $(INCFLAGS) $(LDFLAGS) 

listsample: listsample.cc $(LIBPATH)SyncList.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o listsample listsample.cc $(INCFLAGS) $(LDFLAGS) 

listsample2: listsample2.cc $(LIBPATH)SyncList.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o listsample2 listsample2.cc $(INCFLAGS) $(LDFLAGS)

queuesample: queuesample.cc $(LIBPATH)SyncQueue.h $(LIBPATH)SyncList.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o queuesample queuesample.cc $(INCFLAGS) $(LDFLAGS)

workpoolsample: workpoolsample.cc $(LIBPATH)WorkPool.h $(LIBPATH)SyncQueue.h $(LIBPATH)SyncList.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o workpoolsample workpoolsample.cc $(INCFLAGS) $(LDFLAGS)

spmdsample: spmdsample.cc $(LIBPATH)libpards.h $(LIBPATH)parblock.h
	$(CPP) $(CFLAGS) -o spmdsample spmdsample.cc $(INCFLAGS) $(LDFLAGS) 

spmdmatmul: spmdmatmul.cc $(LIBPATH)libpards.h $(LIBPATH)parblock.h
	$(CPP) $(CFLAGS) -o spmdmatmul spmdmatmul.cc $(INCFLAGS) $(LDFLAGS) 

timedreadsample: timedreadsample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o timedreadsample timedreadsample.cc $(INCFLAGS) $(LDFLAGS) 

intrreadsample: intrreadsample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o intrreadsample intrreadsample.cc $(INCFLAGS) $(LDFLAGS) 

intrlistsample: intrlistsample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o intrlistsample intrlistsample.cc $(INCFLAGS) $(LDFLAGS) 
intrqueuesample: intrqueuesample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h
	$(CPP) $(CFLAGS) -o intrqueuesample intrqueuesample.cc $(INCFLAGS) $(LDFLAGS) 

timedlistsample: timedlistsample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h $(LIBPATH)SyncList.h
	$(CPP) $(CFLAGS) -o timedlistsample timedlistsample.cc $(INCFLAGS) $(LDFLAGS) 

timedqueuesample: timedqueuesample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h $(LIBPATH)SyncList.h $(LIBPATH)SyncQueue.h
	$(CPP) $(CFLAGS) -o timedqueuesample timedqueuesample.cc $(INCFLAGS) $(LDFLAGS) 

mergersample: mergersample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h $(LIBPATH)SyncList.h $(LIBPATH)SyncQueue.h $(LIBPATH)Merger.h
	$(CPP) $(CFLAGS) -o mergersample mergersample.cc $(INCFLAGS) $(LDFLAGS) 
mergersample2: mergersample2.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h $(LIBPATH)SyncList.h $(LIBPATH)SyncQueue.h $(LIBPATH)Merger.h
	$(CPP) $(CFLAGS) -o mergersample2 mergersample2.cc $(INCFLAGS) $(LDFLAGS) 
intrputsample: intrputsample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h $(LIBPATH)SyncList.h $(LIBPATH)SyncQueue.h $(LIBPATH)Merger.h
	$(CPP) $(CFLAGS) -o intrputsample intrputsample.cc $(INCFLAGS) $(LDFLAGS) 
timedputsample: timedputsample.cc $(LIBPATH)libpards.h $(LIBPATH)Sync.h $(LIBPATH)SyncList.h $(LIBPATH)SyncQueue.h $(LIBPATH)Merger.h
	$(CPP) $(CFLAGS) -o timedputsample timedputsample.cc $(INCFLAGS) $(LDFLAGS) 

clean:
	rm -f *.o *~ sample fib qsort listsample listsample2 queuesample workpoolsample spmdsample timedreadsample timedlistsample timedqueuesample mergersample timedputsample intrputsample intrreadsample intrlistsample intrqueuesample spmdmatmul mergersample2
