Makefile 7.92 KB
Newer Older
1 2 3 4 5 6
# -*- Mode: Makefile -*-
# standard build: make
#ident "Copyright (c) 2007 Tokutek Inc.  All rights reserved."

.DEFAULT_GOAL= build
TOKUROOT=../
7
INCLUDEDIRS=-I. -I$(TOKUROOT)toku_include -I$(TOKUROOT)include -I$(TOKUROOT)newbrt -I$(TOKUROOT)src
8 9 10 11 12
DEPEND_COMPILE += \
	./*.h \
#end

HERE = utils
13
include $(TOKUROOT)toku_include/Makefile.include
Rich Prohaska's avatar
Rich Prohaska committed
14
ifndef BDBDIR
15
BDBDIR=/usr/local/BerkeleyDB.4.6
Rich Prohaska's avatar
Rich Prohaska committed
16
endif
17 18
BDB_DUMP=$(BDBDIR)/bin/db_dump$(BINSUF) -h dir.$@.bdb
BDB_LOAD=$(BDBDIR)/bin/db_load$(BINSUF) -h dir.$@.bdb
Yoni Fogel's avatar
Yoni Fogel committed
19

20
DIFF=diff -q -I 'db_pagesize='
21 22 23 24 25

# vars to compile bins that handle tokudb using libdb.so
# when one uses relative address in an rpath, the library better be located relative
# to the current directory

26
# vars to compile bins that handle tokudb using libtokudb.a
Yoni Fogel's avatar
Yoni Fogel committed
27

28
CPPFLAGS+= -D_GNU_SOURCE
29 30
# vars to compile bins that handle bdb
BDB_CPPFLAGS = -I$(BDBDIR)/include
Yoni Fogel's avatar
Yoni Fogel committed
31
BDB_LDFLAGS = -L$(BDBDIR)/lib -ldb -lpthread $(BDB_LOADLIBES)
32

Yoni Fogel's avatar
Yoni Fogel committed
33
UTILS=            \
34 35 36
   tokudb_gen$(BINSUF)     \
   tokudb_load$(BINSUF)    \
   tokudb_dump$(BINSUF)    \
Yoni Fogel's avatar
Yoni Fogel committed
37
#End
38 39 40
BDB_UTILS=$(patsubst %$(BINSUF),%.bdb$(BINSUF),$(UTILS))
STATIC_UTILS=$(patsubst %$(BINSUF),%_static$(BINSUF),$(UTILS))

41 42 43 44
ifeq ($(OS_CHOICE),windows)
$(UTILS): LINK_FILES+=$(WIN_YDB)
$(UTILS): $(WIN_YDB)
else
45 46 47
$(UTILS): DLINK_FILES=$(TOKUROOT)lib/libtokudb.$(SOEXT)
$(STATIC_UTILS): LINK_FILES+=$(TOKUROOT)lib/libtokudb.$(AEXT)

48 49 50 51 52
ifeq ($(BRTLOADER),cilk)
	DLINK_FILES += cilkrts stdc++
	RPATH_DIRS +=  $(CILKROOT)lib64
endif

53
$(UTILS) $(STATIC_UTILS): RPATH_DIRS+=$(TOKUROOT)lib
54 55
endif

56 57
#empty

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
ifeq ($(OS_CHOICE),windows)
ifdef BDBDIR
$(BDB_UTILS): INCLUDEDIRS=-I$(BDBDIR)/include
$(BDB_UTILS): RPATH_DIRS=$(BDBDIR)/lib
endif
ifeq ($(DEBUG),0)
WINDOWS_BDB_LIB_NAME=libdb.$(SOEXT)
$(WINDOWS_BDB_LIB_NAME):
	cp $(BDBDIR)/lib/libdb[0-9][0-9].$(SOEXT) ./
else
WINDOWS_BDB_LIB_NAME=libdbd.$(SOEXT)
$(WINDOWS_BDB_LIB_NAME):
	cp $(BDBDIR)/lib/libdb[0-9][0-9]d.$(SOEXT) ./
endif
$(BDB_UTILS): DLINK_FILES=$(BDBDIR)/lib/$(WINDOWS_BDB_LIB_NAME)
#empty
else
WINDOWS_BDB_LIB_NAME=
#linux
ifdef BDBDIR
$(BDB_UTILS): INCLUDEDIRS=-I$(BDBDIR)/include
$(BDB_UTILS): RPATH_DIRS=$(BDBDIR)/lib
endif
$(BDB_UTILS): DLINK_FILES=db.$(SOEXT)
endif
$(BDB_UTILS): CPPFLAGS+=-DTOKU_ALLOW_DEPRECATED
#empty on purpose
$(BDB_UTILS): CPPFLAGS+=-DIS_TDB=0
$(UTILS) $(STATIC_UTILS): CPPFLAGS+=-DIS_TDB=1
87 88
$(STATIC_UTILS): CPPFLAGS+=-DTDB_IS_STATIC=1
$(UTILS): CPPFLAGS+=-DTDB_IS_STATIC=0
Yoni Fogel's avatar
Yoni Fogel committed
89

90 91 92 93 94 95 96 97
HERE=utils

ifeq ($(SUMMARIZE),1)
SUMMARIZE_CMD = ;if test $$? = 0; then printf "%-60sPASS\n" $(HERE)/$@; else printf "%-60sFAIL\n" $(HERE)/$@ ; test 0 = 1; fi
else
SUMMARIZE_CMD =
endif

98
.PHONY: all clean test test_gen test_gen_hex test_load test_dump
Yoni Fogel's avatar
Yoni Fogel committed
99

100 101 102 103 104
build all: build.tdb build.bdb;
ifeq ($(OS_CHOICE),windows)
build.tdb: $(UTILS) copy.tdb;
build.bdb: $(BDB_UTILS) copy.bdb;
else
105 106
build.tdb: $(UTILS) $(STATIC_UTILS);
build.bdb: $(BDB_UTILS);
107 108
endif

Yoni Fogel's avatar
Yoni Fogel committed
109
copy.tdb: $(PTHREAD_LOCAL)
110 111 112
	cp ../lib/*.dll ./
copy.bdb:
	cp $(BDBDIR)/lib/*.dll ./
Yoni Fogel's avatar
Yoni Fogel committed
113

114 115
coverage: $(UTILS)

116
%$(BINSUF): %.c
117
	$(CC) $< $(BIN_FROM_C_FLAGS) $(LINK_MUST_BE_LAST) -DUSE_TDB=1
Yoni Fogel's avatar
Yoni Fogel committed
118

119
%.bdb$(BINSUF): %.c
120
	$(CC) $< $(BIN_FROM_C_FLAGS) $(LINK_MUST_BE_LAST) -DUSE_BDB=1
121

122 123
%_static$(BINSUF): %.c ../lib/libtokudb.$(AEXT)
	$(CC) $< ../lib/libtokudb.$(AEXT) $(BIN_FROM_C_FLAGS) $(LINK_MUST_BE_LAST)
Yoni Fogel's avatar
Yoni Fogel committed
124

125 126 127
strip: $(STATIC_UTILS) 
	strip $(STATIC_UTILS)

128
check: build test_gen test_load test_dump test_nodup test_dupsort
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
129

130
test-coverage: $(UTILS) test_gen test_load test_dump test_nodup test_dupsort
131

Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
132
test_gen: test_gen_hex
Yoni Fogel's avatar
Yoni Fogel committed
133

Yoni Fogel's avatar
Yoni Fogel committed
134 135 136
TEST_GEN_HEX_NUMKEYS=10000
TEST_GEN_HEX_LENGTHMIN=0
TEST_GEN_HEX_LENGTHLIMIT=1024
137

Yoni Fogel's avatar
Yoni Fogel committed
138
TEST_GEN_HEX_FLAGS=-n $(TEST_GEN_HEX_NUMKEYS) -m $(TEST_GEN_HEX_LENGTHMIN) -M $(TEST_GEN_HEX_LENGTHLIMIT) -r 5
Yoni Fogel's avatar
Yoni Fogel committed
139

140
TDB_GEN=./tokudb_gen$(BINSUF)
141 142 143
TDB_LOAD=./tokudb_load$(BINSUF) -h dir.$@.tdb
TDB_DUMP=./tokudb_dump$(BINSUF) -h dir.$@.tdb
TDB_DUMPBDB=./tokudb_dump.bdb$(BINSUF) -h dir.$@.bdb
144

145 146 147 148 149 150 151 152 153

ifeq ($(OS_CHOICE),windows)
    LINEEND   = "\r\n"
    TO_NATIVE = unix2dos --u2d
else
    LINEEND   = "\n"
    TO_NATIVE = cat
endif

154
test_gen_hex: build
Yoni Fogel's avatar
Yoni Fogel committed
155
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
156
	@#echo "Generating text input > db > text"
157 158 159
	rm -rf dir.$@.*
	mkdir dir.$@.tdb
	mkdir dir.$@.bdb
160 161 162 163
	$(TDB_GEN) $(TEST_GEN_HEX_FLAGS) > $@.gen.temp && \
	$(BDB_LOAD) $@.db.temp < $@.gen.temp && \
	$(BDB_DUMP) $@.db.temp > $@.load_dump.temp && \
	$(TDB_GEN) -H -f > $@.gen_sorted.temp && \
164
	export LC_ALL=C;$(TDB_GEN) -h -f $(TEST_GEN_HEX_FLAGS) -d "\t" -s "\n" | sort -k 1,1 | tr -d $(LINEEND) | tr "\t" "\n" | $(TO_NATIVE) >> $@.gen_sorted.temp && \
165 166
	$(TDB_GEN) -F -h  >> $@.gen_sorted.temp && \
	$(DIFF) $@.load_dump.temp $@.gen_sorted.temp \
167
	$(SUMMARIZE_CMD)
168

169
test_load: test_load_hex test_load_text test_load_text_noendline
Yoni Fogel's avatar
Yoni Fogel committed
170

171
test_load_hex: build
Yoni Fogel's avatar
Yoni Fogel committed
172
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
173
	@#echo "Generating text input > db > text"
174 175 176
	rm -rf dir.$@.*
	mkdir dir.$@.tdb
	mkdir dir.$@.bdb
177 178 179 180 181
	$(TDB_GEN) $(TEST_GEN_HEX_FLAGS) > $@.gen.temp && \
	$(BDB_LOAD) $@.bdb.temp < $@.gen.temp && \
	$(TDB_LOAD) $@.tokudb.temp < $@.gen.temp && \
	$(BDB_DUMP) $@.bdb.temp > $@.dump.bdb.temp && \
	$(TDB_DUMP) $@.tokudb.temp > $@.dump.tokudb.temp && \
182 183
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
184

185
TEST_GEN_TEXT_FLAGS=-n $(TEST_GEN_HEX_NUMKEYS) -m $(TEST_GEN_HEX_LENGTHMIN) -M $(TEST_GEN_HEX_LENGTHLIMIT) -r 5 -T -P
Yoni Fogel's avatar
Yoni Fogel committed
186

187
test_load_text: build
Yoni Fogel's avatar
Yoni Fogel committed
188
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
189
	@#echo "Generating text input > db > text"
190 191 192
	rm -rf dir.$@.*
	mkdir dir.$@.tdb
	mkdir dir.$@.bdb
193 194 195 196 197
	$(TDB_GEN) $(TEST_GEN_TEXT_FLAGS) > $@.gen.temp && \
	$(BDB_LOAD)   -T -t btree $@.bdb.temp < $@.gen.temp && \
	$(TDB_LOAD) -T -t btree $@.tokudb.temp < $@.gen.temp && \
	$(BDB_DUMP)   -p $@.bdb.temp > $@.dump.bdb.temp && \
	$(TDB_DUMP) -p $@.tokudb.temp > $@.dump.tokudb.temp && \
198 199
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Yoni Fogel's avatar
Yoni Fogel committed
200

201
test_load_text_noendline: build
202
	@#echo "Testing no end of line at end of file."
203 204 205
	rm -rf dir.$@.*
	mkdir dir.$@.tdb
	mkdir dir.$@.bdb
Yoni Fogel's avatar
Yoni Fogel committed
206
	echo -en "key\nvalue" > $@.gen.temp
207
	$(TDB_LOAD) -T -t btree $@.tokudb.temp < $@.gen.temp $(SUMMARIZE_CMD)
Yoni Fogel's avatar
Yoni Fogel committed
208 209


210
test_dump: build
211
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
212
	@#echo "Generating text input > db > text"
213 214 215
	rm -rf dir.$@.*
	mkdir dir.$@.tdb
	mkdir dir.$@.bdb
216 217 218 219
	$(TDB_GEN) $(TEST_GEN_HEX_FLAGS) > $@.gen.temp && \
	$(BDB_LOAD) $@.bdb.temp < $@.gen.temp && \
	$(BDB_DUMP) $@.bdb.temp > $@.dump.bdb.temp && \
	$(TDB_DUMPBDB) $@.bdb.temp > $@.dump.tokudb.temp && \
220 221
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
222

223 224 225 226
test_nodup: build
	rm -rf dir.$@.*
	mkdir dir.$@.tdb
	mkdir dir.$@.bdb
227 228 229 230 231
	$(TDB_GEN) $(TEST_GEN_HEX_FLAGS) >$@.gen.temp && \
	$(BDB_LOAD) $@.bdb.temp <$@.gen.temp && \
	$(BDB_DUMP) $@.bdb.temp >$@.dump.bdb.temp && \
	$(TDB_LOAD) $@.tdb.temp <$@.gen.temp && \
	$(TDB_DUMP) $@.tdb.temp >$@.dump.tdb.temp && \
232
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp && \
233 234
	$(TDB_LOAD) $@.tdb.temp <$@.gen.temp && \
	$(TDB_DUMP) $@.tdb.temp >$@.dump.tdb.temp && \
235 236
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp \
	$(SUMMARIZE_CMD)
237

238 239 240 241
test_dupsort: build
	rm -rf dir.$@.*
	mkdir dir.$@.tdb
	mkdir dir.$@.bdb
242 243 244 245 246
	$(TDB_GEN) $(TEST_GEN_HEX_FLAGS) -D -S >$@.gen.temp && \
	$(BDB_LOAD) $@.bdb.temp <$@.gen.temp && \
	$(BDB_DUMP) $@.bdb.temp >$@.dump.bdb.temp && \
	$(TDB_LOAD) $@.tdb.temp <$@.gen.temp && \
	$(TDB_DUMP) $@.tdb.temp >$@.dump.tdb.temp && \
247
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp && \
248 249
	$(TDB_LOAD) $@.tdb.temp <$@.gen.temp && \
	$(TDB_DUMP) $@.tdb.temp >$@.dump.tdb.temp && \
250 251
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp \
        $(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
252

Yoni Fogel's avatar
Yoni Fogel committed
253
#if $(DIFF) -q <(echo "foo") <(echo "foo") > /dev/null; then echo yes; else echo no; fi
Yoni Fogel's avatar
Yoni Fogel committed
254
clean:
255
	rm -rf *.so *.o $(UTILS) $(BDB_UTILS) $(STATIC_UTILS) *.temp *.gcno *.gcda *.gcov *.temp.clean *.temp.dirty
256 257
	rm -rf tokudb.directory tokudb.environment *.log *.tokudb *.tokulog
	rm -rf dir.*
258

Yoni Fogel's avatar
Yoni Fogel committed
259