aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/distrib/python/grpcio_tools
diff options
context:
space:
mode:
authorGravatar Jan Tattermusch <jtattermusch@users.noreply.github.com>2016-05-09 10:34:00 -0700
committerGravatar Jan Tattermusch <jtattermusch@users.noreply.github.com>2016-05-09 10:34:00 -0700
commit5701ae8a34eb300809b7958dfd5ddeb52edb2247 (patch)
tree265ab28f369191121a6cdb08545c2981f5e99ce7 /tools/distrib/python/grpcio_tools
parent03f7e995d2d62aba03c41a259ab3aab3476d5b9c (diff)
parentb4e82f7897c8a840249f39f17bc9afb986206588 (diff)
Merge pull request #6483 from soltanmm/wind2
Fix windows linkage in Python grpcio-tools
Diffstat (limited to 'tools/distrib/python/grpcio_tools')
-rw-r--r--tools/distrib/python/grpcio_tools/README.rst4
-rw-r--r--tools/distrib/python/grpcio_tools/setup.py14
2 files changed, 16 insertions, 2 deletions
diff --git a/tools/distrib/python/grpcio_tools/README.rst b/tools/distrib/python/grpcio_tools/README.rst
index 3be564ef5b..10d2fe8c30 100644
--- a/tools/distrib/python/grpcio_tools/README.rst
+++ b/tools/distrib/python/grpcio_tools/README.rst
@@ -46,7 +46,9 @@ From Source
~~~~~~~~~~~
Building from source requires that you have the Python headers (usually a
-package named :code:`python-dev`) and Cython installed.
+package named :code:`python-dev`) and Cython installed. It further requires a
+GCC-like compiler to go smoothly; you can probably get it to work without
+GCC-like stuff, but you may end up having a bad time.
::
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index 1a77c430fa..4cc1a1eaf8 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -30,6 +30,7 @@
from distutils import extension
import os
import os.path
+import shlex
import sys
import setuptools
@@ -40,6 +41,16 @@ from setuptools.command import build_ext
os.chdir(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.abspath('.'))
+# There are some situations (like on Windows) where CC, CFLAGS, and LDFLAGS are
+# entirely ignored/dropped/forgotten by distutils and its Cygwin/MinGW support.
+# We use these environment variables to thus get around that without locking
+# ourselves in w.r.t. the multitude of operating systems this ought to build on.
+# By default we assume a GCC-like compiler.
+EXTRA_COMPILE_ARGS = shlex.split(os.environ.get('GRPC_PYTHON_CFLAGS',
+ '-frtti -std=c++11'))
+EXTRA_LINK_ARGS = shlex.split(os.environ.get('GRPC_PYTHON_LDFLAGS',
+ '-lpthread'))
+
import protoc_lib_deps
import grpc_version
@@ -60,7 +71,8 @@ def protoc_ext_module():
],
language='c++',
define_macros=[('HAVE_PTHREAD', 1)],
- extra_compile_args=['-lpthread', '-frtti', '-std=c++11'],
+ extra_compile_args=EXTRA_COMPILE_ARGS,
+ extra_link_args=EXTRA_LINK_ARGS,
)
return plugin_ext