mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	[3.9] bpo-41100: Support macOS 11 and Apple Silicon (GH-22855) (GH-23295)
* [3.9] bpo-41100: Support macOS 11 and Apple Silicon (GH-22855)
Co-authored-by:  Lawrence D’Anna <lawrence_danna@apple.com>
* Add support for macOS 11 and Apple Silicon (aka arm64)
  As a side effect of this work use the system copy of libffi on macOS, and remove the vendored copy
* Support building on recent versions of macOS while deploying to older versions
  This allows building installers on macOS 11 while still supporting macOS 10.9..
(cherry picked from commit 41761933c1)
Co-authored-by: Ronald Oussoren <ronaldoussoren@mac.com>
* Back port of changes to _decimal to support arm64
* temp_dir is in test.support in 3.9
			
			
This commit is contained in:
		
							parent
							
								
									0aab3522b2
								
							
						
					
					
						commit
						e8b1c038b1
					
				
					 28 changed files with 1659 additions and 413 deletions
				
			
		|  | @ -5,6 +5,12 @@ | |||
| 
 | ||||
| #if defined(__APPLE__) | ||||
| #include <mach/mach_time.h>   /* mach_absolute_time(), mach_timebase_info() */ | ||||
| 
 | ||||
| #if defined(__APPLE__) && defined(__has_builtin)  | ||||
| #  if __has_builtin(__builtin_available) | ||||
| #    define HAVE_CLOCK_GETTIME_RUNTIME __builtin_available(macOS 10.12, iOS 10.0, tvOS 10.0, watchOS 3.0, *) | ||||
| #  endif | ||||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| #define _PyTime_check_mul_overflow(a, b) \ | ||||
|  | @ -683,15 +689,22 @@ pygettimeofday(_PyTime_t *tp, _Py_clock_info_t *info, int raise) | |||
| 
 | ||||
| #else   /* MS_WINDOWS */ | ||||
|     int err; | ||||
| #ifdef HAVE_CLOCK_GETTIME | ||||
| #if defined(HAVE_CLOCK_GETTIME) | ||||
|     struct timespec ts; | ||||
| #else | ||||
| #endif | ||||
| 
 | ||||
| #if !defined(HAVE_CLOCK_GETTIME) || defined(__APPLE__) | ||||
|     struct timeval tv; | ||||
| #endif | ||||
| 
 | ||||
|     assert(info == NULL || raise); | ||||
| 
 | ||||
| #ifdef HAVE_CLOCK_GETTIME | ||||
| 
 | ||||
| #ifdef HAVE_CLOCK_GETTIME_RUNTIME | ||||
|     if (HAVE_CLOCK_GETTIME_RUNTIME) { | ||||
| #endif | ||||
| 
 | ||||
|     err = clock_gettime(CLOCK_REALTIME, &ts); | ||||
|     if (err) { | ||||
|         if (raise) { | ||||
|  | @ -715,7 +728,14 @@ pygettimeofday(_PyTime_t *tp, _Py_clock_info_t *info, int raise) | |||
|             info->resolution = 1e-9; | ||||
|         } | ||||
|     } | ||||
| #else   /* HAVE_CLOCK_GETTIME */ | ||||
| 
 | ||||
| #ifdef HAVE_CLOCK_GETTIME_RUNTIME | ||||
|     } else {  | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #if !defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_GETTIME_RUNTIME) | ||||
| 
 | ||||
|      /* test gettimeofday() */ | ||||
|     err = gettimeofday(&tv, (struct timezone *)NULL); | ||||
|  | @ -735,6 +755,11 @@ pygettimeofday(_PyTime_t *tp, _Py_clock_info_t *info, int raise) | |||
|         info->monotonic = 0; | ||||
|         info->adjustable = 1; | ||||
|     } | ||||
| 
 | ||||
| #if defined(HAVE_CLOCK_GETTIME_RUNTIME) && defined(HAVE_CLOCK_GETTIME) | ||||
|     } /* end of availibity block */ | ||||
| #endif | ||||
| 
 | ||||
| #endif   /* !HAVE_CLOCK_GETTIME */ | ||||
| #endif   /* !MS_WINDOWS */ | ||||
|     return 0; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ronald Oussoren
						Ronald Oussoren