#Variables
CC = gcc
OBJ = InitializeSparseMat.o InitializeSparseRow.o FreeSparseMat.o FreeSparseRow.o ReadSparseMat.o AppendToSparseRow.o WriteSparseMat.o TransposeSparseMat.o MultiplySparseRows.o MultiplySparseMats.o

#Linking Executable
MatrixTest: SparseMatTest.c $(OBJ)
	$(CC) -o SparseMatTest -lm SparseMatTest.c $(OBJ)
	
#Object Files using automake rules for .c files
#BookKeeping
InitializeSparseMat.o: InitializeSparseMat.c SparseMat.h
InitializeSparseRow.0: InitializeSparseRow.c SparseMat.h
FreeSparseMat.o: FreeSparseMat.c SparseMat.h
FreeSparseRow.o: FreeSparseRow.c SparseMat.h

#I/O
ReadSparseMat.o:  	ReadSparseMat.c
WriteSparseMat.o:	WriteSparseMat.c
AppendToSparseRow.o: 	AppendToSparseRow.c

#Arithmetic
MultiplySparseRows.o:  MultiplySparseRows.c
MultiplySparseMats.o:  MultiplySparseMats.c

#Structure
TransposeSparseMat.o: TransposeSparseMat.c

# Tidying
clean:
	rm SparseMatTest *.o *~
