-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
63 lines (50 loc) · 2.01 KB
/
Makefile
File metadata and controls
63 lines (50 loc) · 2.01 KB
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
INC_WINDOWS = -Iinclude/windows
INC_LINUX = -Iinclude/linux
INC_COMMON = -Iinclude/common -Iinclude/common/collidables -Iinclude/common/constraints -Iinclude/common/forces -Iinclude/common/integration_schemes -Iinclude/common/utils
UNAME_S := $(shell uname -s)
UNAME_M := $(shell uname -m)
ifeq ($(UNAME_S), Darwin)
ifeq ($(UNAME_M), arm64) # Apple Silicon
RM = rm -vf
INCLUDE = $(INC_LINUX) -I/opt/homebrew/include
#CXX_EXTRA_FLAGS = -lglut -lGLU -lGL -lpng
CXX_EXTRA_FLAGS = -framework GLUT -framework OpenGL -L/opt/homebrew/lib -lpng
else # Apple Intel
endif
else ifeq ($(UNAME_S), Linux) # Linux
RM = rm -vf
INCLUDE = $(INC_LINUX)
CXX_EXTRA_FLAGS = -lglut -lGLU -lGL -lpng
else ifeq ($(OS),Windows_NT) # Windows
RM = rm -vf # might have to be adjusted to del for some Windows distros
INCLUDE = $(INC_WINDOWS)
# CXX_EXTRA_FLAGS = -Llib -lfreeglut -lglu32 -lopengl32 -lpng12
CXX_EXTRA_FLAGS = -lfreeglut -lglu32 -lopengl32 -lpng
endif
#CXXFLAGS = --std=c++17 -g -O2 -Wall -Wno-sign-compare -Wno-deprecated-declarations -I$(INCLUDE) -I$(INC_COMMON) -DHAVE_CONFIG_H -DDEBUG
CXXFLAGS = --std=c++17 -g -O1 -Wall -Wno-sign-compare -Wno-deprecated-declarations $(INCLUDE) $(INC_COMMON) -DHAVE_CONFIG_H -DDEBUG
#CXXFLAGS += -fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer
#CXX_EXTRA_FLAGS += -fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer
CXX = g++
SRC_DIR = src
OBJ_DIR = obj
BIN_DIR = bin
SOURCES = $(shell find $(SRC_DIR) -name '*.cpp')
OBJECTS := $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(SOURCES))
EXECUTABLE = $(BIN_DIR)/project1.exe
all: $(OBJ_DIR) $(BIN_DIR) $(EXECUTABLE)
$(OBJ_DIR):
mkdir -v $@
$(BIN_DIR):
mkdir -v $@
# Special rule to suppress warnings from imageio.cpp
obj/utils/imageio.o: $(SRC_DIR)/utils/imageio.cpp
$(CXX) -w $(CXXFLAGS) -o $@ -c $<
obj/%.o: $(SRC_DIR)/%.cpp
@mkdir -p $(dir $@)
$(CXX) $(CXXFLAGS) -o $@ -c $<
$(EXECUTABLE): $(OBJECTS)
$(CXX) -o $@ $^ $(CXX_EXTRA_FLAGS)
clean:
@$(RM) -r $(OBJ_DIR)/*
@$(RM) $(BIN_DIR)/*exe