[oe] [meta-oe][PATCH] glog: fixed shared library versioning

Martin Jansa martin.jansa at gmail.com
Wed Oct 17 13:57:13 UTC 2018


Please rebase the unwind fix on top of
https://patchwork.openembedded.org/patch/155662/

On Wed, Oct 17, 2018 at 3:40 PM Vyacheslav Yurkov <uvv.mail at gmail.com>
wrote:

> Build glog as a shared library by default. Backported CMake patch
> from master that sets SONAME properly. Updated the patch for libunwind
> look up
> and added libunwind as a run-time dependency
>
> Signed-off-by: Vyacheslav Yurkov <uvv.mail at gmail.com>
> ---
>  ...0001-find-libunwind-during-configure.patch | 80 +++++++++++++----
>  .../glog/0002-rework-cmake-glog-version.patch | 87 +++++++++++++++++++
>  meta-oe/recipes-support/glog/glog_0.3.5.bb    |  7 +-
>  3 files changed, 153 insertions(+), 21 deletions(-)
>  create mode 100644
> meta-oe/recipes-support/glog/glog/0002-rework-cmake-glog-version.patch
>
> diff --git
> a/meta-oe/recipes-support/glog/glog/0001-find-libunwind-during-configure.patch
> b/meta-oe/recipes-support/glog/glog/0001-find-libunwind-during-configure.patch
> index 33dc9d38a..6becdc15f 100644
> ---
> a/meta-oe/recipes-support/glog/glog/0001-find-libunwind-during-configure.patch
> +++
> b/meta-oe/recipes-support/glog/glog/0001-find-libunwind-during-configure.patch
> @@ -1,30 +1,74 @@
> -diff -ur git/CMakeLists.txt ../0.3.5-r0.unwind/git/CMakeLists.txt
> ---- git/CMakeLists.txt 2018-10-08 08:54:15.118989400 +0200
> -+++ ../0.3.5-r0.unwind/git/CMakeLists.txt      2018-10-05
> 16:26:59.745922318 +0200
> -@@ -384,7 +384,9 @@
> +diff -ur --new-file git/cmake/FindLibunwind.cmake
> ../0.3.5-r0.unwind/git/cmake/FindLibunwind.cmake
> +--- git/cmake/FindLibunwind.cmake      1970-01-01 01:00:00.000000000 +0100
> ++++ ../0.3.5-r0.unwind/git/cmake/FindLibunwind.cmake   2018-10-09
> 09:43:59.803216273 +0200
> +@@ -0,0 +1,17 @@
> ++# - Try to find libunwind
> ++# Once done this will define
> ++#
> ++#  LIBUNWIND_FOUND - system has libunwind
> ++#  unwind - cmake target for libunwind
> ++
> ++find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
> ++
> ++include(FindPackageHandleStandardArgs)
> ++# handle the QUIETLY and REQUIRED arguments and set Libunwind_FOUND to
> TRUE
> ++# if all listed variables are TRUE
> ++find_package_handle_standard_args(Libunwind DEFAULT_MSG UNWIND_LIBRARY)
> ++
> ++mark_as_advanced (UNWIND_LIBRARY)
> ++
> ++add_library(unwind SHARED IMPORTED)
> ++set_target_properties(unwind PROPERTIES IMPORTED_LOCATION
> ${UNWIND_LIBRARY})
> +diff -ur --new-file git/CMakeLists.txt
> ../0.3.5-r0.unwind/git/CMakeLists.txt
> +--- git/CMakeLists.txt 2018-10-09 10:31:33.483584675 +0200
> ++++ ../0.3.5-r0.unwind/git/CMakeLists.txt      2018-10-09
> 09:43:59.799215966 +0200
> +@@ -118,8 +118,7 @@
> +
> + check_library_exists (unwind get_static_proc_name "" HAVE_LIB_UNWIND)
> +
> +-find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
> +-mark_as_advanced (UNWIND_LIBRARY)
> ++find_package(Libunwind)
> +
> + check_c_source_compiles ("
> + #include <stdlib.h>
> +@@ -383,9 +382,9 @@
> +
>   set_target_properties (glog PROPERTIES POSITION_INDEPENDENT_CODE ON)
>
> - if (UNWIND_LIBRARY)
> +-if (UNWIND_LIBRARY)
>  -  target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY})
> -+  add_library(unwind SHARED IMPORTED)
> -+  set_target_properties(unwind PROPERTIES IMPORTED_LOCATION
> ${UNWIND_LIBRARY})
> +-endif (UNWIND_LIBRARY)
> ++if (Libunwind_FOUND)
>  +  target_link_libraries (glog PUBLIC unwind)
> - endif (UNWIND_LIBRARY)
> ++endif (Libunwind_FOUND)
>
>   if (HAVE_PTHREAD)
> -diff -ur git/glog-config.cmake.in ../0.3.5-r0.unwind/git/
> glog-config.cmake.in
> ---- git/glog-config.cmake.in   2018-10-08 08:54:15.122989699 +0200
> -+++ ../0.3.5-r0.unwind/git/glog-config.cmake.in        2018-10-08
> 08:14:48.550745810 +0200
> -@@ -4,4 +4,12 @@
> +   target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT})
> +@@ -578,6 +577,7 @@
> + install (FILES
> +   ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
> +   ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
> ++  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLibunwind.cmake
> +   DESTINATION lib/cmake/glog)
> +
> + install (EXPORT glog-targets NAMESPACE glog:: DESTINATION lib/cmake/glog)
> +diff -ur --new-file git/glog-config.cmake.in ../0.3.5-r0.unwind/git/
> glog-config.cmake.in
> +--- git/glog-config.cmake.in   2018-10-09 10:31:33.487584975 +0200
> ++++ ../0.3.5-r0.unwind/git/glog-config.cmake.in        2018-10-09
> 09:43:59.799215966 +0200
> +@@ -4,4 +4,15 @@
>
>   @gflags_DEPENDENCY@
>
> -+find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
> -+mark_as_advanced (UNWIND_LIBRARY)
> ++# Record the state of the CMake module path when this script was
> ++# called so that we can ensure that we leave it in the same state on
> ++# exit as it was on entry, but modify it locally.
> ++set(UNWIND_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
> ++
> ++set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
> ++find_dependency (Libunwind)
>  +
> -+if (UNWIND_LIBRARY)
> -+  add_library(unwind SHARED IMPORTED)
> -+  set_target_properties(unwind PROPERTIES IMPORTED_LOCATION
> ${UNWIND_LIBRARY})
> -+endif (UNWIND_LIBRARY)
> ++# Restore original module path
> ++set(CMAKE_MODULE_PATH "${UNWIND_CMAKE_MODULE_PATH}")
>  +
>   include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")
> diff --git
> a/meta-oe/recipes-support/glog/glog/0002-rework-cmake-glog-version.patch
> b/meta-oe/recipes-support/glog/glog/0002-rework-cmake-glog-version.patch
> new file mode 100644
> index 000000000..8066e2718
> --- /dev/null
> +++
> b/meta-oe/recipes-support/glog/glog/0002-rework-cmake-glog-version.patch
> @@ -0,0 +1,87 @@
> +diff -ur git/CMakeLists.txt ../0.3.5-r0/git/CMakeLists.txt
> +--- git/CMakeLists.txt 2018-10-17 15:02:49.241749024 +0200
> ++++ ../0.3.5-r0/git/CMakeLists.txt     2018-10-17 15:13:59.703188731 +0200
> +@@ -1,3 +1,26 @@
> ++## CMake configuration file of glog project
> ++##
> ++## When this project is a subproject. The "glog::glog" target is in this
> case
> ++## an ALIAS library target for the "glog" library target. Targets which
> depend
> ++## on the glog library should link to the "glog::glog" library target.
> ++##
> ++## Example CMakeLists.txt of user project which requires separate glog
> installation:
> ++##   cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
> ++##   project(Foo)
> ++##
> ++##   find_package(glog REQUIRED)
> ++##
> ++##   add_executable(foo src/foo.cc)
> ++##   target_link_libraries(foo glog::glog)
> ++##
> ++## Example CMakeLists.txt of super-project which contains glog source
> tree:
> ++##   cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
> ++##   project(Foo)
> ++##
> ++##   add_subdirectory(glog)
> ++##
> ++##   add_executable(foo src/foo.cc)
> ++##   target_link_libraries(foo glog::glog)
> + cmake_minimum_required (VERSION 3.0)
> +
> + if (POLICY CMP0042)
> +@@ -8,23 +31,14 @@
> +   cmake_policy (SET CMP0063 NEW)
> + endif (POLICY CMP0063)
> +
> +-project (google-glog)
> +-
> +-enable_testing ()
> +-
> +-set (GLOG_MAJOR_VERSION 0)
> +-set (GLOG_MINOR_VERSION 3)
> +-set (GLOG_PATCH_VERSION 5)
> +-
> +-set (GLOG_VERSION
> +-  ${GLOG_MAJOR_VERSION}.${GLOG_MINOR_VERSION}.${GLOG_PATCH_VERSION})
> ++project(glog VERSION 0.3.5 LANGUAGES C CXX)
> +
> + set (CPACK_PACKAGE_NAME glog)
> + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "")
> +-set (CPACK_PACKAGE_VERSION_MAJOR ${GLOG_MAJOR_VERSION})
> +-set (CPACK_PACKAGE_VERSION_MINOR ${GLOG_MINOR_VERSION})
> +-set (CPACK_PACKAGE_VERSION_PATCH ${GLOG_PATCH_VERSION})
> +-set (CPACK_PACKAGE_VERSION ${GLOG_VERSION})
> ++set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_MAJOR_VERSION})
> ++set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_MINOR_VERSION})
> ++set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_PATCH_VERSION})
> ++set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
> +
> + option (WITH_GFLAGS "Use gflags" ON)
> + option (WITH_THREADS "Enable multithreading support" ON)
> +@@ -379,6 +393,7 @@
> + add_library (glog
> +   ${GLOG_SRCS}
> + )
> ++add_library(glog::glog ALIAS glog)
> +
> + set_target_properties (glog PROPERTIES POSITION_INDEPENDENT_CODE ON)
> +
> +@@ -405,8 +420,8 @@
> +   endif (NOT BUILD_SHARED_LIBS)
> + endif (gflags_FOUND)
> +
> +-set_target_properties (glog PROPERTIES VERSION ${GLOG_MAJOR_VERSION})
> +-set_target_properties (glog PROPERTIES SOVERSION ${GLOG_VERSION})
> ++set_target_properties (glog PROPERTIES VERSION ${PROJECT_VERSION})
> ++set_target_properties (glog PROPERTIES SOVERSION
> ${PROJECT_VERSION_MAJOR})
> +
> + if (WIN32)
> +   target_compile_definitions (glog PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES)
> +@@ -569,7 +584,7 @@
> +   NO_CHECK_REQUIRED_COMPONENTS_MACRO)
> +
> + write_basic_package_version_file (glog-config-version.cmake VERSION
> +-  ${GLOG_VERSION} COMPATIBILITY SameMajorVersion)
> ++  ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion)
> +
> + export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
> + export (PACKAGE glog)
> diff --git a/meta-oe/recipes-support/glog/glog_0.3.5.bb
> b/meta-oe/recipes-support/glog/glog_0.3.5.bb
> index bf7df53f3..10347bb36 100644
> --- a/meta-oe/recipes-support/glog/glog_0.3.5.bb
> +++ b/meta-oe/recipes-support/glog/glog_0.3.5.bb
> @@ -11,6 +11,7 @@ DEPENDS = "libunwind"
>  SRC_URI = " \
>      git://github.com/google/glog.git;branch=v035 \
>      file://0001-find-libunwind-during-configure.patch \
> +    file://0002-rework-cmake-glog-version.patch \
>  "
>
>  SRCREV = "a6a166db069520dbbd653c97c2e5b12e08a8bb26"
> @@ -19,6 +20,6 @@ S = "${WORKDIR}/git"
>
>  inherit cmake
>
> -RDEPENDS_${PN}-dev = ""
> -RRECOMMENDS_${PN}-dev = "${PN}-staticdev"
> -RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
> +EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"
> +
> +RDEPENDS_${PN} += "libunwind"
> --
> 2.19.1
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>



More information about the Openembedded-devel mailing list