faiss/Makefile

113 lines
2.5 KiB
Makefile
Raw Normal View History

# Copyright (c) Facebook, Inc. and its affiliates.
2017-02-22 23:26:44 +01:00
#
# This source code is licensed under the MIT license found in the
2017-02-22 23:26:44 +01:00
# LICENSE file in the root directory of this source tree.
-include makefile.inc
2017-02-22 23:26:44 +01:00
HEADERS = $(wildcard *.h impl/*.h utils/*.h)
SRC = $(wildcard *.cpp impl/*.cpp utils/*.cpp)
OBJ = $(SRC:.cpp=.o)
INSTALLDIRS = $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)/faiss
GPU_HEADERS = $(wildcard gpu/*.h gpu/impl/*.h gpu/utils/*.h)
GPU_CPPSRC = $(wildcard gpu/*.cpp gpu/impl/*.cpp gpu/utils/*.cpp)
GPU_CUSRC = $(wildcard gpu/*.cu gpu/impl/*.cu gpu/utils/*.cu \
gpu/utils/nvidia/*.cu gpu/utils/blockselect/*.cu gpu/utils/warpselect/*.cu)
GPU_SRC = $(GPU_CPPSRC) $(GPU_CUSRC)
GPU_CPPOBJ = $(GPU_CPPSRC:.cpp=.o)
GPU_CUOBJ = $(GPU_CUSRC:.cu=.o)
GPU_OBJ = $(GPU_CPPOBJ) $(GPU_CUOBJ)
ifneq ($(strip $(NVCC)),)
OBJ += $(GPU_OBJ)
HEADERS += $(GPU_HEADERS)
endif
2017-02-24 08:37:57 -08:00
CPPFLAGS += -I.
2017-02-24 08:37:57 -08:00
############################
# Building
2017-02-22 23:26:44 +01:00
all: libfaiss.a libfaiss.$(SHAREDEXT)
2017-02-24 08:37:57 -08:00
libfaiss.a: $(OBJ)
$(AR) r $@ $^
2017-02-22 23:26:44 +01:00
libfaiss.$(SHAREDEXT): $(OBJ)
$(CXX) $(SHAREDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
2017-02-22 23:26:44 +01:00
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CPUFLAGS) -c $< -o $@
2017-02-24 08:37:57 -08:00
%.o: %.cu
$(NVCC) $(NVCCFLAGS) -g -O3 -c $< -o $@
clean:
rm -f libfaiss.a libfaiss.$(SHAREDEXT)
rm -f $(OBJ)
2017-02-22 23:26:44 +01:00
############################
# Installing
2017-02-22 23:26:44 +01:00
install: libfaiss.a libfaiss.$(SHAREDEXT) installdirs
cp libfaiss.a libfaiss.$(SHAREDEXT) $(DESTDIR)$(libdir)
tar cf - $(HEADERS) | tar xf - -C $(DESTDIR)$(includedir)/faiss/
2017-02-22 23:26:44 +01:00
installdirs:
$(MKDIR_P) $(INSTALLDIRS)
2017-02-22 23:26:44 +01:00
uninstall:
rm -f $(DESTDIR)$(libdir)/libfaiss.a \
$(DESTDIR)$(libdir)/libfaiss.$(SHAREDEXT)
rm -rf $(DESTDIR)$(includedir)/faiss
2017-02-22 23:26:44 +01:00
#############################
# Dependencies
2017-02-22 23:26:44 +01:00
-include depend
2017-02-22 23:26:44 +01:00
depend: $(SRC) $(GPU_SRC)
for i in $^; do \
$(CXXCPP) $(CPPFLAGS) -DCUDA_VERSION=7050 -x c++ -MM $$i; \
done > depend
2017-02-22 23:26:44 +01:00
#############################
# Python
py: libfaiss.a
$(MAKE) -C python
2017-02-22 23:26:44 +01:00
#############################
# Tests
2017-02-22 23:26:44 +01:00
test: libfaiss.a py
$(MAKE) -C tests run
PYTHONPATH=./python/build/`ls python/build | grep lib` \
$(PYTHON) -m unittest discover tests/ -v
2017-02-22 23:26:44 +01:00
test_gpu: libfaiss.a
$(MAKE) -C gpu/test run
PYTHONPATH=./python/build/`ls python/build | grep lib` \
$(PYTHON) -m unittest discover gpu/test/ -v
2017-02-22 23:26:44 +01:00
#############################
# Demos
2017-02-22 23:26:44 +01:00
demos: libfaiss.a
$(MAKE) -C demos
2017-02-22 23:26:44 +01:00
#############################
# Misc
2017-02-22 23:26:44 +01:00
misc/test_blas: misc/test_blas.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
.PHONY: all clean demos install installdirs py test test_gpu uninstall