SRCS = \
	c_api.cc \
	c_api_experimental.cc

OBJS = $(subst .cc,.o,$(subst .cxx,.o,$(subst .cpp,.o,$(SRCS))))

TENSORFLOW_ROOT = $(shell go env GOPATH)/src/github.com/tensorflow/tensorflow
CXXFLAGS := -fPIC -DTF_COMPILE_LIBRARY -I$(TENSORFLOW_ROOT) \
	-I$(TENSORFLOW_ROOT)/tensorflow/lite/tools/make/downloads/flatbuffers/include \
	-I$(TENSORFLOW_ROOT)/tensorflow/lite/tools/make/downloads/absl
TARGET = libtensorflowlite_c
ifeq ($(OS),Windows_NT)
OS_ARCH = windows_x86_64
TARGET_SHARED := $(TARGET).dll
else
ifeq ($(shell uname -s),Darwin)
CXXFLAGS := -std=c++11 $(CXXFLAGS)
OS_ARCH = osx_$(shell uname -m)
else
ifeq ($(shell uname -m),x86_64)
OS_ARCH = linux_x86_64
else
ifeq ($(shell uname -m),armv6l)
OS_ARCH = linux_armv6l
else
OS_ARCH = rpi_armv7l
endif
endif
endif
TARGET_SHARED := $(TARGET).so
endif
LDFLAGS += -L$(TENSORFLOW_ROOT)/tensorflow/lite/tools/make/gen/$(OS_ARCH)/lib
LIBS = -ltensorflow-lite

.SUFFIXES: .cpp .cxx .o

all : $(TARGET_SHARED)

$(TARGET_SHARED) : $(OBJS)
	g++ -shared -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

.cxx.o :
	g++ -std=c++14 -c $(CXXFLAGS) -I. $< -o $@

.cpp.o :
	g++ -std=c++14 -c $(CXXFLAGS) -I. $< -o $@

clean :
	rm -f *.o $(TARGET_SHARED)
