[llvm] r319533 - [cmake] Enable zlib support on windows

Pavel Labath via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 1 03:41:07 PST 2017


Author: labath
Date: Fri Dec  1 03:41:07 2017
New Revision: 319533

URL: http://llvm.org/viewvc/llvm-project?rev=319533&view=rev
Log:
[cmake] Enable zlib support on windows

Summary:
zlib support was hard-wired to off for (non-cygwin) windows targets.
This disables some features, such as reading debug info from compressed
dwarf sections.

This has been this way since zlib support was added in 2013 (r180083),
but there is no obvious reason for that. Zlib is perfectly capable of
being compiled for windows (it even has a cmake file that works out of
the box).

This enables one to turn on zlib support on windows, if one has zlib
avaliable.

Reviewers: rnk, beanz

Subscribers: mgorny, aprantl, llvm-commits

Differential Revision: https://reviews.llvm.org/D40655

Modified:
    llvm/trunk/cmake/config-ix.cmake
    llvm/trunk/lib/Support/CMakeLists.txt

Modified: llvm/trunk/cmake/config-ix.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=319533&r1=319532&r2=319533&view=diff
==============================================================================
--- llvm/trunk/cmake/config-ix.cmake (original)
+++ llvm/trunk/cmake/config-ix.cmake Fri Dec  1 03:41:07 2017
@@ -127,45 +127,49 @@ if(HAVE_LIBPTHREAD)
   set(LLVM_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
 endif()
 
-# Don't look for these libraries on Windows. Also don't look for them if we're
-# using MSan, since uninstrumented third party code may call MSan interceptors
-# like strlen, leading to false positives.
-if( NOT PURE_WINDOWS AND NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
-  if (LLVM_ENABLE_ZLIB)
-    check_library_exists(z compress2 "" HAVE_LIBZ)
+# 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.*")
+  find_library(ZLIB_LIBRARY_PATH NAMES z zlib)
+  if (LLVM_ENABLE_ZLIB AND ZLIB_LIBRARY_PATH)
+    check_library_exists(${ZLIB_LIBRARY_PATH} compress2 "" HAVE_LIBZ)
   else()
     set(HAVE_LIBZ 0)
   endif()
-  # Skip libedit if using ASan as it contains memory leaks.
-  if (LLVM_ENABLE_LIBEDIT AND HAVE_HISTEDIT_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*")
-    check_library_exists(edit el_init "" HAVE_LIBEDIT)
-  else()
-    set(HAVE_LIBEDIT 0)
-  endif()
-  if(LLVM_ENABLE_TERMINFO)
-    set(HAVE_TERMINFO 0)
-    foreach(library tinfo terminfo curses ncurses ncursesw)
-      string(TOUPPER ${library} library_suffix)
-      check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix})
-      if(HAVE_TERMINFO_${library_suffix})
-        set(HAVE_TERMINFO 1)
-        set(TERMINFO_LIBS "${library}")
-        break()
-      endif()
-    endforeach()
-  else()
-    set(HAVE_TERMINFO 0)
-  endif()
 
-  find_library(ICONV_LIBRARY_PATH NAMES iconv libiconv libiconv-2 c)
-  set(LLVM_LIBXML2_ENABLED 0)
-  set(LIBXML2_FOUND 0)
-  if((LLVM_ENABLE_LIBXML2) AND ((CMAKE_SYSTEM_NAME MATCHES "Linux") AND (ICONV_LIBRARY_PATH) OR APPLE))
-    find_package(LibXml2)
-    if (LIBXML2_FOUND)
-      set(LLVM_LIBXML2_ENABLED 1)
-      include_directories(${LIBXML2_INCLUDE_DIR})
-      set(LIBXML2_LIBS "xml2")
+  # Don't look for these libraries on Windows.
+  if (NOT PURE_WINDOWS)
+    # Skip libedit if using ASan as it contains memory leaks.
+    if (LLVM_ENABLE_LIBEDIT AND HAVE_HISTEDIT_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*")
+      check_library_exists(edit el_init "" HAVE_LIBEDIT)
+    else()
+      set(HAVE_LIBEDIT 0)
+    endif()
+    if(LLVM_ENABLE_TERMINFO)
+      set(HAVE_TERMINFO 0)
+      foreach(library tinfo terminfo curses ncurses ncursesw)
+        string(TOUPPER ${library} library_suffix)
+        check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix})
+        if(HAVE_TERMINFO_${library_suffix})
+          set(HAVE_TERMINFO 1)
+          set(TERMINFO_LIBS "${library}")
+          break()
+        endif()
+      endforeach()
+    else()
+      set(HAVE_TERMINFO 0)
+    endif()
+
+    find_library(ICONV_LIBRARY_PATH NAMES iconv libiconv libiconv-2 c)
+    set(LLVM_LIBXML2_ENABLED 0)
+    set(LIBXML2_FOUND 0)
+    if((LLVM_ENABLE_LIBXML2) AND ((CMAKE_SYSTEM_NAME MATCHES "Linux") AND (ICONV_LIBRARY_PATH) OR APPLE))
+      find_package(LibXml2)
+      if (LIBXML2_FOUND)
+        set(LLVM_LIBXML2_ENABLED 1)
+        include_directories(${LIBXML2_INCLUDE_DIR})
+        set(LIBXML2_LIBS "xml2")
+      endif()
     endif()
   endif()
 endif()

Modified: llvm/trunk/lib/Support/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/CMakeLists.txt?rev=319533&r1=319532&r2=319533&view=diff
==============================================================================
--- llvm/trunk/lib/Support/CMakeLists.txt (original)
+++ llvm/trunk/lib/Support/CMakeLists.txt Fri Dec  1 03:41:07 2017
@@ -1,4 +1,7 @@
 set(system_libs)
+if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ )
+  set(system_libs ${system_libs} ${ZLIB_LIBRARY_PATH})
+endif()
 if( MSVC OR MINGW )
   # libuuid required for FOLDERID_Profile usage in lib/Support/Windows/Path.inc.
   set(system_libs ${system_libs} psapi shell32 ole32 uuid)
@@ -21,9 +24,6 @@ elseif( CMAKE_HOST_UNIX )
     set(system_libs ${system_libs} atomic)
   endif()
   set(system_libs ${system_libs} ${LLVM_PTHREAD_LIB})
-  if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ )
-    set(system_libs ${system_libs} z)
-  endif()
   if( UNIX AND NOT (BEOS OR HAIKU) )
     set(system_libs ${system_libs} m)
   endif()




More information about the llvm-commits mailing list