[llvm] Add zlib to Windows release build (PR #186630)
Oliver Old via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 14 17:02:13 PDT 2026
https://github.com/oold created https://github.com/llvm/llvm-project/pull/186630
This PR adds zlib to the Windows release build script to enable zlib support in LLVM.
Part 1 of https://github.com/llvm/llvm-project/issues/184177.
>From 69dc64006d17efc234d57f07f03d0f1733e8df91 Mon Sep 17 00:00:00 2001
From: Oliver Old <mail at oold.dev>
Date: Sun, 15 Mar 2026 00:47:20 +0100
Subject: [PATCH] Add zlib to Windows release build
---
llvm/utils/release/build_llvm_release.bat | 28 ++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index a5c461662bb37..6dc8c9e7c50a5 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -149,6 +149,9 @@ if "%skip-checkout%" == "true" (
curl -O https://gitlab.gnome.org/GNOME/libxml2/-/archive/v2.9.12/libxml2-v2.9.12.tar.gz || exit /b 1
tar zxf libxml2-v2.9.12.tar.gz
+curl -O https://github.com/madler/zlib/releases/download/v1.3.2/zlib-1.3.2.tar.gz || exit /b 1
+tar zxf zlib-1.3.2.tar.gz
+
REM Setting CMAKE_CL_SHOWINCLUDES_PREFIX to work around PR27226.
REM Common flags for all builds.
set common_compiler_flags=-DLIBXML_STATIC
@@ -163,6 +166,7 @@ set common_cmake_flags=^
-DCMAKE_CL_SHOWINCLUDES_PREFIX="Note: including file: " ^
-DLLVM_ENABLE_LIBXML2=FORCE_ON ^
-DCLANG_ENABLE_LIBXML2=OFF ^
+ -DLLVM_ENABLE_ZLIB=FORCE_ON ^
-DCMAKE_C_FLAGS="%common_compiler_flags%" ^
-DCMAKE_CXX_FLAGS="%common_compiler_flags%" ^
-DLLVM_ENABLE_RPMALLOC=ON ^
@@ -213,6 +217,7 @@ call "%vsdevcmd%" -arch=x86 || exit /b 1
mkdir build32_stage0
cd build32_stage0
call :do_build_libxml || exit /b 1
+call :do_build_zlib || exit /b 1
REM Stage0 binaries directory; used in stage1.
set "stage0_bin_dir=%build_dir%/build32_stage0/bin"
@@ -221,7 +226,9 @@ set cmake_flags=^
-DLLVM_ENABLE_RPMALLOC=OFF ^
-DPython3_ROOT_DIR=%PYTHONHOME% ^
-DLIBXML2_INCLUDE_DIR=%libxmldir%/include/libxml2 ^
- -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib
+ -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib ^
+ -DZLIB_INCLUDE_DIR=%zlibdir%/include ^
+ -DZLIB_LIBRARY=%zlibdir%/lib/zs.lib
cmake -GNinja %cmake_flags% %llvm_src%\llvm || exit /b 1
ninja || ninja || ninja || exit /b 1
@@ -274,6 +281,7 @@ call "%vsdevcmd%" -arch=%arch% || exit /b 1
mkdir build_%arch%_stage0
cd build_%arch%_stage0
call :do_build_libxml || exit /b 1
+call :do_build_zlib || exit /b 1
REM Stage0 binaries directory; used in stage1.
set "stage0_bin_dir=%build_dir%/build_%arch%_stage0/bin"
@@ -282,6 +290,8 @@ set cmake_flags=^
-DPython3_ROOT_DIR=%PYTHONHOME% ^
-DLIBXML2_INCLUDE_DIR=%libxmldir%/include/libxml2 ^
-DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib ^
+ -DZLIB_INCLUDE_DIR=%zlibdir%/include ^
+ -DZLIB_LIBRARY=%zlibdir%/lib/zs.lib ^
-DCLANG_DEFAULT_LINKER=lld
if "%arch%"=="arm64" (
set cmake_flags=%cmake_flags% ^
@@ -407,6 +417,22 @@ set "libxmldir=%libxmldir:\=/%"
cd ..
exit /b 0
+::==============================================================================
+:: Build zlib.
+::==============================================================================
+:do_build_zlib
+mkdir zlibbuild
+cd zlibbuild
+cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install ^
+ -DZLIB_BUILD_TESTING=OFF -DZLIB_BUILD_SHARED=OFF -DZLIB_BUILD_STATIC=ON ^
+ -DZLIB_INSTALL=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded ^
+ ../../zlib-1.3.2 || exit /b 1
+ninja install || exit /b 1
+set zlibdir=%cd%\install
+set "zlibdir=%zlibdir:\=/%"
+cd ..
+exit /b 0
+
::==============================================================================
:: Generate a PGO profile.
::==============================================================================
More information about the llvm-commits
mailing list