|      1 CCFLAGS=-I./src -Wall -Wno-write-strings -fno-strict-aliasing -DPTHREADS |      1 ROOT=$(shell pwd) | 
|      2 LDFLAGS= |      2 include config.mk | 
|      3  |      3  | 
|      4 ifeq ($(OS), Windows_NT) |      4 all: python-module demos ccdemos | 
|      5   CCFLAGS+=-I"C:/Program Files/Python25/include" |         | 
|      6   LDFLAGS+=-L"C:\Program Files\Python25\libs" -lpython25 -lpthreadGC2 |         | 
|      7   MODULENAME=raytracer.pyd |         | 
|      8 else |         | 
|      9   CCFLAGS+=-pthread -fPIC `python-config --includes` |         | 
|     10   MODULENAME=raytracermodule.so |         | 
|     11 endif |         | 
|     12  |      5  | 
|     13 # optimizations |      6 python-module: libs-float | 
|     14 #CCFLAGS+=-g -O0 |      7 	$(MAKE) -C src python-module | 
|     15 CCFLAGS+=-O3 -pipe -fomit-frame-pointer -ffast-math -msse3 |      8  | 
|         |      9 demos: python-module | 
|         |     10 	$(MAKE) -C demos | 
|         |     11  | 
|         |     12 ccdemos: libs-float libs-double | 
|         |     13 	$(MAKE) -C ccdemos | 
|         |     14  | 
|         |     15 libs-float: | 
|         |     16 	$(MAKE) -C src libs-float | 
|         |     17  | 
|         |     18 libs-double: | 
|         |     19 	$(MAKE) -C src libs-double | 
|         |     20  | 
|         |     21 clean: | 
|         |     22 	$(MAKE) -C src clean | 
|         |     23 	$(MAKE) -C demos clean | 
|         |     24 	$(MAKE) -C ccdemos clean | 
|     16  |     25  | 
|     17  |     26  | 
|     18 # TARGETS |     27 # TARGETS | 
|     19 ######### |     28 ######### | 
|     20  |     29  | 
|     21 all: python-module |         | 
|     22  |         | 
|     23 python-module: $(MODULENAME) |         | 
|     24  |         | 
|     25 tests: testvector testmatrix |     30 tests: testvector testmatrix | 
|     26  |         | 
|     27 clean: |         | 
|     28 	rm -f *.o $(MODULENAME) |         | 
|     29  |     31  | 
|     30  |     32  | 
|     31 # RULES |     33 # RULES | 
|     32 ####### |     34 ####### | 
|     33  |         | 
|     34 %.o: src/%.cc |         | 
|     35 	$(CXX) -c -o $@ src/$*.cc $(CCFLAGS) |         | 
|     36  |     35  | 
|     37 test%: tests/%.cc |     36 test%: tests/%.cc | 
|     38 	$(CXX) -o $@ tests/$*.cc $(CCFLAGS) |     37 	$(CXX) -o $@ tests/$*.cc $(CCFLAGS) | 
|     39 	./$@ |     38 	./$@ | 
|     40  |     39  | 
|     41  |     40  | 
|     42 # DEPENDENCIES |     41 # DEPENDENCIES | 
|     43 ############## |     42 ############## | 
|     44  |     43  | 
|     45 # C++ raytracer |         | 
|     46 vector.o: src/vector.cc src/vector.h |         | 
|     47 matrix.o: src/matrix.cc src/matrix.h src/vector.h |         | 
|     48 noise.o: src/noise.cc src/noise.h |         | 
|     49 scene.o: src/scene.cc src/scene.h src/vector.h src/noise.h src/common.h |         | 
|     50 kdtree.o: src/kdtree.cc src/kdtree.h src/scene.h |         | 
|     51 raytracer.o: src/raytracer.cc src/raytracer.h src/scene.h src/vector.h src/noise.h |         | 
|     52  |         | 
|     53 # python module |         | 
|     54 raytracermodule.o: src/raytracermodule.cc src/raytracer.h src/scene.h src/vector.h |         | 
|     55 $(MODULENAME): raytracermodule.o raytracer.o scene.o noise.o kdtree.o |         | 
|     56 	$(CXX) $^ -shared -o $@ $(LDFLAGS) |         | 
|     57  |     44  | 
|     58 # library tests |     45 # library tests | 
|     59 testvector: tests/vector.cc src/vector.h |     46 testvector: tests/vector.cc src/vector.h |