-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakeFile
More file actions
57 lines (43 loc) · 1.26 KB
/
Copy pathMakeFile
File metadata and controls
57 lines (43 loc) · 1.26 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
# === Compiler & Flags ===
CC = gcc
CFLAGS = -Ofast -march=native -funroll-loops -ffast-math -I fabe13
# Detect platform (for linking -lrt only on Linux)
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Darwin)
LRT_FLAG =
else
LRT_FLAG = -lrt
endif
LDLIBS = -lm $(LRT_FLAG)
# === Source Files ===
SRC_DIR = fabe13
TEST_DIR = fabe13/tests
BUILD_DIR = build
LIB_SRC = $(SRC_DIR)/fabe13.c
BENCH_SRC = $(SRC_DIR)/benchmark_fabe13.c
TEST_SRC = $(TEST_DIR)/test_fabe13.c
LIB_OBJ = $(BUILD_DIR)/fabe13.o
BENCH_BIN = $(BUILD_DIR)/fabe13_benchmark
TEST_BIN = $(BUILD_DIR)/fabe13_test
# === Default Target ===
all: $(BENCH_BIN) $(TEST_BIN)
# Create build directory if needed
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
# 1) Build library object
$(LIB_OBJ): $(LIB_SRC) | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
# 2) Benchmark binary
$(BENCH_BIN): $(LIB_OBJ) $(BENCH_SRC) | $(BUILD_DIR)
$(CC) $(CFLAGS) -DENABLE_FABE13_BENCHMARK=1 $^ -o $@ $(LDLIBS)
# 3) Unit test binary
$(TEST_BIN): $(LIB_OBJ) $(TEST_SRC) | $(BUILD_DIR)
$(CC) $(CFLAGS) $^ -o $@ $(LDLIBS)
# === Convenience Targets ===
run-benchmark: $(BENCH_BIN)
./$(BENCH_BIN)
run-test: $(TEST_BIN)
./$(TEST_BIN)
clean:
rm -rf $(BUILD_DIR)
.PHONY: all clean run-test run-benchmark