Skip to content

Commit

Permalink
Revert "[CMake] Simplify CMake handling for zlib"
Browse files Browse the repository at this point in the history
This reverts commit 1adc494.
This patch broke the Windows compilation on buildbot and pre-merge testing:
http://lab.llvm.org:8011/builders/mlir-windows/builds/5945
https://buildkite.com/llvm-project/llvm-master-build/builds/780
  • Loading branch information
ChristianKuehnel committed Aug 7, 2020
1 parent 9b49a4d commit f3cc4df
Show file tree
Hide file tree
Showing 22 changed files with 89 additions and 65 deletions.
11 changes: 10 additions & 1 deletion clang/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,23 @@ endif ()

string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})

if(CLANG_BUILT_STANDALONE)
# Set HAVE_LIBZ according to recorded LLVM_ENABLE_ZLIB value. This
# value is forced to 0 if zlib was not found, so it is fine to use it
# instead of HAVE_LIBZ (not recorded).
if(LLVM_ENABLE_ZLIB)
set(HAVE_LIBZ 1)
endif()
endif()

llvm_canonicalize_cmake_booleans(
CLANG_BUILD_EXAMPLES
CLANG_ENABLE_ARCMT
CLANG_ENABLE_STATIC_ANALYZER
CLANG_SPAWN_CC1
ENABLE_BACKTRACES
ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER
LLVM_ENABLE_ZLIB
HAVE_LIBZ
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR
LLVM_ENABLE_PLUGINS
LLVM_ENABLE_THREADS)
Expand Down
2 changes: 1 addition & 1 deletion clang/test/lit.site.cfg.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ config.host_triple = "@LLVM_HOST_TRIPLE@"
config.target_triple = "@TARGET_TRIPLE@"
config.host_cxx = "@CMAKE_CXX_COMPILER@"
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
config.have_zlib = @LLVM_ENABLE_ZLIB@
config.have_zlib = @HAVE_LIBZ@
config.clang_arcmt = @CLANG_ENABLE_ARCMT@
config.clang_default_cxx_stdlib = "@CLANG_DEFAULT_CXX_STDLIB@"
config.clang_staticanalyzer = @CLANG_ENABLE_STATIC_ANALYZER@
Expand Down
2 changes: 1 addition & 1 deletion compiler-rt/test/lit.common.configured.in
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ elif config.android:
else:
set_default("target_suffix", "-%s" % config.target_arch)

set_default("have_zlib", "@LLVM_ENABLE_ZLIB@")
set_default("have_zlib", "@HAVE_LIBZ@")
set_default("libcxx_used", "@LLVM_LIBCXX_USED@")

# LLVM tools dir can be passed in lit parameters, so try to
Expand Down
11 changes: 10 additions & 1 deletion lld/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@ set(LLVM_BUILD_MODE "%(build_mode)s")
set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}/%(build_config)s")
set(LLVM_LIBS_DIR "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/%(build_config)s")

if(LLD_BUILT_STANDALONE)
# Set HAVE_LIBZ according to recorded LLVM_ENABLE_ZLIB value. This
# value is forced to 0 if zlib was not found, so it is fine to use it
# instead of HAVE_LIBZ (not recorded).
if(LLVM_ENABLE_ZLIB)
set(HAVE_LIBZ 1)
endif()
endif()

llvm_canonicalize_cmake_booleans(
LLVM_ENABLE_ZLIB
HAVE_LIBZ
LLVM_LIBXML2_ENABLED
)

Expand Down
2 changes: 1 addition & 1 deletion lld/test/lit.site.cfg.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ config.lld_libs_dir = "@LLVM_LIBRARY_OUTPUT_INTDIR@"
config.lld_tools_dir = "@LLVM_RUNTIME_OUTPUT_INTDIR@"
config.target_triple = "@TARGET_TRIPLE@"
config.python_executable = "@Python3_EXECUTABLE@"
config.have_zlib = @LLVM_ENABLE_ZLIB@
config.have_zlib = @HAVE_LIBZ@
config.sizeof_void_p = @CMAKE_SIZEOF_VOID_P@

# Support substitution of the tools and libs dirs with user parameters. This is
Expand Down
4 changes: 4 additions & 0 deletions lldb/cmake/modules/LLDBStandalone.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ endif()
# CMake modules to be in that directory as well.
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")

if(LLVM_ENABLE_ZLIB)
find_package(ZLIB)
endif()

include(AddLLVM)
include(TableGen)
include(HandleLLVMOptions)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
#include <compression.h>
#endif

#if LLVM_ENABLE_ZLIB
#if defined(HAVE_LIBZ)
#include <zlib.h>
#endif

Expand Down Expand Up @@ -582,7 +582,7 @@ bool GDBRemoteCommunication::DecompressPacket() {
}
#endif

#if LLVM_ENABLE_ZLIB
#if defined(HAVE_LIBZ)
if (decompressed_bytes == 0 && decompressed_bufsize != ULONG_MAX &&
decompressed_buffer != nullptr &&
m_compression_type == CompressionType::ZlibDeflate) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1053,7 +1053,7 @@ void GDBRemoteCommunicationClient::MaybeEnableCompression(
}
#endif

#if LLVM_ENABLE_ZLIB
#if defined(HAVE_LIBZ)
if (avail_type == CompressionType::None) {
for (auto compression : supported_compressions) {
if (compression == "zlib-deflate") {
Expand Down
30 changes: 22 additions & 8 deletions llvm/cmake/config-ix.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(termios.h HAVE_TERMIOS_H)
check_include_file(unistd.h HAVE_UNISTD_H)
check_include_file(valgrind/valgrind.h HAVE_VALGRIND_VALGRIND_H)
check_include_file(zlib.h HAVE_ZLIB_H)
check_include_file(fenv.h HAVE_FENV_H)
check_symbol_exists(FE_ALL_EXCEPT "fenv.h" HAVE_DECL_FE_ALL_EXCEPT)
check_symbol_exists(FE_INEXACT "fenv.h" HAVE_DECL_FE_INEXACT)
Expand Down Expand Up @@ -117,13 +118,17 @@ 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.*")
set(HAVE_LIBZ 0)
if(LLVM_ENABLE_ZLIB)
if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON)
find_package(ZLIB REQUIRED)
else()
find_package(ZLIB)
endif()
set(LLVM_ENABLE_ZLIB "${ZLIB_FOUND}")
foreach(library z zlib_static zlib)
string(TOUPPER ${library} library_suffix)
check_library_exists(${library} compress2 "" HAVE_LIBZ_${library_suffix})
if(HAVE_LIBZ_${library_suffix})
set(HAVE_LIBZ 1)
set(ZLIB_LIBRARIES "${library}")
break()
endif()
endforeach()
endif()

# Don't look for these libraries on Windows.
Expand Down Expand Up @@ -164,14 +169,16 @@ if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
endif()
endif()
endif()
else()
set(LLVM_ENABLE_ZLIB FALSE)
endif()

if (LLVM_ENABLE_LIBXML2 STREQUAL "FORCE_ON" AND NOT LLVM_LIBXML2_ENABLED)
message(FATAL_ERROR "Failed to congifure libxml2")
endif()

if (LLVM_ENABLE_ZLIB STREQUAL "FORCE_ON" AND NOT HAVE_LIBZ)
message(FATAL_ERROR "Failed to configure zlib")
endif()

check_library_exists(xar xar_open "" HAVE_LIBXAR)
if(HAVE_LIBXAR)
set(XAR_LIB xar)
Expand Down Expand Up @@ -510,6 +517,13 @@ else( LLVM_ENABLE_THREADS )
message(STATUS "Threads disabled.")
endif()

if (LLVM_ENABLE_ZLIB )
# Check if zlib is available in the system.
if ( NOT HAVE_ZLIB_H OR NOT HAVE_LIBZ )
set(LLVM_ENABLE_ZLIB 0)
endif()
endif()

if (LLVM_ENABLE_DOXYGEN)
message(STATUS "Doxygen enabled.")
find_package(Doxygen REQUIRED)
Expand Down
3 changes: 0 additions & 3 deletions llvm/cmake/modules/LLVMConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,6 @@ set(LLVM_ENABLE_THREADS @LLVM_ENABLE_THREADS@)
set(LLVM_ENABLE_UNWIND_TABLES @LLVM_ENABLE_UNWIND_TABLES@)

set(LLVM_ENABLE_ZLIB @LLVM_ENABLE_ZLIB@)
if(LLVM_ENABLE_ZLIB)
find_package(ZLIB)
endif()

set(LLVM_LIBXML2_ENABLED @LLVM_LIBXML2_ENABLED@)

Expand Down
6 changes: 6 additions & 0 deletions llvm/include/llvm/Config/config.h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@
/* Define to 1 if you have the `pthread_setname_np' function. */
#cmakedefine HAVE_PTHREAD_SETNAME_NP ${HAVE_PTHREAD_SETNAME_NP}

/* Define to 1 if you have the `z' library (-lz). */
#cmakedefine HAVE_LIBZ ${HAVE_LIBZ}

/* Define to 1 if you have the <link.h> header file. */
#cmakedefine HAVE_LINK_H ${HAVE_LINK_H}

Expand Down Expand Up @@ -223,6 +226,9 @@
/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
#cmakedefine HAVE_VALGRIND_VALGRIND_H ${HAVE_VALGRIND_VALGRIND_H}

/* Define to 1 if you have the <zlib.h> header file. */
#cmakedefine HAVE_ZLIB_H ${HAVE_ZLIB_H}

/* Have host's _alloca */
#cmakedefine HAVE__ALLOCA ${HAVE__ALLOCA}

Expand Down
35 changes: 5 additions & 30 deletions llvm/lib/Support/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
if(LLVM_ENABLE_ZLIB)
set(imported_libs ZLIB::ZLIB)
set(system_libs)
if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ )
set(system_libs ${system_libs} ${ZLIB_LIBRARIES})
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.
Expand Down Expand Up @@ -194,35 +194,10 @@ add_llvm_component_library(LLVMSupport
${LLVM_MAIN_INCLUDE_DIR}/llvm/ADT
${LLVM_MAIN_INCLUDE_DIR}/llvm/Support
${Backtrace_INCLUDE_DIRS}
LINK_LIBS ${system_libs} ${imported_libs} ${delayload_flags} ${Z3_LINK_FILES}
LINK_LIBS ${system_libs} ${delayload_flags} ${Z3_LINK_FILES}
)

set(llvm_system_libs ${system_libs})

if(LLVM_ENABLE_ZLIB)
# CMAKE_BUILD_TYPE is only meaningful to single-configuration generators.
if(CMAKE_BUILD_TYPE)
string(TOUPPER ${CMAKE_BUILD_TYPE} build_type)
get_property(zlib_library TARGET ZLIB::ZLIB PROPERTY LOCATION_${build_type})
endif()
if(NOT zlib_library)
get_property(zlib_library TARGET ZLIB::ZLIB PROPERTY LOCATION)
endif()
get_filename_component(zlib_library ${zlib_library} NAME)
if(CMAKE_STATIC_LIBRARY_PREFIX AND CMAKE_STATIC_LIBRARY_SUFFIX AND
zlib_library MATCHES "^${CMAKE_STATIC_LIBRARY_PREFIX}.*${CMAKE_STATIC_LIBRARY_SUFFIX}$")
STRING(REGEX REPLACE "^${CMAKE_STATIC_LIBRARY_PREFIX}" "" zlib_library ${zlib_library})
STRING(REGEX REPLACE "${CMAKE_STATIC_LIBRARY_SUFFIX}$" "" zlib_library ${zlib_library})
endif()
if(CMAKE_SHARED_LIBRARY_PREFIX AND CMAKE_SHARED_LIBRARY_SUFFIX AND
zlib_library MATCHES "^${CMAKE_SHARED_LIBRARY_PREFIX}.*${CMAKE_SHARED_LIBRARY_SUFFIX}$")
STRING(REGEX REPLACE "^${CMAKE_SHARED_LIBRARY_PREFIX}" "" zlib_library ${zlib_library})
STRING(REGEX REPLACE "${CMAKE_SHARED_LIBRARY_SUFFIX}$" "" zlib_library ${zlib_library})
endif()
set(llvm_system_libs ${llvm_system_libs} "${zlib_library}")
endif()

set_property(TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS "${llvm_system_libs}")
set_property(TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS "${system_libs}")

if(LLVM_WITH_Z3)
target_include_directories(LLVMSupport SYSTEM
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Support/CRC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

using namespace llvm;

#if !LLVM_ENABLE_ZLIB
#if LLVM_ENABLE_ZLIB == 0 || !HAVE_ZLIB_H

static const uint32_t CRCTable[256] = {
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
Expand Down
4 changes: 2 additions & 2 deletions llvm/lib/Support/Compression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#if LLVM_ENABLE_ZLIB
#if LLVM_ENABLE_ZLIB == 1 && HAVE_ZLIB_H
#include <zlib.h>
#endif

using namespace llvm;

#if LLVM_ENABLE_ZLIB
#if LLVM_ENABLE_ZLIB == 1 && HAVE_LIBZ
static Error createError(StringRef Err) {
return make_error<StringError>(Err, inconvertibleErrorCode());
}
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
llvm_canonicalize_cmake_booleans(
BUILD_SHARED_LIBS
HAVE_LIBXAR
HAVE_LIBZ
HAVE_OCAMLOPT
HAVE_OCAML_OUNIT
LLVM_ENABLE_DIA_SDK
LLVM_ENABLE_FFI
LLVM_ENABLE_THREADS
LLVM_ENABLE_ZLIB
LLVM_INCLUDE_GO_TESTS
LLVM_LIBXML2_ENABLED
LLVM_LINK_LLVM_DYLIB
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/lit.site.cfg.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ config.host_cxx = "@HOST_CXX@"
config.host_ldflags = '@HOST_LDFLAGS@'
config.llvm_use_intel_jitevents = @LLVM_USE_INTEL_JITEVENTS@
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
config.have_zlib = @LLVM_ENABLE_ZLIB@
config.have_zlib = @HAVE_LIBZ@
config.have_libxar = @HAVE_LIBXAR@
config.have_dia_sdk = @LLVM_ENABLE_DIA_SDK@
config.enable_ffi = @LLVM_ENABLE_FFI@
Expand Down
2 changes: 1 addition & 1 deletion llvm/unittests/Support/CompressionTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ using namespace llvm;

namespace {

#if LLVM_ENABLE_ZLIB
#if LLVM_ENABLE_ZLIB == 1 && HAVE_LIBZ

void TestZlibCompression(StringRef Input, int Level) {
SmallString<32> Compressed;
Expand Down
4 changes: 2 additions & 2 deletions llvm/utils/gn/secondary/clang/test/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ write_lit_config("lit_site_cfg") {
}

if (llvm_enable_zlib) {
extra_values += [ "LLVM_ENABLE_ZLIB=1" ]
extra_values += [ "HAVE_LIBZ=1" ]
} else {
extra_values += [ "LLVM_ENABLE_ZLIB=0" ] # Must be 0.
extra_values += [ "HAVE_LIBZ=0" ] # Must be 0.
}

if (host_cpu == "x64") {
Expand Down
4 changes: 2 additions & 2 deletions llvm/utils/gn/secondary/compiler-rt/test/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ write_cmake_config("lit_common_configured") {
}

if (llvm_enable_zlib) {
values += [ "LLVM_ENABLE_ZLIB=1" ]
values += [ "HAVE_LIBZ=1" ]
} else {
values += [ "LLVM_ENABLE_ZLIB=0" ]
values += [ "HAVE_LIBZ=0" ]
}
}
4 changes: 2 additions & 2 deletions llvm/utils/gn/secondary/lld/test/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ write_lit_cfg("lit_site_cfg") {
}

if (llvm_enable_zlib) {
extra_values += [ "LLVM_ENABLE_ZLIB=1" ]
extra_values += [ "HAVE_LIBZ=1" ]
} else {
extra_values += [ "LLVM_ENABLE_ZLIB=0" ] # Must be 0.
extra_values += [ "HAVE_LIBZ=0" ] # Must be 0.
}

if (current_cpu == "x64" || current_cpu == "arm64" ||
Expand Down
14 changes: 12 additions & 2 deletions llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -295,10 +295,20 @@ write_cmake_config("config") {
values += [ "LLVM_ENABLE_DIA_SDK=" ]
}

# FIXME: Once https://reviews.llvm.org/D79219 is in, remove the two
# redundant HAVE_ variables.
if (llvm_enable_zlib) {
values += [ "LLVM_ENABLE_ZLIB=1" ]
values += [
"HAVE_LIBZ=1",
"HAVE_ZLIB_H=1",
"LLVM_ENABLE_ZLIB=1",
]
} else {
values += [ "LLVM_ENABLE_ZLIB=" ]
values += [
"HAVE_LIBZ=",
"HAVE_ZLIB_H=",
"LLVM_ENABLE_ZLIB=",
]
}

if (llvm_enable_libxml2) {
Expand Down
4 changes: 2 additions & 2 deletions llvm/utils/gn/secondary/llvm/test/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,9 @@ write_lit_config("lit_site_cfg") {
}

if (llvm_enable_zlib) {
extra_values += [ "LLVM_ENABLE_ZLIB=1" ]
extra_values += [ "HAVE_LIBZ=1" ]
} else {
extra_values += [ "LLVM_ENABLE_ZLIB=0" ] # Must be 0.
extra_values += [ "HAVE_LIBZ=0" ] # Must be 0.
}
}

Expand Down

0 comments on commit f3cc4df

Please sign in to comment.