mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	bpo-42235: [macOS] Use LTO/PGO in build-installer.py with new enough compilers (GH-23079)
With recent enough compilers we can build binaries with LTO/PGO on macOS. This patch enables this when building on macOS 10.15 or later (Xcode 11 or later).
This commit is contained in:
		
							parent
							
								
									8c598dbb94
								
							
						
					
					
						commit
						e08059edef
					
				
					 2 changed files with 12 additions and 0 deletions
				
			
		|  | @ -436,6 +436,14 @@ def library_recipes(): | ||||||
| 
 | 
 | ||||||
|     return result |     return result | ||||||
| 
 | 
 | ||||||
|  | def compilerCanOptimize(): | ||||||
|  |     """ | ||||||
|  |     Return True iff the default Xcode version can use PGO and LTO | ||||||
|  |     """ | ||||||
|  |     # bpo-42235: The version check is pretty conservative, can be | ||||||
|  |     # adjusted after testing | ||||||
|  |     mac_ver = tuple(map(int, platform.mac_ver()[0].split('.'))) | ||||||
|  |     return mac_ver >= (10, 15) | ||||||
| 
 | 
 | ||||||
| # Instructions for building packages inside the .mpkg. | # Instructions for building packages inside the .mpkg. | ||||||
| def pkg_recipes(): | def pkg_recipes(): | ||||||
|  | @ -1176,6 +1184,7 @@ def buildPython(): | ||||||
|                "%s " |                "%s " | ||||||
|                "%s " |                "%s " | ||||||
|                "%s " |                "%s " | ||||||
|  |                "%s " | ||||||
|                "LDFLAGS='-g -L%s/libraries/usr/local/lib' " |                "LDFLAGS='-g -L%s/libraries/usr/local/lib' " | ||||||
|                "CFLAGS='-g -I%s/libraries/usr/local/include' 2>&1"%( |                "CFLAGS='-g -I%s/libraries/usr/local/include' 2>&1"%( | ||||||
|         shellQuote(os.path.join(SRCDIR, 'configure')), |         shellQuote(os.path.join(SRCDIR, 'configure')), | ||||||
|  | @ -1188,6 +1197,7 @@ def buildPython(): | ||||||
|                             shellQuote(WORKDIR)[1:-1],))[internalTk()], |                             shellQuote(WORKDIR)[1:-1],))[internalTk()], | ||||||
|         (' ', "--with-tcltk-libs='-L%s/libraries/usr/local/lib -ltcl8.6 -ltk8.6'"%( |         (' ', "--with-tcltk-libs='-L%s/libraries/usr/local/lib -ltcl8.6 -ltk8.6'"%( | ||||||
|                             shellQuote(WORKDIR)[1:-1],))[internalTk()], |                             shellQuote(WORKDIR)[1:-1],))[internalTk()], | ||||||
|  |         (' ', "--enable-optimizations --with-lto")[compilerCanOptimize()], | ||||||
|         shellQuote(WORKDIR)[1:-1], |         shellQuote(WORKDIR)[1:-1], | ||||||
|         shellQuote(WORKDIR)[1:-1])) |         shellQuote(WORKDIR)[1:-1])) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | ``Mac/BuildScript/build-installer.py`` will now use "--enable-optimizations" | ||||||
|  | and ``--with-lto`` when building on macOS 10.15 or later. | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ronald Oussoren
						Ronald Oussoren