include ft/tests/make.include

FT_BINS = $(patsubst %,ft/%$(BINSUF),$(BINS_RAW))

TEST_FT = ft/brt-test-helpers.$(OEXT)

# This version runs logformat twice.  There is something screwing in make that if you have a pattern form with two outputs
# then it runs the thing only once, but if it has no % symbols it runs it twice.
## log_header.h log_code.c: logformat$(BINSUF)
##	./logformat
# So we do it this way
ft/log_print.c ft/log_header.h ft/log_code.c: ft/logformat$(BINSUF)
	ft/logformat$(BINSUF) ft
.PRECIOUS: ft/log_print.c ft/log_header.h ft/log_code.c

FT_A        = ft/ft.$(AEXT)

FT_SOURCES = \
  block_allocator \
  block_table \
  bread \
  brt-serialize \
  brt-verify \
  brt \
  ft_msg \
  brt-test-helpers \
  cachetable \
  checkpoint \
  fifo \
  fingerprint \
  key \
  leafentry \
  leaflock \
  logfilemgr \
  logger \
  log_code \
  log_print \
  logcursor \
  memarena \
  mempool \
  minicron \
  omt \
  recover \
  roll \
  rollback \
  ule \
  threadpool \
  toku_worker \
  trace_mem \
  txn \
  x1764 \
  xids \
  ybt \
# keep this line so I can have a \ on the previous line

FT_C_FILES = $(patsubst %,ft/%.c,$(FT_SOURCES))
FT_O_FILES = $(patsubst %,ft/%.$(OEXT),$(FT_SOURCES))

$(TEST_FT): ft/log_header.h
$(TEST_FT) $(FT_O_FILES) ft/ft.$(OEXT): CPPFLAGS_DIRECTORY = -Ift -Iinclude
ft/ft.$(OEXT): $(FT_C_FILES) $(DEPEND_COMPILE)
	$(CC) -c $(FT_C_FILES) $(COMBINE_C) $(CPPFLAGS) $(CPPFLAGS_DIRECTORY) $(CFLAGS) $(CFLAGS_DIRECTORY) $(OOUTPUT)$@

ifneq ($(CYGWIN),)
FT_O_FILES = $(FT_O_FILES)
else ifeq ($(CC),icc)
FT_O_FILES = $(FT_O_FILES)
else ifeq ($(COMBINE),0)
FT_O_FILES = $(FT_O_FILES)
else
FT_O_FILES = ft/ft.o
endif

FT_O_FILES += ft/ft_loader.o

$(FT_O_FILES): VISIBILITY=-fvisibility=default
$(FT_O_FILES): CPPFLAGS_DIRECTORY=-Iinclude -Itoku_include -I$(OS)
$(FT_O_FILES): SHADOW=
$(FT_A): $(FT_O_FILES)
ft/libft.$(SOEXT): $(FT_O_FILES)
ft/libft.$(SOEXT): VISIBILITY=-fvisibility=default
ft/libft.$(SOEXT): LOADLIBES_DIRECTORY=-lz -Llib -ltokuportability
ft/libft.$(SOEXT): CFLAGS_DIRECTORY=-lpthread
ft/ft_loader.$(OEXT): CPPFLAGS_DIRECTORY=-Iinclude
ft/logformat$(BINSUF): CPPFLAGS_DIRECTORY=-Iinclude -Itoku_include -I$(OS)

ft/build: ft/bins ft/libs $(TEST_FT) ft/tests/build
ft/check: ft/tests/check
ft/bins: $(FT_BINS)
ft/libs: $(FT_A)
.PHONY: ft/build ft/bins ft/libs