-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathMakefile
130 lines (97 loc) · 4.17 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
OBJECT_DIR= object_files
UTILS_SRC= utils.o
LIBS_SRC= core.o $(UTILS_SRC)
LIBS= $(addprefix $(OBJECT_DIR)/, $(LIBS_SRC))
UTILS= $(addprefix $(OBJECT_DIR)/, $(UTILS_SRC))
PROGS_SRC= driver.o file_splitter.o mem_speed_sequential.o sort_edges.o\
mem_speed_random.o feeder.o
PROGS= $(addprefix $(OBJECT_DIR)/, $(PROGS_SRC))
TARGETS= bin/benchmark_driver bin/mem_speed_sequential bin/sort_edges\
bin/mem_speed_random bin/zpipe bin/feeder
all: $(LIBS) $(TARGETS) generators
CXX?= g++
#CXXFLAGS?= -O3 -DNDEBUG -Wall -Wno-unused-function -L/usr/local/lib
CXXFLAGS?= -O3 -g -Wall -Wno-unused-function
#CXXFLAGS?= -g
CXXFLAGS += -Wfatal-errors
EXTRA_INCLUDES=-include core/types.h
EXTRA_INCLUDES+=-I/usr/local/include/boost-numeric-bindings
#Make sure HADOOP_HOME is correctly set to the home directory of hadoop in the enviroment variables
EXTRA_INCLUDES+=-I$HADOOP_HOME/include
#Graph size limits
CXXFLAGS += -DCOMPACT_GRAPH
#ZLIB SPEEDS
#CXXFLAGS += -DZLIB_COMPRESSION_LEVEL=Z_DEFAULT_COMPRESSION
CXXFLAGS += -DZLIB_COMPRESSION_LEVEL=Z_BEST_SPEED
#CXXFLAGS += -DZLIB_COMPRESSION_LEVEL=Z_BEST_COMPRESSION
#ISA extensions
CXXFLAGS += -msse4.2
#Note avx2 is untested
#CXXFLAGS += -mavx2
#System libraries
SYSLIBS = -lboost_system -lboost_program_options -lboost_thread -lz -lrt -lhdfs3
#To use libhdfs, make sure JAVA_HOME is already set properly in the environment variables
#Note the file path of the directory 'server' in your system, there is a difference between 64-bit and 32-bit jdk
#Then, replace above SYSLIBS with next line
#SYSLIBS = -lboost_system -lboost_program_options -lboost_thread -lz -lrt -I$HADOOP_HOME/include -L$HADOOP_HOME/lib/native -L$JAVA_HOME/jre/lib/amd64/server -ljvm -lhdfs
#Uncomment for ALS
#SYSLIBS += -llapack
#Python support (uncomment following lines)
#CXXFLAGS += -DPYTHON_SUPPORT
#SYSLIBS += -lpython3.2mu
#EXTRA_INCLUDES+=-L/usr/lib/python3.2/config
#EXTRA_INCLUDES+=-I/usr/include/python3.2
-include $(LIBS:.o=.d) $(PROGS:.o=.d)
$(OBJECT_DIR)/core.o:core/core.cpp
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/core.o' $< > $(@:.o=.d)
$(OBJECT_DIR)/utils.o:utils/utils.cpp
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/utils.o' $< > $(@:.o=.d)
$(OBJECT_DIR)/driver.o:benchmarks/driver.cpp
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/driver.o' $< > $(@:.o=.d)
$(OBJECT_DIR)/sort_edges.o:utils/sort_edges.cpp
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/sort_edges.o' $< > $(@:.o=.d)
$(OBJECT_DIR)/feeder.o:utils/feeder.cpp
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/feeder.o' $< > $(@:.o=.d)
$(OBJECT_DIR)/mem_speed_sequential.o:utils/mem_speed_sequential.cpp
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/mem_speed_sequential.o' $< > $(@:.o=.d)
$(OBJECT_DIR)/mem_speed_random.o:utils/mem_speed_random.cpp
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/mem_speed_random.o' $< > $(@:.o=.d)
$(OBJECT_DIR)/zpipe.o:utils/zpipe.c
$(CXX) $(CXXFLAGS) $(EXTRA_INCLUDES) -c -o $@ $<
$(CXX) -MM -MT '$(OBJECT_DIR)/zpipe.o' $< > $(@:.o=.d)
bin/benchmark_driver:$(OBJECT_DIR)/driver.o $(LIBS)
$(CXX) $(CXXFLAGS) -o $@ $< $(LIBS) $(SYSLIBS)
bin/mem_speed_sequential:$(OBJECT_DIR)/mem_speed_sequential.o $(LIBS)
$(CXX) $(CXXFLAGS) -o $@ $< $(LIBS) $(SYSLIBS)
bin/mem_speed_random:$(OBJECT_DIR)/mem_speed_random.o $(LIBS)
$(CXX) $(CXXFLAGS) -o $@ $< $(LIBS) $(SYSLIBS)
bin/zpipe:$(OBJECT_DIR)/zpipe.o $(LIBS)
$(CXX) $(CXXFLAGS) -o $@ $< $(LIBS) $(SYSLIBS)
bin/sort_edges:$(OBJECT_DIR)/sort_edges.o $(LIBS)
$(CXX) $(CXXFLAGS) -o $@ $< $(LIBS) $(SYSLIBS)
bin/feeder:$(OBJECT_DIR)/feeder.o $(LIBS)
$(CXX) $(CXXFLAGS) -o $@ $< $(LIBS) $(SYSLIBS)
.PHONY: generators
generators:
$(MAKE) -C generators
clean:
rm -f $(TARGETS) $(LIBS) $(OBJECT_DIR)/*
$(MAKE) -C generators clean
prefix = /usr/local
bindir = $(prefix)/bin
.PHONY: install uninstall
install: all
cp bin/benchmark_driver $(bindir)
cp generators/rmat $(bindir)
cp generators/erdos-renyi $(bindir)
uninstall:
rm -f $(bindir)/benchmark_driver
rm -f $(bindir)/rmat
rm -f $(bindir)/erdos-renyi