forked from CMU-SAFARI/MQSim
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
56 lines (41 loc) · 1.38 KB
/
Makefile
File metadata and controls
56 lines (41 loc) · 1.38 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
CC := g++
LD := g++
CC_FLAGS := -std=c++17 -fPIC -g -O2 -Wno-gnu-array-member-paren-init
MODULES := exec host nvm_chip nvm_chip/flash_memory sim ssd utils lib
SRC_DIR := $(addprefix src/,$(MODULES)) src
BUILD_DIR := $(addprefix build/,$(MODULES)) build
SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cpp))
OBJ := $(patsubst src/%.cpp,build/%.o,$(SRC))
INCLUDES := $(addprefix -I,$(SRC_DIR))
LIB_PATH = /usr/local/lib
INC_PATH = /usr/local/include
CFG_PATH = /usr/local/share
vpath %.cpp $(SRC_DIR)
define make-goal
$1/%.o: %.cpp
$(CC) $(CC_FLAGS) $(INCLUDES) -c $$< -o $$@
endef
.PHONY: all checkdirs clean
all: checkdirs libMQSim.so MQSim
libMQSim.so: $(OBJ)
$(LD) $(CC_FLAGS) -shared $^ -o $@ -lz
MQSim: libMQSim.so
$(CC) $(CC_FLAGS) $(INCLUDES) src/main.cpp libMQSim.so -o MQSim
install: all
@mkdir -p $(INC_PATH)/libMQSim
@cp -v src/lib/libmqsim.h $(INC_PATH)/libMQSim
@cp -v src/lib/base.h $(INC_PATH)/libMQSim
@cp -v src/lib/logger.h $(INC_PATH)/libMQSim
@cp -v src/lib/data_store.h $(INC_PATH)/libMQSim
@cp -v libMQSim.so $(LIB_PATH)
@mkdir -p $(CFG_PATH)/libMQSim
@cp -v ssdconfig.xml $(CFG_PATH)/libMQSim
@cp -r traces $(CFG_PATH)/libMQSim
@chmod 777 $(CFG_PATH)/libMQSim
checkdirs: $(BUILD_DIR)
$(BUILD_DIR):
mkdir -p $@
clean:
rm -rf $(BUILD_DIR)
rm -f MQSim libMQSim.so
$(foreach bdir,$(BUILD_DIR),$(eval $(call make-goal,$(bdir))))