108 lines
3.4 KiB
Makefile
108 lines
3.4 KiB
Makefile
# -*- makefile -*-
|
|
# Copyright (c) 2015-present, Facebook, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the BSD+Patents 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.
|