Forráskód Böngészése

Make libuv available to all parts of CMake

The libuv library provides many useful platform abstractions and better
process management than KWSys.  We'd like to use it everywhere instead
of just in the server mode.  Drop the `CMAKE_USE_LIBUV` option and use
libuv everywhere except during bootstrap.
Brad King 8 éve
szülő
commit
88c9878af9
3 módosított fájl, 19 hozzáadás és 50 törlés
  1. 13 38
      CMakeLists.txt
  2. 0 1
      Source/cmConfigure.cmake.h.in
  3. 6 11
      Source/cmakemain.cxx

+ 13 - 38
CMakeLists.txt

@@ -529,42 +529,21 @@ macro (CMAKE_BUILD_UTILITIES)
 
   #---------------------------------------------------------------------
   # Build libuv library.
-  if(NOT DEFINED CMAKE_USE_LIBUV)
-    set(CMAKE_USE_LIBUV 1)
-    if(APPLE)
-      include(CheckCSourceCompiles)
-      check_c_source_compiles("
-#include <CoreServices/CoreServices.h>
-#include <AvailabilityMacros.h>
-#ifndef MAC_OS_X_VERSION_10_5
-#error \"MAC_OS_X_VERSION_10_5 is not defined\"
-#endif
-int main(void) { return 0; }
-" HAVE_CoreServices_OS_X_10_5)
-      if(NOT HAVE_CoreServices_OS_X_10_5)
-        set(CMAKE_USE_LIBUV 0)
-      endif()
-    endif()
-  endif()
-  if(CMAKE_USE_LIBUV)
-    if(CMAKE_USE_SYSTEM_LIBUV)
-      if(NOT CMAKE_VERSION VERSION_LESS 3.0)
-        find_package(LibUV 1.0.0)
-      else()
-        message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBUV requires CMake >= 3.0")
-      endif()
-      if(NOT LIBUV_FOUND)
-        message(FATAL_ERROR
-          "CMAKE_USE_SYSTEM_LIBUV is ON but a libuv is not found!")
-      endif()
-      set(CMAKE_LIBUV_LIBRARIES LibUV::LibUV)
+  if(CMAKE_USE_SYSTEM_LIBUV)
+    if(NOT CMAKE_VERSION VERSION_LESS 3.0)
+      find_package(LibUV 1.0.0)
     else()
-      set(CMAKE_LIBUV_LIBRARIES cmlibuv)
-      add_subdirectory(Utilities/cmlibuv)
-      CMAKE_SET_TARGET_FOLDER(cmlibuv "Utilities/3rdParty")
+      message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBUV requires CMake >= 3.0")
     endif()
+    if(NOT LIBUV_FOUND)
+      message(FATAL_ERROR
+        "CMAKE_USE_SYSTEM_LIBUV is ON but a libuv is not found!")
+    endif()
+    set(CMAKE_LIBUV_LIBRARIES LibUV::LibUV)
   else()
-    set(CMAKE_LIBUV_LIBRARIES)
+    set(CMAKE_LIBUV_LIBRARIES cmlibuv)
+    add_subdirectory(Utilities/cmlibuv)
+    CMAKE_SET_TARGET_FOLDER(cmlibuv "Utilities/3rdParty")
   endif()
 
   #---------------------------------------------------------------------
@@ -758,8 +737,7 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE)
   if(NOT DEFINED CMake_ENABLE_SERVER_MODE)
     list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_auto_type CMake_HAVE_CXX_AUTO_TYPE)
     list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_range_for CMake_HAVE_CXX_RANGE_FOR)
-    if(CMAKE_USE_LIBUV
-        AND CMake_HAVE_CXX_AUTO_TYPE
+    if(CMake_HAVE_CXX_AUTO_TYPE
         AND CMake_HAVE_CXX_MAKE_UNIQUE
         AND CMake_HAVE_CXX_RANGE_FOR
         )
@@ -768,9 +746,6 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE)
       set(CMake_ENABLE_SERVER_MODE 0)
     endif()
   endif()
-  if(CMake_ENABLE_SERVER_MODE AND NOT CMAKE_USE_LIBUV)
-    message(FATAL_ERROR "The server mode requires libuv!")
-  endif()
 else()
   set(CMake_ENABLE_SERVER_MODE 0)
 endif()

+ 0 - 1
Source/cmConfigure.cmake.h.in

@@ -19,7 +19,6 @@
 #cmakedefine HAVE_UNSETENV
 #cmakedefine CMAKE_USE_ELF_PARSER
 #cmakedefine CMAKE_USE_MACH_PARSER
-#cmakedefine CMAKE_USE_LIBUV
 #cmakedefine CMake_HAVE_CXX_AUTO_PTR
 #cmakedefine CMake_HAVE_CXX_EQ_DELETE
 #cmakedefine CMake_HAVE_CXX_FALLTHROUGH

+ 6 - 11
Source/cmakemain.cxx

@@ -15,6 +15,11 @@
 #ifdef CMAKE_BUILD_WITH_CMAKE
 #include "cmDocumentation.h"
 #include "cmDynamicLoader.h"
+#ifdef _WIN32
+#include <fcntl.h>  /* _O_TEXT */
+#include <stdlib.h> /* _set_fmode, _fmode */
+#endif
+#include "cm_uv.h"
 #endif
 
 #include "cmsys/Encoding.hxx"
@@ -26,14 +31,6 @@
 #include <string>
 #include <vector>
 
-#ifdef CMAKE_USE_LIBUV
-#ifdef _WIN32
-#include <fcntl.h>  /* _O_TEXT */
-#include <stdlib.h> /* _set_fmode, _fmode */
-#endif
-#include "cm_uv.h"
-#endif
-
 #ifdef CMAKE_BUILD_WITH_CMAKE
 static const char* cmDocumentationName[][2] = {
   { CM_NULLPTR, "  cmake - Cross-Platform Makefile Generator." },
@@ -172,7 +169,7 @@ int main(int ac, char const* const* av)
   ac = args.argc();
   av = args.argv();
 
-#if defined(CMAKE_USE_LIBUV) && defined(_WIN32)
+#if defined(CMAKE_BUILD_WITH_CMAKE) && defined(_WIN32)
   // Perform libuv one-time initialization now, and then un-do its
   // global _fmode setting so that using libuv does not change the
   // default file text/binary mode.  See libuv issue 840.
@@ -197,8 +194,6 @@ int main(int ac, char const* const* av)
   int ret = do_cmake(ac, av);
 #ifdef CMAKE_BUILD_WITH_CMAKE
   cmDynamicLoader::FlushCache();
-#endif
-#ifdef CMAKE_USE_LIBUV
   uv_loop_close(uv_default_loop());
 #endif
   return ret;