Makefile 7.09 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)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.4
Rich Prohaska's avatar
Rich Prohaska committed
16
endif
17 18
BDB_DUMP=$(BDBDIR)/bin/db_dump$(BINSUF)
BDB_LOAD=$(BDBDIR)/bin/db_load$(BINSUF)
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 41 42 43
BDB_UTILS=$(patsubst %$(BINSUF),%.bdb$(BINSUF),$(UTILS))
STATIC_UTILS=$(patsubst %$(BINSUF),%_static$(BINSUF),$(UTILS))

$(UTILS): DLINK_FILES=$(TOKUROOT)lib/libtokudb.$(SOEXT)
$(STATIC_UTILS): LINK_FILES+=$(TOKUROOT)lib/libtokudb.$(AEXT)

44 45 46
$(UTILS) $(STATIC_UTILS): RPATH_DIRS+=$(TOKUROOT)lib
#empty

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
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
76 77
$(STATIC_UTILS): CPPFLAGS+=-DTDB_IS_STATIC=1
$(UTILS): CPPFLAGS+=-DTDB_IS_STATIC=0
Yoni Fogel's avatar
Yoni Fogel committed
78

79 80 81 82 83 84 85 86
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

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

89 90 91 92 93
build all: build.tdb build.bdb;
ifeq ($(OS_CHOICE),windows)
build.tdb: $(UTILS) copy.tdb;
build.bdb: $(BDB_UTILS) copy.bdb;
else
94 95
build.tdb: $(UTILS) $(STATIC_UTILS);
build.bdb: $(BDB_UTILS);
96 97 98 99 100 101
endif

copy.tdb:
	cp ../lib/*.dll ./
copy.bdb:
	cp $(BDBDIR)/lib/*.dll ./
Yoni Fogel's avatar
Yoni Fogel committed
102

103 104
coverage: $(UTILS)

105 106
%$(BINSUF): %.c
	$(CC) $< $(BIN_FROM_C_FLAGS) $(LINK_MUST_BE_LAST)
Yoni Fogel's avatar
Yoni Fogel committed
107

108 109
%.bdb$(BINSUF): %.c
	$(CC) $< $(BIN_FROM_C_FLAGS) $(LINK_MUST_BE_LAST)
110

111 112
%_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
113

114 115 116
strip: $(STATIC_UTILS) 
	strip $(STATIC_UTILS)

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

119
test-coverage: $(UTILS) test_gen test_load test_dump test_nodup test_dupsort
120

Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
121
test_gen: test_gen_hex
Yoni Fogel's avatar
Yoni Fogel committed
122

Yoni Fogel's avatar
Yoni Fogel committed
123 124 125 126
TEST_GEN_HEX_NUMKEYS=10000
TEST_GEN_HEX_LENGTHMIN=0
TEST_GEN_HEX_LENGTHLIMIT=1024
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
127

128 129 130 131 132
TDB_GEN=./tokudb_gen$(BINSUF)
TDB_LOAD=./tokudb_load$(BINSUF)
TDB_DUMP=./tokudb_dump$(BINSUF)
TDB_DUMPBDB=./tokudb_dump.bdb$(BINSUF)

Yoni Fogel's avatar
Yoni Fogel committed
133
test_gen_hex:
Yoni Fogel's avatar
Yoni Fogel committed
134
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
135
	@#echo "Generating text input > db > text"
Yoni Fogel's avatar
Yoni Fogel committed
136
	rm -f $@.*.temp
137 138 139 140 141 142 143
	$(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 && \
	export LC_ALL=C;$(TDB_GEN) -h -f $(TEST_GEN_HEX_FLAGS) -d "\t" -s "\n" | sort -k 1,1 | tr -d "\n" | tr "\t" "\n" >> $@.gen_sorted.temp && \
	$(TDB_GEN) -F -h  >> $@.gen_sorted.temp && \
	$(DIFF) $@.load_dump.temp $@.gen_sorted.temp \
144
	$(SUMMARIZE_CMD)
145

146
test_load: test_load_hex test_load_text test_load_text_noendline
Yoni Fogel's avatar
Yoni Fogel committed
147 148

test_load_hex:
Yoni Fogel's avatar
Yoni Fogel committed
149
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
150
	@#echo "Generating text input > db > text"
Yoni Fogel's avatar
Yoni Fogel committed
151
	rm -f $@.*.temp
152 153 154 155 156
	$(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 && \
157 158
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
159

160
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
161

162
test_load_text:
Yoni Fogel's avatar
Yoni Fogel committed
163
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
164
	@#echo "Generating text input > db > text"
Yoni Fogel's avatar
Yoni Fogel committed
165
	rm -f $@.*.temp
166 167 168 169 170
	$(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 && \
171 172
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Yoni Fogel's avatar
Yoni Fogel committed
173 174

test_load_text_noendline:
175
	@#echo "Testing no end of line at end of file."
Yoni Fogel's avatar
Yoni Fogel committed
176 177
	rm -f $@.*.temp
	echo -en "key\nvalue" > $@.gen.temp
178
	$(TDB_LOAD) -T -t btree $@.tokudb.temp < $@.gen.temp $(SUMMARIZE_CMD)
Yoni Fogel's avatar
Yoni Fogel committed
179 180


181 182
test_dump:
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
183
	@#echo "Generating text input > db > text"
184
	rm -f $@.*.temp
185 186 187 188
	$(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 && \
189 190
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
191

192
test_nodup:
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
193
	rm -rf $@.*.temp
194 195 196 197 198
	$(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 && \
199
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp && \
200 201
	$(TDB_LOAD) $@.tdb.temp <$@.gen.temp && \
	$(TDB_DUMP) $@.tdb.temp >$@.dump.tdb.temp && \
202 203
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp \
	$(SUMMARIZE_CMD)
204 205 206

test_dupsort:
	rm -rf $@.*.temp
207 208 209 210 211
	$(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 && \
212
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp && \
213 214
	$(TDB_LOAD) $@.tdb.temp <$@.gen.temp && \
	$(TDB_DUMP) $@.tdb.temp >$@.dump.tdb.temp && \
215 216
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp \
        $(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
217

Yoni Fogel's avatar
Yoni Fogel committed
218
#if $(DIFF) -q <(echo "foo") <(echo "foo") > /dev/null; then echo yes; else echo no; fi
Yoni Fogel's avatar
Yoni Fogel committed
219
clean:
220 221
	rm -rf *.so *.o $(UTILS) $(BDB_UTILS) $(STATIC_UTILS) *.temp *.gcno *.gcda *.gcov *.temp.clean *.temp.dirty

Yoni Fogel's avatar
Yoni Fogel committed
222