This is an automated email from the ASF dual-hosted git repository.

tillt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git

commit a73fcb2aca53596bb419c6c3dc8b73854d135442
Author: Till Toenshoff <[email protected]>
AuthorDate: Wed Oct 31 12:45:47 2018 -0700

    Allowed for unbundled libarchive on cmake builds.
    
    Review: https://reviews.apache.org/r/69140/
---
 3rdparty/CMakeLists.txt             |  8 +++---
 3rdparty/cmake/FindLIBARCHIVE.cmake | 52 +++++++++++++++++++++++++++++++++++++
 cmake/CompilationConfigure.cmake    | 11 ++++++++
 3 files changed, 67 insertions(+), 4 deletions(-)

diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt
index 9584f53..fb80b39 100644
--- a/3rdparty/CMakeLists.txt
+++ b/3rdparty/CMakeLists.txt
@@ -995,7 +995,7 @@ set_target_properties(
 # libarchive: Multi-format archive and compression library.
 # https://github.com/libarchive/libarchive
 ###########################################################
-if (WIN32 OR REBUNDLED)
+if (NOT UNBUNDLED_LIBARCHIVE)
   EXTERNAL(libarchive ${LIBARCHIVE_VERSION} ${CMAKE_CURRENT_BINARY_DIR})
 
   add_library(libarchive STATIC IMPORTED GLOBAL)
@@ -1069,11 +1069,11 @@ if (WIN32 OR REBUNDLED)
     URL               ${LIBARCHIVE_URL}
     URL_HASH          ${LIBARCHIVE_HASH})
 else ()
-  find_package(LibArchive REQUIRED)
+  find_package(LIBARCHIVE REQUIRED)
   add_library(libarchive SHARED IMPORTED GLOBAL)
   set_target_properties(libarchive PROPERTIES
-    IMPORTED_LOCATION ${LibArchive_LIBRARIES}
-    INTERFACE_INCLUDE_DIRECTORIES ${LibArchive_INCLUDE_DIRS})
+    IMPORTED_LOCATION ${LIBARCHIVE_LIBS}
+    INTERFACE_INCLUDE_DIRECTORIES ${LIBARCHIVE_INCLUDE_DIR})
 endif ()
 
 # Google Test: Google's C++ test framework (GoogleTest and GoogleMock).
diff --git a/3rdparty/cmake/FindLIBARCHIVE.cmake 
b/3rdparty/cmake/FindLIBARCHIVE.cmake
new file mode 100644
index 0000000..f0c29d0
--- /dev/null
+++ b/3rdparty/cmake/FindLIBARCHIVE.cmake
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+include(FindPackageHelper)
+
+# TODO(tillt): Consider moving "_ROOT_DIR" logic into FindPackageHelper.
+if ("${LIBARCHIVE_ROOT_DIR}" STREQUAL "")
+  # NOTE: If this fails, stderr is ignored, and the output variable is empty.
+  # This has no deleterious effect on our path search.
+  execute_process(
+    COMMAND brew --prefix libarchive
+    OUTPUT_VARIABLE LIBARCHIVE_PREFIX
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  set(POSSIBLE_LIBARCHIVE_INCLUDE_DIRS "")
+  set(POSSIBLE_LIBARCHIVE_LIB_DIRS "")
+
+  if (NOT "${LIBARCHIVE_PREFIX}" STREQUAL "")
+    list(APPEND POSSIBLE_LIBARCHIVE_INCLUDE_DIRS ${LIBARCHIVE_PREFIX}/include)
+    list(APPEND POSSIBLE_LIBARCHIVE_LIB_DIRS ${LIBARCHIVE_PREFIX}/lib)
+  endif()
+
+  list(
+    APPEND POSSIBLE_LIBARCHIVE_INCLUDE_DIRS
+    /usr/include/libarchive
+    /usr/local/include/libarchive)
+
+  list(
+    APPEND POSSIBLE_LIBARCHIVE_LIB_DIRS
+    /usr/lib
+    /usr/local/lib)
+else()
+  set(POSSIBLE_LIBARCHIVE_INCLUDE_DIRS ${LIBARCHIVE_ROOT_DIR}/include)
+  set(POSSIBLE_LIBARCHIVE_LIB_DIRS ${LIBARCHIVE_ROOT_DIR}/lib)
+endif()
+
+set(LIBARCHIVE_LIBRARY_NAMES archive)
+
+FIND_PACKAGE_HELPER(LIBARCHIVE archive.h)
diff --git a/cmake/CompilationConfigure.cmake b/cmake/CompilationConfigure.cmake
index 5d2be0a..f6c6e62 100644
--- a/cmake/CompilationConfigure.cmake
+++ b/cmake/CompilationConfigure.cmake
@@ -75,6 +75,17 @@ option(
   TRUE)
 
 option(
+  UNBUNDLED_LIBARCHIVE
+  "Build with an installed libarchive version instead of the bundled."
+  FALSE)
+
+set(
+  LIBARCHIVE_ROOT_DIR
+  ""
+  CACHE STRING
+  "Specify the path to libarchive, e.g. \"C:\\libarchive-Win64\".")
+
+option(
   ENABLE_LIBEVENT
   "Use libevent instead of libev as the core event loop implementation."
   FALSE)

Reply via email to