# -*- makefile -*- # 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. # # tested on Mac OS X 10.12.2 Sierra with additional software installed via macports # The system default clang does not support openmp # You can install an openmp compatible g++ with macports: # port install g++-mp-6 CXX = /opt/local/bin/g++-mp-6 -std=c++11 CXXFLAGS = -fPIC -m64 -Wall -g -O3 -fopenmp -Wno-sign-compare CPUFLAGS = -msse4 -mpopcnt LDFLAGS = -g -fPIC -fopenmp # common linux flags SHAREDEXT = dylib SHAREDFLAGS = -dynamiclib MKDIR_P = mkdir -p prefix ?= /usr/local exec_prefix ?= ${prefix} libdir = ${exec_prefix}/lib includedir = ${prefix}/include ########################################################################## # Uncomment one of the 4 BLAS/Lapack implementation options # below. They are sorted # from fastest to slowest (in our # experiments). ########################################################################## # # 1. Intel MKL # # This is the fastest BLAS implementation we tested. Unfortunately it # is not open-source and determining the correct linking flags is a # nightmare. See # # https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor # # The latest tested version is MKL 2017.0.098 (2017 Initial Release) and can # be downloaded here: # # https://registrationcenter.intel.com/en/forms/?productid=2558&licensetype=2 # # The following settings are working if MKL is installed on its default folder: # # MKLROOT = /opt/intel/compilers_and_libraries/linux/mkl/ # # LDFLAGS += -Wl,--no-as-needed -L$(MKLROOT)/lib/intel64 # LIBS += -lmkl_intel_ilp64 -lmkl_core -lmkl_gnu_thread -ldl -lpthread # # CPPFLAGS += -DFINTEGER=long # # You may have to set the LD_LIBRARY_PATH=$MKLROOT/lib/intel64 at runtime. # # 2. Openblas # # The library contains both BLAS and Lapack. Install with port install OpenBLAS # # CPPFLAGS += -DFINTEGER=int # LIBS += /opt/local/lib/libopenblas.dylib # # # 3. Apple's framework accelerate # # This has the advantage that it does not require to install anything, # as it is provided by default on the mac. It is not very fast, though. # CPPFLAGS += -DFINTEGER=int LIBS += -framework Accelerate ########################################################################## # SWIG and Python flags ########################################################################## # SWIG executable. This should be at least version 3.x # port install swig swig-python SWIG = /opt/local/bin/swig # The Python include directories for the current python executable can # typically be found with # # python -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc()" # python -c "import numpy ; print numpy.get_include()" # # the paths below are for the system python (not the macports one) PYTHONCFLAGS=-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 \ -I/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include PYTHONLIB=-lpython ########################################################################## # Faiss GPU ########################################################################## # As we don't have access to a Mac with nvidia GPUs installed, we # could not validate the GPU compile of Faiss.