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)