PROJECT = project2 IUSE = CLIPPING DEPTH_TEST SMOOTH_COLOR \ EXTRA_INLINE NDEBUG RASTER_STATS RENDER_PROGRESS RENDER_TIMER # BACKFACE_CULLING avoid drawing triangles that are not facing forward # CLIPPING turn on clipping (you really always want this) # DEPTH_TEST enable the z buffer for depth testing # EXTRA_INLINE allow the compiler to inline even more aggressively # LIGHTING turn the lights on (experimental) # NDEBUG disable assertions and other nonessential checks # FIND_NORMALS[=n] pre-compute vertex normals at loading time # set to 1 for per-face normals, 2 for averaged normals # RASTER_STATS print triangle count and optimization savings at the end # RENDER_PROGRESS print progress while drawing the scene # RENDER_TIMER add a timer to see how long the renderer takes # SMOOTH_COLOR interpolate colors smoothly between triangle vertices VIEWER = feh CC = gcc CFLAGS = -std=c99 -O2 -g -pg CPPFLAGS= -MMD $(IUSE:%=-D%) LDLIBS = -lm SRCS = main.c common.c list.c raster.c rbtree.c scene.c OBJS = $(SRCS:%.c=%.o) DEPS = $(OBJS:%.o=%.d) all: $(PROJECT) $(PROJECT): $(OBJS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) clean: rm -f $(PROJECT) $(OBJS) $(DEPS) distclean: clean rm -f tags gmon.out scene.ppm scene.bmp dist: git archive $(PROJECT) --prefix=$(PROJECT)/ --output=$(PROJECT).zip run: $(PROJECT) ./$< && $(VIEWER) scene.ppm debug: $(PROJECT) gdb ./$< -include $(DEPS) $(OBJS): Makefile .PHONY: all clean distclean run debug