|      1 ifndef $(ROOT) |         | 
|      2 	ROOT=$(shell pwd)/.. |         | 
|      3 endif |         | 
|      4  |         | 
|      5 include $(ROOT)/config.mk |         | 
|      6  |         | 
|      7 vpath %.cc $(ROOT)/src |         | 
|      8 vpath %.h $(ROOT)/include |         | 
|      9 LIBOBJS=raytracer.o scene.o sampler.o noise.o container.o kdtree.o octree.o |         | 
|     10 CCFLAGS+=-I$(ROOT)/include |         | 
|     11  |         | 
|     12 ### Targets ### |         | 
|     13 all: libs-float libs-double python-module |         | 
|     14  |         | 
|     15 libs-float: |         | 
|     16 	mkdir -p $(ROOT)/bin/$@ |         | 
|     17 	$(MAKE) -C $(ROOT)/bin/$@ -f $(ROOT)/src/Makefile libs ROOT="$(ROOT)" CCFLAGS="$(CCFLAGS) -fsingle-precision-constant" |         | 
|     18  |         | 
|     19 libs-double: |         | 
|     20 	mkdir -p $(ROOT)/bin/$@ |         | 
|     21 	$(MAKE) -C $(ROOT)/bin/$@ -f $(ROOT)/src/Makefile libs ROOT="$(ROOT)" CCFLAGS="$(CCFLAGS) -DPYRIT_DOUBLE" |         | 
|     22  |         | 
|     23 libs: $(LIBOBJS) |         | 
|     24  |         | 
|     25 python-module: libs-float |         | 
|     26 	mkdir -p $(ROOT)/bin/$@ |         | 
|     27 	$(MAKE) -C $(ROOT)/bin/$@ -f $(ROOT)/src/Makefile $(MODULENAME) ROOT="$(ROOT)" |         | 
|     28  |         | 
|     29 $(MODULENAME): raytracermodule.o |         | 
|     30 	$(CXX) -shared -o $@ $< $(ROOT)/bin/libs-float/*.o $(LDFLAGS) $(PY_LDFLAGS) |         | 
|     31  |         | 
|     32 clean: |         | 
|     33 	rm -rf $(ROOT)/bin/libs-* |         | 
|     34 	rm -rf $(ROOT)/bin/python-module |         | 
|     35  |         | 
|     36  |         | 
|     37 ### Rules ### |         | 
|     38 %.o: %.cc |         | 
|     39 	$(CXX) -c -o $@ $(CCFLAGS) $< |         | 
|     40  |         | 
|     41  |         | 
|     42 ### Dependencies ### |         | 
|     43 matrix.o: matrix.cc matrix.h vector.h common.h |         | 
|     44 noise.o: noise.cc noise.h common.h |         | 
|     45 scene.o: scene.cc scene.h sampler.h vector.h noise.h common.h |         | 
|     46 sampler.o: sampler.cc sampler.h vector.h common.h |         | 
|     47 container.o: container.cc container.h scene.h common.h |         | 
|     48 kdtree.o: kdtree.cc kdtree.h scene.h common.h |         | 
|     49 octree.o: octree.cc octree.h scene.h common.h |         | 
|     50 raytracer.o: raytracer.cc raytracer.h scene.h vector.h noise.h common.h |         | 
|     51  |         | 
|     52 raytracermodule.o: raytracermodule.cc $(LIBOBJS) |         | 
|     53 	$(CXX) -c -o $@ $(CCFLAGS) $(PY_CCFLAGS) $< |         |