summaryrefslogtreecommitdiffstats
path: root/third-party/tommyds/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'third-party/tommyds/Makefile')
-rw-r--r--third-party/tommyds/Makefile219
1 files changed, 219 insertions, 0 deletions
diff --git a/third-party/tommyds/Makefile b/third-party/tommyds/Makefile
new file mode 100644
index 0000000..a2a3d36
--- /dev/null
+++ b/third-party/tommyds/Makefile
@@ -0,0 +1,219 @@
+#############################################################################
+# Tommy Makefile
+
+# Version of TommyDS
+VERSION = 2.2
+
+# Build options for the check program
+ifdef COVERAGE
+CFLAGS = -O0 -g -fprofile-arcs -ftest-coverage
+else
+CFLAGS = -O3 -march=native -Wall -Wextra -Wshadow -Wuninitialized -Wpadded -Wcast-align -Wcast-qual -g
+endif
+
+# Build options for the benchmark
+# -std=gnu++0x required by Google btree
+BENCHCXXFLAGS = -m32 -O3 -march=native -flto -fpermissive -std=gnu++0x -Wall -g
+
+# Programs
+CC ?= gcc
+CXX ?= g++
+OBJDUMP ?= objdump
+UNAME = $(shell uname)
+
+# Linux
+ifeq ($(UNAME),Linux)
+LIB=-lrt
+BENCHLIB=benchmark/lib/judy/libJudyL.a benchmark/lib/judy/libJudyMalloc.a
+EXE=
+O=.o
+endif
+
+# Darwin
+ifeq ($(UNAME),Darwin)
+LIB=
+EXE=
+O=.o
+endif
+
+# Windows
+ifeq ($(UNAME),)
+BENCHLIB=benchmark/lib/judy/src/judy.lib
+EXE=.exe
+O=.obj
+endif
+
+#CHECK = ./tommybench -n 1000000 -d tommy-hashlin
+CHECK = ./tommycheck
+
+DEP = \
+ tommyds/tommyalloc.c \
+ tommyds/tommyalloc.h \
+ tommyds/tommyarray.c \
+ tommyds/tommyarray.h \
+ tommyds/tommyarrayof.c \
+ tommyds/tommyarrayof.h \
+ tommyds/tommyarrayblk.c \
+ tommyds/tommyarrayblk.h \
+ tommyds/tommyarrayblkof.c \
+ tommyds/tommyarrayblkof.h \
+ tommyds/tommy.c \
+ tommyds/tommy.h \
+ tommyds/tommyhash.c \
+ tommyds/tommyhashdyn.c \
+ tommyds/tommyhashdyn.h \
+ tommyds/tommyhash.h \
+ tommyds/tommyhashlin.c \
+ tommyds/tommyhashlin.h \
+ tommyds/tommyhashtbl.c \
+ tommyds/tommyhashtbl.h \
+ tommyds/tommylist.c \
+ tommyds/tommylist.h \
+ tommyds/tommytrie.c \
+ tommyds/tommytrie.h \
+ tommyds/tommytrieinp.c \
+ tommyds/tommytrieinp.h \
+ tommyds/tommytypes.h \
+ tommyds/tommychain.h
+
+DEPTEST = \
+ check.c \
+ benchmark.cc
+
+all: tommycheck$(EXE)
+
+bench: tommybench$(EXE)
+
+tommy$(O): $(DEP)
+ $(CC) $(CFLAGS) -c tommyds/tommy.c -o tommy$(O)
+ -$(OBJDUMP) -S tommy$(O) > tommy.s
+
+tommycheck$(EXE): check.c tommy$(O)
+ $(CC) $(CFLAGS) check.c tommy$(O) -o tommycheck$(EXE) $(LIB)
+
+tommybench$(EXE): benchmark.cc $(DEP)
+ $(CXX) $(BENCHCXXFLAGS) benchmark.cc -o tommybench$(EXE) $(LIB) $(BENCHLIB)
+
+check: tommycheck$(EXE)
+ ./tommycheck$(EXE)
+ echo Check completed with success!
+
+lcov_reset:
+ lcov -d . -z
+ rm -f ./lcov.info
+
+lcov_capture:
+ lcov -d . --capture -o lcov.info
+
+lcov_html:
+ rm -rf ./cov
+ mkdir cov
+ genhtml -o ./cov lcov.info
+
+coverage:
+ $(MAKE) COVERAGE=1 tommycheck$(EXE)
+ $(MAKE) lcov_reset
+ ./tommycheck$(EXE)
+ $(MAKE) lcov_capture
+ $(MAKE) lcov_html
+
+valgrind:
+ valgrind \
+ --tool=memcheck \
+ --track-origins=yes \
+ --read-var-info=yes \
+ -v $(CHECK) \
+ 2> valgrind.log
+ tail valgrind.log
+
+callgrind:
+ valgrind \
+ --tool=callgrind \
+ --dump-instr=yes \
+ --trace-jump=yes \
+ -v $(CHECK) \
+ 2> callgrind.log
+ tail callgrind.log
+
+cachegrind:
+ valgrind \
+ --tool=cachegrind \
+ -v $(CHECK) \
+ 2> cachegrind.log
+ tail cachegrind.log
+
+phony:
+
+graph: phony
+ cd benchmark && sh gr_all.sh
+
+doc: phony tommy.doxygen tommy.css $(DEP)
+ rm -rf doc
+ mkdir doc
+ cp -a benchmark/data/def doc/def
+ cp -a benchmark/data/other doc/other
+ cp -a benchmark/data/core_i5_650_3G2_linux doc/core_i5_650_3G2_linux
+ rm -f doc/*/*.lst
+ rm -f doc/*/*.gnu
+ doxygen tommy.doxygen
+ rm -f doc/doxygen.png
+ rm -f doc/tab_*.png
+
+web: phony tommyweb.doxygen tommy.css $(DEP)
+ rm -rf web
+ mkdir web
+ cp -a benchmark/data/def web/def
+ cp -a benchmark/data/other web/other
+ cp -a benchmark/data/core_i5_650_3G2_linux web/core_i5_650_3G2_linux
+ rm -f web/*/*.lst
+ rm -f web/*/*.gnu
+ doxygen tommyweb.doxygen
+ rm -f web/doxygen.png
+ rm -f web/tab_*.png
+
+clean:
+ rm -f *.log *.s *.lst *.o
+ rm -f *.ncb *.suo *.obj
+ rm -f *.gcno *.gcda lcov.info
+ rm -rf Debug Release x64
+ rm -f callgrind.out.*
+ rm -f cachegrind.out.*
+
+distclean: clean
+ rm -f tommybench$(EXE) tommycheck$(EXE)
+
+maintainerclean: distclean
+ rm -rf doc web
+
+DIST=tommyds-$(VERSION)
+
+DISTFILES=\
+ Makefile \
+ README LICENSE AUTHORS INSTALL HISTORY \
+ tommy.doxygen tommy.css tommy-header.html tommy-footer.html \
+ benchmark.vcxproj benchmark.sln \
+ benchmark.geany \
+ benchmark.cc \
+ check.c
+
+dist:
+ mkdir $(DIST)
+ mkdir $(DIST)/tommyds
+ cp $(DISTFILES) $(DIST)
+ cp $(DEP) $(DIST)/tommyds
+ cp $(DEPTEST) $(DIST)
+ cp -R doc $(DIST)
+ cp -R benchmark $(DIST)/benchmark
+ rm -f $(DIST)/benchmark/data/*/*.png
+ rm -rf $(DIST)/benchmark/data/test
+ rm -f $(DIST)/benchmark/arial.ttf
+ rm -f $(DIST).tar.gz
+ tar cfzo $(DIST).tar.gz $(DIST)
+ rm -f $(DIST).zip
+ zip -r $(DIST).zip $(DIST)
+ rm -r $(DIST)
+
+distcheck: dist
+ tar zxvf $(DIST).tar.gz
+ cd $(DIST) && make check
+ rm -rf $(DIST)