SUNDIALS_PATH = 
HDF5_INCL_PATH = 
HDF5_LIB_PATH = 

CC = gcc 
CFLAGS = -DCHIMES_USE_DOUBLE_PRECISION 
EXEC = libchimes.so

INCL = 
LIBS = -lm 

ifeq ($(strip $(SUNDIALS_PATH)),)
    INCL +=
    LIBS += -lsundials_cvode -lsundials_nvecserial -lsundials_sunlinsoldense -lsundials_sunmatrixdense
else
    INCL += -I$(strip $(SUNDIALS_PATH))/include
    LIBS += -L$(strip $(SUNDIALS_PATH))/lib64 -L$(strip $(SUNDIALS_PATH))/lib -lsundials_cvode -lsundials_nvecserial -lsundials_sunlinsoldense -lsundials_sunmatrixdense
endif 

ifeq ($(strip $(HDF5_INCL_PATH)),)
    INCL += 
else 
    INCL += -I$(strip $(HDF5_INCL_PATH)) 
endif 

ifeq ($(strip $(HDF5_LIB_PATH)),)
    LIBS += -lhdf5 
else 
    LIBS += -L$(strip $(HDF5_LIB_PATH)) -lhdf5 
endif 

OBJS = ./src/chimes_cooling.o ./src/rate_equations.o ./src/update_rates.o ./src/init_chimes.o ./src/chimes.o 

$(EXEC): $(OBJS)
	$(CC) $(CFLAGS) -shared -o $(EXEC) $(OBJS) $(LIBS) 

./src/chimes.o: ./src/chimes.c ./src/chimes_vars.h ./src/chimes_proto.h ./src/chimes_interpol.h 
	$(CC) $(CFLAGS) -c -Wall -fpic $(INCL) ./src/chimes.c -o ./src/chimes.o

./src/init_chimes.o: ./src/init_chimes.c ./src/chimes_vars.h ./src/chimes_proto.h ./src/chimes_interpol.h 
	$(CC) $(CFLAGS) -c -Wall -fpic $(INCL) ./src/init_chimes.c -o ./src/init_chimes.o

./src/update_rates.o: ./src/update_rates.c ./src/chimes_vars.h ./src/chimes_proto.h ./src/chimes_interpol.h 
	$(CC) $(CFLAGS) -c -Wall -fpic $(INCL) ./src/update_rates.c -o ./src/update_rates.o

./src/rate_equations.o: ./src/rate_equations.c ./src/chimes_vars.h ./src/chimes_proto.h ./src/chimes_interpol.h 
	$(CC) $(CFLAGS) -c -Wall -fpic $(INCL) ./src/rate_equations.c -o ./src/rate_equations.o

./src/chimes_cooling.o: ./src/chimes_cooling.c ./src/chimes_vars.h ./src/chimes_proto.h ./src/chimes_interpol.h 
	$(CC) $(CFLAGS) -c -Wall -fpic $(INCL) ./src/chimes_cooling.c -o ./src/chimes_cooling.o
