|
|
|
@ -157,13 +157,28 @@ class test_conformance(_build_py): |
|
|
|
|
status = subprocess.check_call(cmd, shell=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_option_from_sys_argv(option_str): |
|
|
|
|
if option_str in sys.argv: |
|
|
|
|
sys.argv.remove(option_str) |
|
|
|
|
return True |
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
|
ext_module_list = [] |
|
|
|
|
cpp_impl = '--cpp_implementation' |
|
|
|
|
warnings_as_errors = '--warnings_as_errors' |
|
|
|
|
if cpp_impl in sys.argv: |
|
|
|
|
sys.argv.remove(cpp_impl) |
|
|
|
|
if get_option_from_sys_argv('--cpp_implementation'): |
|
|
|
|
# Link libprotobuf.a and libprotobuf-lite.a statically with the |
|
|
|
|
# extension. Note that those libraries have to be compiled with |
|
|
|
|
# -fPIC for this to work. |
|
|
|
|
compile_static_ext = get_option_from_sys_argv('--compile_static_extension') |
|
|
|
|
extra_compile_args = ['-Wno-write-strings', '-Wno-invalid-offsetof'] |
|
|
|
|
libraries = ['protobuf'] |
|
|
|
|
extra_objects = None |
|
|
|
|
if compile_static_ext: |
|
|
|
|
libraries = None |
|
|
|
|
extra_objects = ['../src/.libs/libprotobuf.a', |
|
|
|
|
'../src/.libs/libprotobuf-lite.a'] |
|
|
|
|
test_conformance.target = 'test_python_cpp' |
|
|
|
|
|
|
|
|
|
if "clang" in os.popen('$CC --version 2> /dev/null').read(): |
|
|
|
@ -174,16 +189,22 @@ if __name__ == '__main__': |
|
|
|
|
sys.argv.remove(warnings_as_errors) |
|
|
|
|
|
|
|
|
|
# C++ implementation extension |
|
|
|
|
ext_module_list.append( |
|
|
|
|
ext_module_list.extend([ |
|
|
|
|
Extension( |
|
|
|
|
"google.protobuf.pyext._message", |
|
|
|
|
glob.glob('google/protobuf/pyext/*.cc'), |
|
|
|
|
include_dirs=[".", "../src"], |
|
|
|
|
libraries=['protobuf'], |
|
|
|
|
libraries=libraries, |
|
|
|
|
extra_objects=extra_objects, |
|
|
|
|
library_dirs=['../src/.libs'], |
|
|
|
|
extra_compile_args=extra_compile_args, |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
), |
|
|
|
|
Extension( |
|
|
|
|
"google.protobuf.internal._api_implementation", |
|
|
|
|
glob.glob('google/protobuf/internal/api_implementation.cc'), |
|
|
|
|
extra_compile_args=['-DPYTHON_PROTO2_CPP_IMPL_V2'], |
|
|
|
|
), |
|
|
|
|
]) |
|
|
|
|
os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'cpp' |
|
|
|
|
|
|
|
|
|
# Keep this list of dependencies in sync with tox.ini. |
|
|
|
|