-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
65 lines (47 loc) · 1.55 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
.DEFAULT_GOAL := all
.PHONY: all
.PHONY: clean
.PHONY: test
SAMPLE_DIR = samples
SAMPLE_SRC_FILES = sample_01.cpp sample_02.cpp sample_03.cpp \
binary_oscillator.cpp \
cycle_scheduler_infinite.cpp \
cycle_scheduler_finite.cpp \
parallel_scheduler.cpp \
parallel_scheduler_with_mid_sync.cpp
TEST_DIR = test
TEST_SRC = test_cpu_parallel_processing.cpp
APPLE_SDK = -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
APPLE_FRAMEWORKS = -framework Foundation
CC = clang++
LD = clang++
CD = cd
RMR = rm -fr
RM = rm -f
DIR_GUARD = @mkdir -p $(@D)
OBJ_DIR = objs
BIN_DIR = bin
CCFLAGS = -Wall -std=c++20 -stdlib=libc++ -O3 -I.
LDFLAGS = $(APPLE_SDK) $(APPLE_FRAMEWORKS)
SAMPLE_SRCS = $(patsubst %,$(OBJ_DIR)/%,$(SAMPLE_SRC_FILES))
SAMPLE_OBJS = $(patsubst %,$(OBJ_DIR)/%,$(subst .cpp,.o,$(SAMPLE_SRC_FILES)))
SAMPLE_BINS = $(patsubst %,$(BIN_DIR)/%,$(subst .cpp,,$(SAMPLE_SRC_FILES)))
TEST_OBJS = $(patsubst %,$(OBJ_DIR)/%,$(subst .cpp,.o,$(TEST_SRC)))
TEST_BIN = $(BIN_DIR)/$(basename $(TEST_SRC))
$(OBJ_DIR)/%.o: $(SAMPLE_DIR)/%.cpp
$(DIR_GUARD)
$(CC) $(CCFLAGS) $(CC_INC) -c $< -o $@
$(BIN_DIR)/%: $(OBJ_DIR)/%.o
$(DIR_GUARD)
$(LD) $(LDFLAGS) $^ -o $@
$(TEST_OBJS): $(TEST_DIR)/$(TEST_SRC)
$(DIR_GUARD)
$(CC) $(CCFLAGS) $(CC_INC) -c $< -o $@
$(TEST_BIN): $(TEST_OBJS)
$(DIR_GUARD)
$(LD) $(LDFLAGS) $^ -o $@
test: $(TEST_BIN)
$(CD) $(BIN_DIR); $(subst $(BIN_DIR)/,./,$(TEST_BIN))
all: $(SAMPLE_BINS) $(TEST_BIN)
clean:
-$(RMR) $(OBJ_DIR) $(BIN_DIR)