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

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


The following commit(s) were added to refs/heads/master by this push:
     new c48e45e  [cmake_modules] shared libs for yaml and gumbo on macOS
c48e45e is described below

commit c48e45e27fb3b95b92ac26e980fc467d15c3ac48
Author: Alexey Serbin <[email protected]>
AuthorDate: Fri Feb 7 00:22:55 2020 -0800

    [cmake_modules] shared libs for yaml and gumbo on macOS
    
    I noticed that even in DEBUG build yaml and gumbo libraries were
    linked in statically when building on macOS.  It turned out the
    system could not find shared libraries since their pattern contained
    non-macOS '.so' suffix.
    
    This patch address the issue.  I verified that non-debug binaries
    are linked dynamically with the libraries mentioned above.
    
    I also added some extra code to protect against using static libraries
    in place of the shared ones.  It's possible to apply this approach
    to other thirdparty libraries used by Kudu, but I think it's better
    to do so in a separate changelist.
    
    Change-Id: Ie1e56b9dd988501af010bbd1a256671b0460f526
    Reviewed-on: http://gerrit.cloudera.org:8080/15182
    Tested-by: Kudu Jenkins
    Reviewed-by: Adar Dembo <[email protected]>
---
 cmake_modules/FindGumboParser.cmake | 14 ++++++++++++--
 cmake_modules/FindGumboQuery.cmake  | 14 ++++++++++++--
 cmake_modules/FindYaml.cmake        | 14 ++++++++++++--
 3 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/cmake_modules/FindGumboParser.cmake 
b/cmake_modules/FindGumboParser.cmake
index 1cd0c75..0cdda17 100644
--- a/cmake_modules/FindGumboParser.cmake
+++ b/cmake_modules/FindGumboParser.cmake
@@ -19,13 +19,23 @@ find_path(GUMBO_PARSER_INCLUDE_DIR gumbo.h
   # make sure we don't accidentally pick up a different version
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
+
 find_library(GUMBO_PARSER_STATIC_LIB libgumbo.a
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
-find_library(GUMBO_PARSER_SHARED_LIB libgumbo.so
+
+set(__CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+if (APPLE)
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
+else()
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
+endif()
+find_library(GUMBO_PARSER_SHARED_LIB gumbo
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
+set(CMAKE_FIND_LIBRARY_SUFFIXES ${__CURRENT_FIND_LIBRARY_SUFFIXES})
+unset(__CURRENT_FIND_LIBRARY_SUFFIXES)
 
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(GUMBO_PARSER REQUIRED_VARS
-    GUMBO_PARSER_STATIC_LIB GUMBO_PARSER_SHARED_LIB GUMBO_PARSER_INCLUDE_DIR)
+  GUMBO_PARSER_STATIC_LIB GUMBO_PARSER_SHARED_LIB GUMBO_PARSER_INCLUDE_DIR)
diff --git a/cmake_modules/FindGumboQuery.cmake 
b/cmake_modules/FindGumboQuery.cmake
index be0ea4e..edee4f7 100644
--- a/cmake_modules/FindGumboQuery.cmake
+++ b/cmake_modules/FindGumboQuery.cmake
@@ -19,13 +19,23 @@ find_path(GUMBO_QUERY_INCLUDE_DIR gq/Document.h
   # make sure we don't accidentally pick up a different version
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
+
 find_library(GUMBO_QUERY_STATIC_LIB libgq.a
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
-find_library(GUMBO_QUERY_SHARED_LIB libgq.so
+
+set(__CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+if (APPLE)
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
+else()
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
+endif()
+find_library(GUMBO_QUERY_SHARED_LIB gq
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
+set(CMAKE_FIND_LIBRARY_SUFFIXES ${__CURRENT_FIND_LIBRARY_SUFFIXES})
+unset(__CURRENT_FIND_LIBRARY_SUFFIXES)
 
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(GUMBO_QUERY REQUIRED_VARS
-    GUMBO_QUERY_STATIC_LIB GUMBO_QUERY_SHARED_LIB GUMBO_QUERY_INCLUDE_DIR)
+  GUMBO_QUERY_STATIC_LIB GUMBO_QUERY_SHARED_LIB GUMBO_QUERY_INCLUDE_DIR)
diff --git a/cmake_modules/FindYaml.cmake b/cmake_modules/FindYaml.cmake
index cc73805..298d4df 100644
--- a/cmake_modules/FindYaml.cmake
+++ b/cmake_modules/FindYaml.cmake
@@ -19,13 +19,23 @@ find_path(YAML_INCLUDE_DIR yaml-cpp/yaml.h
   # make sure we don't accidentally pick up a different version
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
+
 find_library(YAML_STATIC_LIB libyaml-cpp.a
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
-find_library(YAML_SHARED_LIB libyaml-cpp.so
+
+set(__CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+if (APPLE)
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
+else()
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
+endif()
+find_library(YAML_SHARED_LIB yaml-cpp
   NO_CMAKE_SYSTEM_PATH
   NO_SYSTEM_ENVIRONMENT_PATH)
+set(CMAKE_FIND_LIBRARY_SUFFIXES ${__CURRENT_FIND_LIBRARY_SUFFIXES})
+unset(__CURRENT_FIND_LIBRARY_SUFFIXES)
 
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(YAML REQUIRED_VARS
-    YAML_STATIC_LIB YAML_SHARED_LIB YAML_INCLUDE_DIR)
+  YAML_STATIC_LIB YAML_SHARED_LIB YAML_INCLUDE_DIR)

Reply via email to