| 
					
				 | 
			
			
				@@ -166,12 +166,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 
			 |