Makefile 6.57 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
# -*- Mode: Makefile -*-
# standard build: make
#ident "Copyright (c) 2007 Tokutek Inc.  All rights reserved."

.DEFAULT_GOAL= build
TOKUROOT=../
INCLUDEDIRS=-I.
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 17 18
endif
BDB_DUMP=$(BDBDIR)/bin/db_dump
BDB_LOAD=$(BDBDIR)/bin/db_load
Yoni Fogel's avatar
Yoni Fogel committed
19

Yoni Fogel's avatar
Yoni Fogel committed
20 21
DIFF=diff -I 'db_pagesize='

22
OPTFLAGS = -O2
23
CFLAGS = -std=gnu89 -W -Wall -Wno-unused -g $(OPTFLAGS) $(GCOV_FLAGS)
24 25 26 27 28

# 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
CPPFLAGS = -I../include
Yoni Fogel's avatar
Yoni Fogel committed
29

30
ifneq ($(OSX),)
Yoni Fogel's avatar
Yoni Fogel committed
31 32 33 34 35 36 37 38 39 40 41
#Note: OSX 10.4 needs DYLD_LIBRARY_PATH.  OSX 10.5 claims to support -rpath.
 TDB_LOADLIBES = 
 BDB_LOADLIBES =
 SETTOKUENV=export DYLD_LIBRARY_PATH=.. ;
 UNSETTOKUENV=export DYLD_LIBRARY_PATH=$(BDBDIR)/lib ;
else
 TDB_LOADLIBES = -Wl,-rpath,$(PWD)/../lib
 BDB_LOADLIBES = -Wl,-rpath,$(BDBDIR)/lib
 SETTOKUENV=
 UNSETTOKUENV=
endif
42
LDFLAGS = -L../lib -ltokudb -lpthread $(TDB_LOADLIBES) -lz
43

44
# vars to compile bins that handle tokudb using libtokudb.a
45
STATIC_CPPFLAGS = -I../include 
46
STATIC_LDFLAGS = ../lib/libtokudb.a -lz -lpthread
Yoni Fogel's avatar
Yoni Fogel committed
47

48 49
# vars to compile bins that handle bdb
BDB_CPPFLAGS = -I$(BDBDIR)/include
Yoni Fogel's avatar
Yoni Fogel committed
50
BDB_LDFLAGS = -L$(BDBDIR)/lib -ldb -lpthread $(BDB_LOADLIBES)
51

Yoni Fogel's avatar
Yoni Fogel committed
52 53 54
UTILS=            \
   tokudb_gen     \
   tokudb_load    \
Yoni Fogel's avatar
Yoni Fogel committed
55
   tokudb_dump    \
Yoni Fogel's avatar
Yoni Fogel committed
56
#End
57
BDB_UTILS=$(patsubst %,%.bdb,$(UTILS))
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
58
STATIC_UTILS=$(patsubst %,%_static,$(UTILS))
Yoni Fogel's avatar
Yoni Fogel committed
59

60 61 62 63 64 65 66 67
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

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

70
build all: $(UTILS) $(BDB_UTILS) $(STATIC_UTILS)
Yoni Fogel's avatar
Yoni Fogel committed
71

72 73
coverage: $(UTILS)

Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
74 75
%: %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< $(LDFLAGS)
Yoni Fogel's avatar
Yoni Fogel committed
76

77 78 79
%.bdb: %.c
	$(CC) $(BDB_CPPFLAGS) $(CFLAGS) -o $@ $< $(BDB_LDFLAGS)

Yoni Fogel's avatar
Yoni Fogel committed
80
%_static: %.c ../lib/libtokudb.a
81
	$(CC) $(STATIC_CPPFLAGS) $(CFLAGS) -o $@ $< $(STATIC_LDFLAGS)
Yoni Fogel's avatar
Yoni Fogel committed
82

83 84 85
strip: $(STATIC_UTILS) 
	strip $(STATIC_UTILS)

86
check: $(UTILS) $(BDB_UTILS) $(STATIC_UTILS) test_gen test_load test_dump test_nodup test_dupsort
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
87

88
test-coverage: $(UTILS) test_gen test_load test_dump test_nodup test_dupsort
89

Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
90
test_gen: test_gen_hex
Yoni Fogel's avatar
Yoni Fogel committed
91

Yoni Fogel's avatar
Yoni Fogel committed
92 93 94 95
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
96 97

test_gen_hex:
Yoni Fogel's avatar
Yoni Fogel committed
98
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
99
	@#echo "Generating text input > db > text"
Yoni Fogel's avatar
Yoni Fogel committed
100
	rm -f $@.*.temp
101 102 103 104 105 106 107 108
	./tokudb_gen $(TEST_GEN_HEX_FLAGS) > $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_LOAD) $@.db.temp < $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_DUMP) $@.db.temp > $@.load_dump.temp && \
	./tokudb_gen -Hf > $@.gen_sorted.temp && \
	export LC_ALL=C;./tokudb_gen -hf $(TEST_GEN_HEX_FLAGS) -d "\t" -s "\n" | sort -k 1,1 | tr -d "\n" | tr "\t" "\n" >> $@.gen_sorted.temp && \
	./tokudb_gen -Fh  >> $@.gen_sorted.temp && \
	$(DIFF) -q $@.load_dump.temp $@.gen_sorted.temp \
	$(SUMMARIZE_CMD)
109

110
test_load: test_load_hex test_load_text test_load_text_noendline
Yoni Fogel's avatar
Yoni Fogel committed
111 112

test_load_hex:
Yoni Fogel's avatar
Yoni Fogel committed
113
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
114
	@#echo "Generating text input > db > text"
Yoni Fogel's avatar
Yoni Fogel committed
115
	rm -f $@.*.temp
116 117 118 119 120 121 122
	./tokudb_gen $(TEST_GEN_HEX_FLAGS) > $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_LOAD) $@.bdb.temp < $@.gen.temp && \
	$(SETTOKUENV)   ./tokudb_load $@.tokudb.temp < $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_DUMP) $@.bdb.temp > $@.dump.bdb.temp && \
	$(SETTOKUENV)   ./tokudb_dump $@.tokudb.temp > $@.dump.tokudb.temp && \
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
123

Yoni Fogel's avatar
Yoni Fogel committed
124 125
TEST_GEN_TEXT_FLAGS=-n $(TEST_GEN_HEX_NUMKEYS) -m $(TEST_GEN_HEX_LENGTHMIN) -M $(TEST_GEN_HEX_LENGTHLIMIT) -r 5 -TP

126
test_load_text:
Yoni Fogel's avatar
Yoni Fogel committed
127
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
128
	@#echo "Generating text input > db > text"
Yoni Fogel's avatar
Yoni Fogel committed
129
	rm -f $@.*.temp
130 131 132 133 134 135 136
	./tokudb_gen $(TEST_GEN_TEXT_FLAGS) > $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_LOAD)   -T -t btree $@.bdb.temp < $@.gen.temp && \
	$(SETTOKUENV)   ./tokudb_load -T -t btree $@.tokudb.temp < $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_DUMP)   -p $@.bdb.temp > $@.dump.bdb.temp && \
	$(SETTOKUENV)   ./tokudb_dump -p $@.tokudb.temp > $@.dump.tokudb.temp && \
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Yoni Fogel's avatar
Yoni Fogel committed
137 138

test_load_text_noendline:
139
	@#echo "Testing no end of line at end of file."
Yoni Fogel's avatar
Yoni Fogel committed
140 141
	rm -f $@.*.temp
	echo -en "key\nvalue" > $@.gen.temp
142
	./tokudb_load -T -t btree $@.tokudb.temp < $@.gen.temp $(SUMMARIZE_CMD)
Yoni Fogel's avatar
Yoni Fogel committed
143 144


145 146
test_dump:
	#Generating $(TEST_GEN_HEX_NUMKEYS) keys.  [$(TEST_GEN_HEX_LENGTHMIN),$(TEST_GEN_HEX_LENGTHLIMIT)) bytes + identifier overhead
147
	@#echo "Generating text input > db > text"
148
	rm -f $@.*.temp
149 150 151 152 153 154
	./tokudb_gen $(TEST_GEN_HEX_FLAGS) > $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_LOAD) $@.bdb.temp < $@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_DUMP) $@.bdb.temp > $@.dump.bdb.temp && \
	$(UNSETTOKUENV) ./tokudb_dump.bdb $@.bdb.temp > $@.dump.tokudb.temp && \
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tokudb.temp \
	$(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
155

156
test_nodup:
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
157
	rm -rf $@.*.temp
158 159 160 161 162 163 164 165 166 167
	./tokudb_gen $(TEST_GEN_HEX_FLAGS) >$@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_LOAD) $@.bdb.temp <$@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_DUMP) $@.bdb.temp >$@.dump.bdb.temp && \
	$(SETTOKUENV)   ./tokudb_load $@.tdb.temp <$@.gen.temp && \
	$(SETTOKUENV)   ./tokudb_dump $@.tdb.temp >$@.dump.tdb.temp && \
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp && \
	$(SETTOKUENV)   ./tokudb_load_static $@.tdb.temp <$@.gen.temp && \
	$(SETTOKUENV)   ./tokudb_dump_static $@.tdb.temp >$@.dump.tdb.temp && \
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp \
	$(SUMMARIZE_CMD)
168 169 170

test_dupsort:
	rm -rf $@.*.temp
171 172 173 174 175 176 177 178 179 180
	./tokudb_gen $(TEST_GEN_HEX_FLAGS) -DS >$@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_LOAD) $@.bdb.temp <$@.gen.temp && \
	$(UNSETTOKUENV) $(BDB_DUMP) $@.bdb.temp >$@.dump.bdb.temp && \
	$(SETTOKUENV)   ./tokudb_load $@.tdb.temp <$@.gen.temp && \
	$(SETTOKUENV)   ./tokudb_dump $@.tdb.temp >$@.dump.tdb.temp && \
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp && \
	$(SETTOKUENV)   ./tokudb_load_static $@.tdb.temp <$@.gen.temp && \
	$(SETTOKUENV)   ./tokudb_dump_static $@.tdb.temp >$@.dump.tdb.temp && \
	$(DIFF) -q $@.dump.bdb.temp $@.dump.tdb.temp \
        $(SUMMARIZE_CMD)
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
181

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