-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
58 lines (45 loc) · 912 Bytes
/
Makefile
File metadata and controls
58 lines (45 loc) · 912 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
EXEC = raytracing
.PHONY: all test check clean
CC = gcc
CFLAGS = -std=gnu99 -Wall -O0 -g
LDFLAGS = -lm
OBJS := \
material.o \
dielectric.o \
lambertian.o \
metal.o \
hitable_list.o \
camera.o \
sphere.o \
ray.o \
vector.o
OUTPUTS := \
out1.ppm \
out2.ppm
ifeq ($(strip $(PROFILE)), 1)
PRO_FLAGS = -pg
CFLAGS += $(PRO_FLAGS)
LDFLAGS += $(PRO_FLAGS)
endif
ifeq ($(strip $(OPT)), 1)
OPT_FLAGS = -fopenmp
EXEC = raytracing_opt
OBJS += main_opt.o
CFLAGS += $(OPT_FLAGS)
LDFLAGS += $(OPT_FLAGS)
else
OBJS += main.o
endif
all: $(EXEC)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
$(EXEC): $(OBJS)
$(CC) $^ $(LDFLAGS) -o $@
test: $(EXEC)
./$(EXEC) trace1.txt out1.ppm
./$(EXEC) trace2.txt out2.ppm
check: $(EXEC)
@./$(EXEC) trace1.txt out1.ppm && diff -qu baseline.ppm out1.ppm || (echo Fail; exit -1)
@echo "Verified OK"
clean:
rm -f $(EXEC) raytracing_opt $(OBJS) main_opt.o $(OUTPUTS)