-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
43 lines (33 loc) · 972 Bytes
/
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
CC=g++
SRC_DIR=./src
OBJ_DIR=./build
LIB_DPDK=$(shell pkg-config --libs libdpdk) -lrte_net_qdma
CFLAG_DPDK=$(shell pkg-config --cflags libdpdk)
EXECUTABLE=server
SRC=$(shell find $(SRC_DIR) -type f -name *.cpp)
OBJ=$(patsubst $(SRC_DIR)/%,$(OBJ_DIR)/%,$(SRC:.cpp=.o))
OBJ_EXE=$(addprefix $(OBJ_DIR)/,$(addsuffix .o,$(EXECUTABLE)))
OBJ_SHARED=$(filter-out $(OBJ_EXE),$(OBJ))
DEP=./deps.hpp
OPT=-O2
NO_OPT=-O0
CFLAGS=-Wall -std=c++17 $(CFLAG_DPDK)
LIBS=-lpthread -lyaml-cpp $(LIB_DPDK)
.PHONY: all
all: release
new: clean $(EXECUTABLE)
debug: CFLAGS += -g3 $(NO_OPT) -DLOG_LEVEL_AS_DEBUG
debug: clean $(EXECUTABLE)
release: CFLAGS += $(OPT)
release: $(EXECUTABLE)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.hpp $(DEP)
echo "making Target $@ ....."
@mkdir -p $(@D)
$(CC) -c -o $@ $< $(CFLAGS)
$(EXECUTABLE): % : $(OBJ_SHARED) $(OBJ_DIR)/%.o
$(CC) $^ $(CFLAGS) -o $@ $(LIBS)
.PHONY: clean
clean:
rm -rf $(OBJ_DIR)/*
rm -rf $(OBJ_DIR)
rm -rf $(EXECUTABLE)