# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
-include makefile.inc
ASCEND_MINIOS_SRC = ascenddaemon/impl_device/IndexILFlat.cpp
ASCEND_MINIOS_OBJ = $(sort $(ASCEND_MINIOS_SRC:.cpp=.o))
ASCEND_MINIOS_DEPS_SRC = $(wildcard ascenddaemon/StandardAscendResources.cpp ascenddaemon/utils/MemorySpace.cpp ascenddaemon/utils/TopkOp.cpp ascenddaemon/utils/AscendMemory.cpp ascenddaemon/utils/AscendUtils.cpp ascenddaemon/utils/AscendStackMemory.cpp ascenddaemon/utils/DistanceMatrixOp.cpp ascenddaemon/utils/AscendOpDesc.cpp ascenddaemon/utils/AscendOperator.cpp)
ASCEND_MINIOS_DEPS_OBJ = $(sort $(ASCEND_MINIOS_DEPS_SRC:.cpp=.o))
#THREADPOOL
COMMON_DIR = common
THREADPOOL_DIR = $(COMMON_DIR)/threadpool
THREADPOOL_SRC = $(wildcard $(THREADPOOL_DIR)/*.cpp)
ASCEND_THREADPOOL_OBJ = $(addprefix ascenddaemon/impl_device/, $(notdir $(THREADPOOL_SRC:.cpp=.o)))
ASCENDFLAGS_MINIOS = -I. -I./ascenddaemon/impl_device -I./common
############################
# Building
all: libascendfaiss_minios.$(SHAREDEXT)
libascendfaiss_minios.$(SHAREDEXT): $(ASCEND_MINIOS_OBJ) $(ASCEND_MINIOS_DEPS_OBJ) $(ASCEND_THREADPOOL_OBJ)
$(ASCENDCXX) -o $@ $^ $(SHAREDFLAGS) $(ASCEND_MINIOS_LDFLAGS) $(ASCEND_MINIOS_LIBS)
$(ASCEND_MINIOS_DEPS_OBJ): %.o: %.cpp
$(ASCENDCXX) $(ASCEND_MINIOS_FLAGS) $(ASCENDFLAGS_MINIOS) -c $< -o $@
$(ASCEND_THREADPOOL_OBJ): $(THREADPOOL_SRC)
$(ASCENDCXX) $(ASCEND_MINIOS_FLAGS) $(ASCENDFLAGS_MINIOS) -c $< -o $@
$(ASCEND_MINIOS_OBJ): $(ASCEND_MINIOS_SRC)
$(ASCENDCXX) $(ASCEND_MINIOS_FLAGS) $(ASCENDFLAGS_MINIOS) -c $< -o $@
clean:
rm -f libascendfaiss_minios.$(SHAREDEXT)
rm -f test/ascenddevice/libascendfaiss_minios.$(SHAREDEXT)
rm -f $(ASCEND_MINIOS_DEPS_OBJ)
rm -f $(ASCEND_MINIOS_OBJ)
rm -f $(ASCEND_THREADPOOL_OBJ)
#############################
# Tests
gtest: third_party/googletest/googletest
$(MAKE) -C third_party/googletest/googletest/make CXX="$(ASCENDCXX)" CXXFLAGS="$(ASCENDFLAGS)" gtest.a
mv third_party/googletest/googletest/make/gtest.a third_party/googletest/googletest/make/gtest_dev.a
rm -rf third_party/googletest/googletest/make/gtest-all.o
ln -sf `pwd`/third_party/googletest/googletest test/ascenddevice/gtest
#ln -sf `pwd`/third_party/googletest/googletest test/ops/gtest
test_device: libascendfaiss_minios.$(SHAREDEXT)
cp libascendfaiss_minios.$(SHAREDEXT) test/ascenddevice
$(MAKE) -C test/ascenddevice run
test_device_clean:
rm -f test/ascenddevice/*.o
rm -f test/ascenddevice/TestIndexILFlat
.PHONY: all clean test_device