From e6c7ed6d2164a0659fd9f6ee44f1375d301e3cad Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Wed, 1 Jan 2020 16:57:00 -0800 Subject: [PATCH] build: make `LLVM_ENABLE_ZLIB` a tri-bool for users Treat the flag `LLVM_ENABLE_ZLIB` as a tri-bool, `FORCE_ON` being `ON`, and `ON` being an auto-detect. This is needed as many of the builders enable the flag without having zlib available. --- llvm/CMakeLists.txt | 2 +- llvm/cmake/config-ix.cmake | 20 +++++++++++++++----- llvm/lib/Support/CMakeLists.txt | 5 ++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index eeac7bab850a9..05e93f67e9904 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -347,7 +347,7 @@ option(LLVM_ENABLE_LIBPFM "Use libpfm for performance counters if available." ON option(LLVM_ENABLE_THREADS "Use threads if available." ON) -option(LLVM_ENABLE_ZLIB "Use zlib for compression/decompression if available." ON) +set(LLVM_ENABLE_ZLIB "ON" CACHE STRING "Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON") set(LLVM_Z3_INSTALL_DIR "" CACHE STRING "Install directory of the Z3 solver.") diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake index d5a15a680a6dc..a16038f709893 100644 --- a/llvm/cmake/config-ix.cmake +++ b/llvm/cmake/config-ix.cmake @@ -117,10 +117,6 @@ endif() # Don't look for these libraries if we're using MSan, since uninstrumented third # party code may call MSan interceptors like strlen, leading to false positives. if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*") - if(LLVM_ENABLE_ZLIB) - find_package(ZLIB REQUIRED) - endif() - # Don't look for these libraries on Windows. if (NOT PURE_WINDOWS) # Skip libedit if using ASan as it contains memory leaks. @@ -506,7 +502,21 @@ else( LLVM_ENABLE_THREADS ) endif() if(LLVM_ENABLE_ZLIB) - find_package(ZLIB REQUIRED) + if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON) + find_package(ZLIB REQUIRED) + else() + find_package(ZLIB) + endif() + + if(ZLIB_FOUND) + set(LLVM_ENABLE_ZLIB "YES" CACHE STRING + "Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON" + FORCE) + else() + set(LLVM_ENABLE_ZLIB "NO" CACHE STRING + "Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON" + FORCE) + endif() endif() if (LLVM_ENABLE_DOXYGEN) diff --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt index 2fa641ff5da3d..26332d4f539c5 100644 --- a/llvm/lib/Support/CMakeLists.txt +++ b/llvm/lib/Support/CMakeLists.txt @@ -1,4 +1,7 @@ -set(system_libs ${ZLIB_LIBRARY}) +if(LLVM_ENABLE_ZLIB) + set(system_libs ${ZLIB_LIBRARY}) +endif() + if( MSVC OR MINGW ) # libuuid required for FOLDERID_Profile usage in lib/Support/Windows/Path.inc. # advapi32 required for CryptAcquireContextW in lib/Support/Windows/Path.inc.