forked from JanWielemaker/rocksdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
59 lines (44 loc) · 2.15 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
#COFLAGS=-gdwarf-2 -g3
# For development, specify the following:
# ADDED_CPP_FLAGS= -Wsign-compare -Wshadow -Wunused-parameter -Woverloaded-virtual -Wnon-virtual-dtor -Wno-invalid-offsetof -Wconversion -Warith-conversion -Wsign-conversion -Wfloat-conversion -Wno-unused-parameter -Wno-missing-field-initializers
CPPFLAGS=-Wall $(ADDED_CPPFLAGS) -std=c++17 -O2 $(CFLAGS) $(COFLAGS) $(LDSOFLAGS) -Irocksdb/include
LIBROCKSDB=rocksdb/librocksdb.a
ROCKSENV=ROCKSDB_DISABLE_JEMALLOC=1 ROCKSDB_DISABLE_TCMALLOC=1
# DEBUG_LEVEL=0 implies -O2 without assertions and debug code
ROCKSCFLAGS=EXTRA_CXXFLAGS=-fPIC EXTRA_CFLAGS=-fPIC USE_RTTI=1 DEBUG_LEVEL=0
PLPATHS=-p library=prolog -p foreign="$(PACKSODIR)"
SWIPL ?= swipl
SUBMODULE_UPDATE ?= git submodule update --init rocksdb
# sets PLATFORM_LDFLAGS
-include rocksdb/make_config.mk
all: plugin
.PHONY: FORCE all clean install check distclean realclean shared_object plugin
rocksdb/INSTALL.md: FORCE
$(SUBMODULE_UPDATE)
# Run the build for librocksdb in parallel, using # processors as
# limit, if using GNU make
JOBS=$(shell $(MAKE) --version 2>/dev/null | grep GNU >/dev/null && J=$$(nproc 2>/dev/null) && echo -j$$J)
rocksdb/librocksdb.a: rocksdb/INSTALL.md FORCE
$(ROCKSENV) $(MAKE) $(JOBS) -C rocksdb static_lib $(ROCKSCFLAGS)
plugin: $(LIBROCKSDB)
$(MAKE) shared_object
shared_object: $(PACKSODIR)/rocksdb4pl.$(SOEXT)
$(PACKSODIR)/rocksdb4pl.$(SOEXT): cpp/rocksdb4pl.cpp $(LIBROCKSDB) Makefile
mkdir -p $(PACKSODIR)
$(CXX) --version
@# For development:
@# PACKSODIR=/tmp/rocksdb-so
@# SOEXT=so
@# CFLAGS='-fPIC -pthread -I$$HOME/src/swipl-devel/src -I$$HOME/src/swipl-devel/src/os -I$$HOME/src/swipl-devel/packages/cpp'
@# other flags: CPPFLAGS $(CPPFLAGS) LIBROCKSDB $(LIBROCKSDB) PLATFORM_LDFLAGS $(PLATFORM_LDFLAGS)
@# SWISOLIB $(SWISOLIB) CFLAGS$(CFLAGS) COFLAGS $(COFLAGS) LDSOFLAGS$(LDSOFLAGS)
$(CXX) $(CPPFLAGS) -shared -o $@ cpp/rocksdb4pl.cpp $(LIBROCKSDB) $(PLATFORM_LDFLAGS) $(SWISOLIB)
install::
check::
$(SWIPL) $(PLPATHS) -g test_rocksdb -t halt test/test_rocksdb.pl
distclean: clean
rm -f $(PACKSODIR)/rocksdb4pl.$(SOEXT)
clean:
rm -f *~
realclean: distclean
git -C rocksdb clean -xfd