| 
22
 | 
     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 noise.o kdtree.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)"
  | 
| 
 | 
    18  | 
  | 
| 
 | 
    19  | 
libs-double:
  | 
| 
 | 
    20  | 
	mkdir -p $(ROOT)/bin/$@
  | 
| 
 | 
    21  | 
	$(MAKE) -C $(ROOT)/bin/$@ -f $(ROOT)/src/Makefile libs ROOT="$(ROOT)" DEFS="$(DEFS) -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 $@ $(DEFS) $(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 vector.h noise.h common.h
  | 
| 
 | 
    46  | 
kdtree.o: kdtree.cc kdtree.h scene.h common.h
  | 
| 
 | 
    47  | 
raytracer.o: raytracer.cc raytracer.h scene.h vector.h noise.h common.h
  | 
| 
 | 
    48  | 
  | 
| 
 | 
    49  | 
raytracermodule.o: raytracermodule.cc raytracer.h scene.h vector.h common.h
  | 
| 
 | 
    50  | 
	$(CXX) -c -o $@ $(DEFS) $(CCFLAGS) $(PY_CCFLAGS) $<
  |