include ../../settings.make


CCFLAGS += -I../../include 
LDFLAGS += ../../lib/libquickflash.a

CCFLAGS_PYTHON += -I../../include 
LDFLAGS_PYTHON += ../../lib/libquickflash.a


PYTHON_FILES = _pytracer.so

BIN_FILES = raytracer_serial

OBJ_FILES = materials.o rays.o stat_bins.o detector.o raytracer_core.o


all : $(BIN_FILES) $(PYTHON_FILES)

clean : clean-obj
	rm -f $(BIN_FILES) $(PYTHON_FILES)

clean-obj :
	rm -f *.o


# raytrace : demo.o $(OBJ_FILES)
# 	$(CXX) -o demo demo.o $(LDFLAGS)

raytracer : raytracer.o $(OBJ_FILES)
	$(LD) -o raytracer raytracer.o $(OBJ_FILES) $(LDFLAGS) \
	    $(LDFLAGS_GSL) $(LDFLAGS_HDF5)

raytracer.o : raytracer.cpp materials.hpp rays.hpp stat_bins.hpp detector.hpp
	$(CXX) -o raytracer.o -c $(CCFLAGS) $(CCFLAGS_HDF5) $(CCFLAGS_GSL) \
	    raytracer.cpp

raytracer_serial : raytracer_serial.o $(OBJ_FILES)
	$(LD) -o raytracer_serial raytracer_serial.o $(OBJ_FILES) \
	    $(LDFLAGS) $(LDFLAGS_GSL) $(LDFLAGS_HDF5)

raytracer_serial.o : raytracer_serial.cpp raytracer_core.hpp materials.hpp
	$(CXX) -c $(CCFLAGS) $(CCFLAGS_HDF5) $(CCFLAGS_GSL) \
	    -o raytracer_serial.o raytracer_serial.cpp

raytracer_core.o : raytracer_core.hpp raytracer_core.cpp detector.hpp \
	    rays.hpp stat_bins.hpp
	$(CXX) -c $(CCFLAGS) $(CCFLAGS_HDF5) $(CCFLAGS_GSL) $(CCFLAGS_SHARED) \
	    -o raytracer_core.o raytracer_core.cpp

materials.o : materials.hpp materials.cpp
	$(CXX) -o materials.o -c $(CCFLAGS) $(CCFLAGS_HDF5) $(CCFLAGS_SHARED) \
	    materials.cpp

rays.o : rays.hpp rays.cpp
	$(CXX) -o rays.o -c $(CCFLAGS) $(CCFLAGS_GSL) $(CCFLAGS_SHARED) \
	    rays.cpp

stat_bins.o : stat_bins.hpp stat_bins.cpp
	$(CXX) -o stat_bins.o -c $(CCFLAGS) $(CCFLAGS_SHARED) stat_bins.cpp

detector.o : detector.hpp detector.cpp rays.hpp stat_bins.hpp
	$(CXX) -o detector.o -c $(CCFLAGS) $(CCFLAGS_GSL) $(CCFLAGS_SHARED) \
	    detector.cpp


## SWIG

SWIG_SOURCES = pytracer_core.hpp raytracer_core.o

pytracer.py python_pytracer_wrap.cxx : $(SWIG_SOURCES) pytracer.i
	$(SWIG) -python -c++ -o python_pytracer_wrap.cxx pytracer.i

_pytracer.so : python_pytracer_wrap.o $(OBJ_FILES)
	$(LD_PYTHON) -o _pytracer.so python_pytracer_wrap.o $(OBJ_FILES) \
	    $(LDFLAGS_PYTHON) $(LDFLAGS_SHARED_PYTHON) $(LDFLAGS_HDF5) \
	    $(LDFLAGS_GSL)

python_pytracer_wrap.o : pytracer.py python_pytracer_wrap.cxx
	$(CXX_PYTHON) -o python_pytracer_wrap.o -c $(CCFLAGS_PYTHON) \
	    $(CCFLAGS_HDF5) $(CCFLAGS_SHARED_PYTHON) $(CCFLAGS_GSL) \
	    python_pytracer_wrap.cxx
