CC = gcc

#EXTRA = -DDEBUG
CFLAGS = -g $(EXTRA) -Wall -O2
LDFLAGS = -lm -g $(EXTRA)

ifeq ($(shell uname), Darwin)	
	EXT = so #dylib
#	CFLAGS = $(CFLAGSOLD)
	LDFLAGS = -L/sw/lib/ -lm -g $(EXTRA) 
	SHARING = -bundle -flat_namespace -undefined suppress
else
#	EXT = so
	SHARING = -shared
#	CFLAGS = $(CFLAGSOLD)
endif

FILES = an_math.c kerr.c arraytrace.c an_raytrace.c rtr.c nrutil.c discread.c nrinterp.c 
OBJS = $(FILES:.c=.o)

FILES2 = nrutil.c nrmath.c
OBJS2 = $(FILES2:.c=.o)

%.o: %.c
	$(CC) -c $(CFLAGS) $*.c -o $*.o
	$(CC) -MM $(CFLAGS) $*.c > $*.d

-include $(OBJS:.o=.d)

#discperturb: discperturb.o nrutil.o nrmath.o
#	$(CC) $(LDFLAGS) -lm -o $@ $^
#
#discperturb.o: discperturb.c
#	$(CC) $(CFLAGS) -c discperturb.c
#
#nrmath.o: nrmath.c
#	$(CC) $(CFLAGS) -c nrmath.c



#rtr_test.o: rtr_test.c
#	$(CC) -c $(CFLAGS) $*.c -o $*.o
#	$(CC) -MM $(CFLAGS) $*.c > $*.d
#
#-include rtr_test.d
#
#rtr_test: rtr.o kerr.o rtr_test.o
#	$(CC) $(LDFLAGS) -o $@ $^
#
#tracetest.o: tracetest.c
#	$(CC) -c $(CFLAGS) $*.c -o $*.o
#	$(CC) -MM $(CFLAGS) $*.c > $*.d
#
#-include tracetest.d
#
tracetest: tracetest.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

#gen_rtr.o: gen_rtr.c
#	$(CC) -c $(CFLAGS) $*.c -o $*.o
#	$(CC) -MM $(CFLAGS) $*.c > $*.d
#
#-include gen_rtr.d
#
rlam: rlam.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

gen_rtr: gen_rtr.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

image_test: image_test.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

discperturb: discperturb.o $(OBJS2)
	$(CC) $(LDFLAGS) -o $@ $^

testperturb: testperturb.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

interperturb: interperturb.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

testinterp: testinterp.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

imagedensity: imagedensity.o $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

raytrace: raytrace.i $(OBJS)
	swig2.0 -python raytrace.i
	gcc -c raytrace_wrap.c -I/usr/include/python2.7
	gcc -lm -shared -Wl,--no-as-needed -Wl,-soname,_raytrace.so $(OBJS) raytrace_wrap.o -o _raytrace.so 
clean:
	rm -f  rtr_test *.o *.d
