UNAME := $(shell uname)

INCLUDES = ../
LIBS = ../

CFLAGS = -g -pedantic -Wall -I$(INCLUDES)

ifeq ($(UNAME), Darwin)
# do something for Mac
# Mac does not use -lrt library
LFLAGS = -L$(LIBS) -lm -lpthread -lCosmosDevice -lCosmosSupport
endif
ifeq ($(UNAME), Linux)
# do something Linux-y
LFLAGS = -L$(LIBS) -lm -lrt -lpthread -lCosmosDevice -lCosmosSupport
endif
ifeq ($(UNAME), Solaris)
# do something Solaris-y
endif

all : att_test  jpl_test gauss_jackson_test matrix_test json_test math_test convert_test interpreter gauss_jackson_circle_test

.cpp.o:
	g++ -c $(CFLAGS) $<

.c.o:
	gcc -c -std=c99 $(CFLAGS) $<

att_test : att_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o att_test att_test.o $(LIBS)/libCosmosSupport.a -lm

att_test.o : att_test.cpp $(INCLUDES)/mathlib.h $(INCLUDES)/convertlib.h

jpl_test : jpl_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o jpl_test jpl_test.o $(LIBS)/libCosmosSupport.a -lm -lrt

jpl_test.o : jpl_test.cpp $(INCLUDES)/convertlib.h $(INCLUDES)/timelib.h

json_test : json_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o json_test json_test.o $(LIBS)/libCosmosSupport.a -lm -lrt
	
json_test.o : json_test.cpp $(INCLUDES)/jsonlib.h

gauss_jackson_circle_test : gauss_jackson_circle_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o gauss_jackson_circle_test gauss_jackson_circle_test.o $(LIBS)/libCosmosSupport.a -lm

gauss_jackson_circle_test.o : gauss_jackson_circle_test.cpp $(INCLUDES)/mathlib.h

gauss_jackson_test : gauss_jackson_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o gauss_jackson_test gauss_jackson_test.o $(LIBS)/libCosmosSupport.a -lm

gauss_jackson_test.o : gauss_jackson_test.cpp $(INCLUDES)/mathlib.h

mathlibOrbitTest : mathlibOrbitTest.cpp
	g++ $(CFLAGS) -o mathlibOrbitTest mathlibOrbitTest.cpp $(LIBS)/libCosmosSupport.a -lm

matrix_test.o : matrix_test.cpp $(INCLUDES)/mathlib.h

ifeq ($(UNAME), Darwin) # for Mac
matrix_test : matrix_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o matrix_test matrix_test.o $(LIBS)/libCosmosSupport.a -lm
else
matrix_test : matrix_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o matrix_test matrix_test.o $(LIBS)/libCosmosSupport.a -lm -lrt
endif

math_test.o : math_test.cpp $(INCLUDES)/mathlib.h

ifeq ($(UNAME), Darwin) # for Mac
math_test : math_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o math_test math_test.o $(LIBS)/libCosmosSupport.a -lm
else
math_test : math_test.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o math_test math_test.o $(LIBS)/libCosmosSupport.a -lm -lrt
endif

convert_test.o : convert_test.cpp $(INCLUDES)/mathlib.h $(INCLUDES)/convertlib.h

convert_test : convert_test.o $(LIBS)/libCosmosSupport.a $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o convert_test convert_test.o $(LIBS)/libCosmosSupport.a -lm -lrt

interpreter.o : interpreter.cpp $(INCLUDES)/mathlib.h $(INCLUDES)/cssl.h $(INCLUDES)/convertlib.h $(INCLUDES)/timelib.h $(INCLUDES)/jsonlib.h

interpreter : interpreter.o $(LIBS)/libCosmosSupport.a
	g++ $(CFLAGS) -o interpreter interpreter.o $(LIBS)/libCosmosSupport.a -lm

clean : 
	rm -f *.o math_test matrix_test
	

