From a01f1d52d8536f8ecfa77e573b9ec19788415cca Mon Sep 17 00:00:00 2001 From: Zhenchao Li Date: Wed, 30 Jul 2025 14:16:29 -0700 Subject: [PATCH 1/2] Add brotli support to FoundationNetworking --- utils/build.ps1 | 32 ++++++++++++++++++- .../update-checkout-config.json | 7 ++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/utils/build.ps1 b/utils/build.ps1 index 2eab5264eaf1d..27461a188bb35 100644 --- a/utils/build.ps1 +++ b/utils/build.ps1 @@ -2172,6 +2172,21 @@ function Build-Sanitizers([Hashtable] $Platform) { } } +function Build-Brotli([Hashtable] $Platform) { + Build-CMakeProject ` + -Src $SourceCache\brotli ` + -Bin "$BinaryCache\$($Platform.Triple)\brotli" ` + -InstallTo "$BinaryCache\$($Platform.Triple)\usr" ` + -Platform $Platform ` + -UseMSVCCompilers C ` + -Defines @{ + BUILD_SHARED_LIBS = "NO"; + CMAKE_POSITION_INDEPENDENT_CODE = "YES"; + CMAKE_SYSTEM_NAME = $Platform.OS.ToString(); + } +} + + function Build-ZLib([Hashtable] $Platform) { Build-CMakeProject ` -Src $SourceCache\zlib ` @@ -2256,7 +2271,7 @@ function Build-CURL([Hashtable] $Platform) { CURL_CA_BUNDLE = "none"; CURL_CA_FALLBACK = "NO"; CURL_CA_PATH = "none"; - CURL_BROTLI = "NO"; + CURL_BROTLI = "YES"; CURL_DISABLE_ALTSVC = "NO"; CURL_DISABLE_AWS = "YES"; CURL_DISABLE_BASIC_AUTH = "NO"; @@ -2334,6 +2349,8 @@ function Build-CURL([Hashtable] $Platform) { USE_WIN32_LDAP = "NO"; ZLIB_ROOT = "$BinaryCache\$($Platform.Triple)\usr"; ZLIB_LIBRARY = "$BinaryCache\$($Platform.Triple)\usr\lib\zlibstatic.lib"; + BROTLIDEC_LIBRARY = "$BinaryCache\$($Platform.Triple)\usr\lib\brotlidec.lib" + BROTLICOMMON_LIBRARY = "$BinaryCache\$($Platform.Triple)\usr\lib\brotlicommon.lib" }) } @@ -2723,6 +2740,17 @@ function Build-Foundation { "$BinaryCache\$($Platform.Triple)\usr\lib\libz.a" }; ZLIB_INCLUDE_DIR = "$BinaryCache\$($Platform.Triple)\usr\include"; + BROTLIDEC_LIBRARY = if ($Platform.OS -eq [OS]::Windows) { + "$BinaryCache\$($Platform.Triple)\usr\lib\brotlidec.lib" + } else { + "$BinaryCache\$($Platform.Triple)\usr\lib64\brotlidec.a" + } + BROTLICOMMON_LIBRARY = if ($Platform.OS -eq [OS]::Windows) { + "$BinaryCache\$($Platform.Triple)\usr\lib\brotlicommon.lib" + }else { + "$BinaryCache\$($Platform.Triple)\usr\lib64\brotlicommon.a" + } + DBROTLI_INCLUDE_DIR = "$BinaryCache\$($Platform.Triple)\usr\include"; dispatch_DIR = $DispatchCMakeModules; SwiftSyntax_DIR = (Get-ProjectBinaryCache $HostPlatform Compilers); _SwiftFoundation_SourceDIR = "$SourceCache\swift-foundation"; @@ -2745,6 +2773,7 @@ function Test-Foundation { $env:LIBXML_LIBRARY_PATH="$BinaryCache/$($Platform.Triple)/usr/lib" $env:LIBXML_INCLUDE_PATH="$BinaryCache/$($Platform.Triple)/usr/include/libxml2" $env:ZLIB_LIBRARY_PATH="$BinaryCache/$($Platform.Triple)/usr/lib" + $env:BROTLI_LIBRARY_PATH="$BinaryCache/$($Platform.Triple)/usr/lib" $env:CURL_LIBRARY_PATH="$BinaryCache/$($Platform.Triple)/usr/lib" $env:CURL_INCLUDE_PATH="$BinaryCache/$($Platform.Triple)/usr/include" Build-SPMProject ` @@ -2895,6 +2924,7 @@ function Build-SDK([Hashtable] $Platform, [switch] $IncludeMacros = $false) { # Third Party Dependencies Invoke-BuildStep Build-ZLib $Platform + Invoke-BuildStep Build-Brotli $Platform Invoke-BuildStep Build-XML2 $Platform Invoke-BuildStep Build-CURL $Platform Invoke-BuildStep Build-LLVM $Platform diff --git a/utils/update_checkout/update-checkout-config.json b/utils/update_checkout/update-checkout-config.json index b3fb3128f6b2a..986c9a9d1c788 100644 --- a/utils/update_checkout/update-checkout-config.json +++ b/utils/update_checkout/update-checkout-config.json @@ -118,6 +118,9 @@ "zlib": { "remote": { "id": "madler/zlib" } }, + "brotli": { + "remote": { "id": "google/brotli" } + }, "mimalloc": { "remote": { "id": "microsoft/mimalloc" }, "platforms": [ "Windows" ] @@ -180,6 +183,7 @@ "curl": "curl-8_9_1", "libxml2": "v2.11.5", "zlib": "v1.3.1", + "brotli": "v1.1.0", "mimalloc": "v3.0.3", "swift-subprocess": "development-snapshot-2025-07-21" } @@ -236,6 +240,7 @@ "curl": "curl-8_9_1", "libxml2": "v2.11.5", "zlib": "v1.3.1", + "brotli": "v1.1.0", "mimalloc": "v3.0.1" } }, @@ -498,6 +503,7 @@ "curl": "curl-8_9_1", "libxml2": "v2.11.5", "zlib": "v1.3.1", + "brotli": "v1.1.0", "mimalloc": "v3.0.1", "swift-subprocess": "development-snapshot-2025-07-21" } @@ -549,6 +555,7 @@ "curl": "curl-8_9_1", "libxml2": "v2.11.5", "zlib": "v1.3.1", + "brotli": "v1.1.0", "mimalloc": "v3.0.1", "swift-subprocess": "development-snapshot-2025-07-21" } From e913d673f5333bf93c78f243456388bd1b22caf7 Mon Sep 17 00:00:00 2001 From: Zhenchao Li Date: Tue, 5 Aug 2025 12:59:35 -0700 Subject: [PATCH 2/2] use path computation helper --- utils/build.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/build.ps1 b/utils/build.ps1 index 27461a188bb35..cfe8e955a64c7 100644 --- a/utils/build.ps1 +++ b/utils/build.ps1 @@ -697,6 +697,7 @@ enum Project { SourceKitLSP SymbolKit DocC + brotli LLVM Runtime @@ -2175,7 +2176,7 @@ function Build-Sanitizers([Hashtable] $Platform) { function Build-Brotli([Hashtable] $Platform) { Build-CMakeProject ` -Src $SourceCache\brotli ` - -Bin "$BinaryCache\$($Platform.Triple)\brotli" ` + -Bin "$(Get-ProjectBinaryCache $Platform brotli)" ` -InstallTo "$BinaryCache\$($Platform.Triple)\usr" ` -Platform $Platform ` -UseMSVCCompilers C `