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 |