-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
80 lines (59 loc) · 1.56 KB
/
Makefile
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
.PHONY:target
uname := $(shell sh -c 'uname -s 2>/dev/null || echo not')
ifeq ($(uname),Linux)
CC := g++10
INCLUDE :=
target:linux
else
ifeq ($(uname),Darwin)
CC := g++
INCLUDE = -I/usr/local/Cellar/opencv/4.4.0_1/include/opencv4
marget:macosx
endif
endif
PLATS=linux macosx
platform:
@echo "'make PLATFORM' where PLATFORM is one of these:"
@echo "$(PLATS)"
#DEBUG := -fsanitize=address -fno-omit-frame-pointer
DEBUG :=
CCFLAG := -O3 -g3 -std=c++17 -Wall \
-march=native \
-D_GLIBCXX_USE_CXX11_ABI=0\
LDFLAG :=-lpthread -lopencv_core -lopencv_highgui \
-lopencv_imgproc -lopencv_imgcodecs -march=native
INCLUDE+=-Icommon/ -Iraytracer/
linux:CCFLAG += -fopenmp
linux:LDFLAG += -L/usr/local/gcc10/lib64 -lgomp
macosx:CCFLAG += -Xpreprocessor -fopenmp
macosx:LDFLAG += -lomp
SRC=\
common/BVH.cpp \
common/primitive.cpp \
common/auxiliary.cpp \
common/scene.cpp \
common/camera.cpp \
common/material.cpp \
common/raytracer.cpp \
RST= rasterizer/main.cpp \
rasterizer/rasterizer.cpp \
rasterizer/camera.cpp
EXAMPLE=examples/main.cpp
OBJS = $(patsubst %.cpp,%.o,$(SRC))
OBJS += $(patsubst %.cpp,%.o,$(EXAMPLE))
.depend:
@$(CC) $(CCFLAG) $(INCLUDE) -MM $(EXAMPLE) 2>/dev/null |\
sed 's/\([^.]*\).o[: ]/examples\/\1.o $@: /g' > $@ || true
@$(CC) $(CCFLAG) $(INCLUDE) -MM $(SRC) 2>/dev/null |\
sed 's/\([^.]*\).o[: ]/common\/\1.o $@: /g' >> $@ || true
%.o:%.cpp
$(CC) $(CCFLAG) $(INCLUDE) -c -o $@ $<
-include .depend
macosx linux:all
all:main
main:$(OBJS)
$(CC) $(CCFLAG) $(INCLUDE) $(DEBUG) -o $@ $^ $(LDFLAG)
clean:
-rm main
-rm $(OBJS)
-rm .depend