mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifndef Py_EXPORTS_H
							 | 
						||
| 
								 | 
							
								#define Py_EXPORTS_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if defined(_WIN32) || defined(__CYGWIN__)
							 | 
						||
| 
								 | 
							
								    #define Py_IMPORTED_SYMBOL __declspec(dllimport)
							 | 
						||
| 
								 | 
							
								    #define Py_EXPORTED_SYMBOL __declspec(dllexport)
							 | 
						||
| 
								 | 
							
								    #define Py_LOCAL_SYMBOL
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * If we only ever used gcc >= 5, we could use __has_attribute(visibility)
							 | 
						||
| 
								 | 
							
								 * as a cross-platform way to determine if visibility is supported. However,
							 | 
						||
| 
								 | 
							
								 * we may still need to support gcc >= 4, as some Ubuntu LTS and Centos versions
							 | 
						||
| 
								 | 
							
								 * have 4 < gcc < 5.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								    #ifndef __has_attribute
							 | 
						||
| 
								 | 
							
								      #define __has_attribute(x) 0  // Compatibility with non-clang compilers.
							 | 
						||
| 
								 | 
							
								    #endif
							 | 
						||
| 
								 | 
							
								    #if (defined(__GNUC__) && (__GNUC__ >= 4)) ||\
							 | 
						||
| 
								 | 
							
								        (defined(__clang__) && __has_attribute(visibility))
							 | 
						||
| 
								 | 
							
								        #define Py_IMPORTED_SYMBOL __attribute__ ((visibility ("default")))
							 | 
						||
| 
								 | 
							
								        #define Py_EXPORTED_SYMBOL __attribute__ ((visibility ("default")))
							 | 
						||
| 
								 | 
							
								        #define Py_LOCAL_SYMBOL  __attribute__ ((visibility ("hidden")))
							 | 
						||
| 
								 | 
							
								    #else
							 | 
						||
| 
								 | 
							
								        #define Py_IMPORTED_SYMBOL
							 | 
						||
| 
								 | 
							
								        #define Py_EXPORTED_SYMBOL
							 | 
						||
| 
								 | 
							
								        #define Py_LOCAL_SYMBOL
							 | 
						||
| 
								 | 
							
								    #endif
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* Py_EXPORTS_H */
							 |