|
|
|
@ -70,12 +70,22 @@ def check_linker_need_libatomic(): |
|
|
|
|
"""Test if linker on system needs libatomic.""" |
|
|
|
|
code_test = (b'#include <atomic>\n' + |
|
|
|
|
b'int main() { return std::atomic<int64_t>{}; }') |
|
|
|
|
cc_test = subprocess.Popen(['cc', '-x', 'c++', '-std=c++11', '-'], |
|
|
|
|
stdin=PIPE, |
|
|
|
|
stdout=PIPE, |
|
|
|
|
stderr=PIPE) |
|
|
|
|
cc_test.communicate(input=code_test) |
|
|
|
|
return cc_test.returncode != 0 |
|
|
|
|
cpp_test = subprocess.Popen(['c++', '-x', 'c++', '-std=c++11', '-'], |
|
|
|
|
stdin=PIPE, |
|
|
|
|
stdout=PIPE, |
|
|
|
|
stderr=PIPE) |
|
|
|
|
cpp_test.communicate(input=code_test) |
|
|
|
|
if cpp_test.returncode == 0: |
|
|
|
|
return False |
|
|
|
|
# Double-check to see if -latomic actually can solve the problem. |
|
|
|
|
# https://github.com/grpc/grpc/issues/22491 |
|
|
|
|
cpp_test = subprocess.Popen( |
|
|
|
|
['c++', '-x', 'c++', '-std=c++11', '-latomic', '-'], |
|
|
|
|
stdin=PIPE, |
|
|
|
|
stdout=PIPE, |
|
|
|
|
stderr=PIPE) |
|
|
|
|
cpp_test.communicate(input=code_test) |
|
|
|
|
return cpp_test.returncode == 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# There are some situations (like on Windows) where CC, CFLAGS, and LDFLAGS are |
|
|
|
|