# -*- Mode: Makefile -*- .DEFAULT_GOAL=build TOKUROOT=../ INCLUDEDIRS=-I$(TOKUROOT)newbrt -I./lock_tree -I./range_tree DEPEND_COMPILE += \ ydb-internal.h \ $(TOKUROOT)include/db.h \ $(TOKUROOT)newbrt/cachetable.h \ $(TOKUROOT)newbrt/brt.h \ $(TOKUROOT)newbrt/log.c \ #End of line ydbtrace.o tdbtrace.o: tdbtrace.h include $(TOKUROOT)toku_include/Makefile.include CPPFLAGS+=-D_GNU_SOURCE -D_THREAD_SAFE YDB=ydb.$(AEXT) YDB_BUNDLE=ydb.bundle TYDB=tydb.$(AEXT) TYDB_BUNDLE=tydb.bundle LIBNAME=libtokudb TLIBNAME=libtokudbtrace LIBRARY=$(LIBNAME).$(SOEXT) TLIBRARY=$(TLIBNAME).$(SOEXT) LIBRARY_S=$(LIBNAME).$(AEXT) TLIBRARY_S=$(TLIBNAME).$(AEXT) OBJS_RAW = \ ydb_lib \ ydb \ errors \ elocks \ # dlmalloc \ DLMALLOC not for windows yet. Add it for linux (below) #\end #OBJS automatically defined. #dlmalloc not for windows (yet) ifeq ($(CYGWIN),) OBJS_RAW += dlmalloc else ifneq ($(CC),icc) OBJS_RAW += dlmalloc endif LIBRARIES= \ $(LIBRARY) \ $(TLIBRARY) \ $(LIBRARY_S) \ $(TLIBRARY_S) \ #Purposely here for \ at end of prev INSTALL_LIBRARIES= $(patsubst %,%.install,$(LIBRARIES)) .PHONY:install_libs install.% build install local build_tests #Half Build Half Install??? build: local build_tests ; local: buildlocktrees libs install_libs ; build_tests: | local cd tests && $(MAKE) build TOBJS= tdbtrace.$(OEXT) $(patsubst ydb.$(OEXT),ydbtrace.$(OEXT),$(OBJS)) install_libs: $(INSTALL_LIBRARIES) %.install: % if ! diff $* ../lib/$* > /dev/null 2>&1; then cp $* ../lib/; fi .PHONY: install install: libs install_libs ; .PHONY: local libs buildlocktrees libs: $(LIBRARIES) ; buildlocktrees: $(LOCKTREE) $(RANGETREE) ; $(OBJS) $(TOBJS): CPPFLAGS+=-I$(TOKUROOT)include $(YDB): $(OBJS) $(TYDB): $(TOBJS) $(LIBRARY): $(YDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(DEPEND_COMPILE) $(DEPEND_LINK) $(TLIBRARY): $(TYDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(DEPEND_COMPILE) $(DEPEND_LINK) $(LIBRARY): LINK_FILES=ydb_lib.$(OEXT) $(YDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(TLIBRARY): LINK_FILES=$(TYDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) #Skip all BDB tests for CYGWIN+ICC ifeq ($(CYGWIN),) $(LIBRARY_S): $(patsubst %.$(AEXT),%.bundle, $(YDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(LIBPORTABILITY)) $(TLIBRARY_S): $(TYDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT_BUNDLE) $(LIBPORTABILITY) else ifneq ($(CC),icc) $(LIBRARY_S): $(YDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(LIBPORTABILITY) $(TLIBRARY_S): $(TYDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(LIBPORTABILITY) else $(LIBRARY_S): $(LIBRARY) ; $(TLIBRARY_S): $(TLIBRARY) ; #$(LIBRARY_S): $(YDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(LIBPORTABILITY) #$(TLIBRARY_S): $(TYDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(LIBPORTABILITY) endif static_libtokudb.lib: $(YDB) $(LOCKTREE) $(RANGETREE) $(NEWBRT) $(LIBPORTABILITY) xilib /out:$@ $^ ipo_libtokudb.obj: $(YDB_BUNDLE) $(LOCKTREE_BUNDLE) $(RANGETREE_BUNDLE) $(NEWBRT_BUNDLE) $(LIBPORTABILITY_BUNDLE) $(CC) $(CFLAGS) $(CPPFLAGS) -Qipo-c $(filter %.$(OEXT),$^) $(patsubst %.bundle, %.bundle/*.$(OEXT), $(filter-out %.$(OEXT),$^)) mv ipo_out.obj $@ ipo_libtokudb.lib: ipo_libtokudb.obj xilib /out:$@ $^ check_globals: $(LIBNAME).$(SOEXT) python tokuglobals.py $< .PHONY: check_tests check_tests: build_tests cd tests && $(MAKE) check .PHONY: check check: local check_globals check_tests .PHONY: strip strip: $(LIBRARY) strip $< clean: cd tests && $(MAKE) clean cd lock_tree && $(MAKE) clean cd range_tree && $(MAKE) clean ydbtrace.$(OEXT): CPPFLAGS+=-DTOKUTRACE ydbtrace.$(OEXT): ydb.c $(DEPEND_COMPILE) $(CC) -c $< $(CPPFLAGS) $(CFLAGS) $(OOUTPUT)$@