Skip to content

Commit

Permalink
Fix some python version issues with cmake
Browse files Browse the repository at this point in the history
Summary:
This script will attempt to determine files that will be useful for building with the correct python version.  Currently on macOS with various python installations CMake fails to determine the correct location of python libraries.
Closes facebookarchive/caffe2#163

Reviewed By: Yangqing

Differential Revision: D4594954

Pulled By: bwasti

fbshipit-source-id: c2b750ee9608a02fad4ce2f2293f5fa54dc7011c
  • Loading branch information
bwasti authored and facebook-github-bot committed Feb 22, 2017
1 parent 26be197 commit 7a65736
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This makefile does nothing but delegating the actual building to cmake.

all:
@mkdir -p build && cd build && cmake .. && make
@mkdir -p build && cd build && cmake .. $(python ./scripts/get_python_cmake_flags.py) && make

local:
@./scripts/build_local.sh
Expand Down
39 changes: 39 additions & 0 deletions scripts/get_python_cmake_flags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
##############################################################################
# Use this script to find your preferred python installation.
##############################################################################
#
# You can use the following to build with your preferred version of python
# if your installation is not being properly detected by CMake.
#
# mkdir -p build && cd build
# cmake $(python ../scripts/get_python_libs.py) ..
# make
#

from __future__ import absolute_import
from __future__ import unicode_literals
from __future__ import print_function
from distutils import sysconfig
import os
import sys
import platform

version = platform.python_version()
if version[:3] != '2.7':
print('ERROR: Python {version} is not officially supported yet.'
.format(version=version), file=sys.stderr)
exit(1)

# Flags to print to stdout
flags = ''
inc = sysconfig.get_python_inc()
lib = sysconfig.get_config_var("LIBDIR")

# macOS specific
if sys.platform == "darwin":
lib = os.path.dirname(lib) + '/Python'
if os.path.isfile(lib):
flags += '-DPYTHON_LIBRARY={lib}'.format(lib=lib)

if os.path.isfile(inc + '/Python.h'):
flags += '-DPYTHON_INCLUDE_DIR={inc}'.format(inc=inc)

0 comments on commit 7a65736

Please sign in to comment.