aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch
blob: 15cf67fd2ead627e432c8bec68b421cd5ccd4e2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
diff -uNr a/cmake/FindLibunwind.cmake b/cmake/FindLibunwind.cmake
--- a/cmake/FindLibunwind.cmake	1970-01-01 01:00:00.000000000 +0100
+++ b/cmake/FindLibunwind.cmake	2018-11-20 15:53:48.799078114 +0100
@@ -0,0 +1,54 @@
+# - 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 (CheckIncludeFile)
+check_include_file (libunwind.h HAVE_LIBUNWIND_H)
+check_include_file (unwind.h HAVE_UNWIND_H)
+
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
+    set(LIBUNWIND_ARCH "arm")
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
+    set(LIBUNWIND_ARCH "aarch64")
+elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
+        CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" OR
+        CMAKE_SYSTEM_PROCESSOR STREQUAL "corei7-64")
+    set(LIBUNWIND_ARCH "x86_64")
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
+    set(LIBUNWIND_ARCH "x86")
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64")
+    set(LIBUNWIND_ARCH "ppc64")
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc")
+    set(LIBUNWIND_ARCH "ppc32")
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
+    set(LIBUNWIND_ARCH "mips")
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^hppa")
+    set(LIBUNWIND_ARCH "hppa")
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ia64")
+    set(LIBUNWIND_ARCH "ia64")
+endif()
+
+find_library (UNWIND_LIBRARY_PLATFORM NAMES "unwind-${LIBUNWIND_ARCH}" DOC "unwind library platform")
+if (UNWIND_LIBRARY_PLATFORM)
+    set(HAVE_LIB_UNWIND "1")
+endif()
+
+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 HAVE_LIBUNWIND_H HAVE_UNWIND_H HAVE_LIB_UNWIND)
+
+mark_as_advanced (UNWIND_LIBRARY UNWIND_LIBRARY_PLATFORM)
+
+if (Libunwind_FOUND)
+    add_library(unwind INTERFACE IMPORTED)
+    set_target_properties(unwind PROPERTIES
+        INTERFACE_LINK_LIBRARIES "${UNWIND_LIBRARY};${UNWIND_LIBRARY_PLATFORM}"
+    )
+else()
+    message("Can't find libunwind library")
+endif()
diff -uNr a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt	2018-11-20 15:49:07.576278417 +0100
+++ b/CMakeLists.txt	2018-11-20 15:49:32.106819928 +0100
@@ -58,7 +58,6 @@
 check_include_file (execinfo.h HAVE_EXECINFO_H)
 check_include_file (glob.h HAVE_GLOB_H)
 check_include_file (inttypes.h HAVE_INTTYPES_H)
-check_include_file (libunwind.h HAVE_LIBUNWIND_H)
 check_include_file (memory.h HAVE_MEMORY_H)
 check_include_file (pwd.h HAVE_PWD_H)
 check_include_file (stdint.h HAVE_STDINT_H)
@@ -74,7 +73,6 @@
 check_include_file (syslog.h HAVE_SYSLOG_H)
 check_include_file (ucontext.h HAVE_UCONTEXT_H)
 check_include_file (unistd.h HAVE_UNISTD_H)
-check_include_file (unwind.h HAVE_UNWIND_H)
 
 check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP)
 check_include_file_cxx ("ext/hash_set" HAVE_EXT_HASH_SET)
@@ -109,10 +107,7 @@
 # snprintf as an inline function
 check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF)
 
-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>
@@ -376,9 +371,9 @@
 
 set_target_properties (glog PROPERTIES POSITION_INDEPENDENT_CODE ON)
 
-if (UNWIND_LIBRARY)
-  target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY})
-endif (UNWIND_LIBRARY)
+if (Libunwind_FOUND)
+  target_link_libraries (glog PUBLIC unwind)
+endif (Libunwind_FOUND)
 
 if (HAVE_PTHREAD)
   target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT})
@@ -571,6 +566,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 -uNr a/glog-config.cmake.in b/glog-config.cmake.in
--- a/glog-config.cmake.in	2018-11-20 15:49:07.576278417 +0100
+++ b/glog-config.cmake.in	2018-11-20 15:52:32.330418489 +0100
@@ -4,4 +4,6 @@
 
 @gflags_DEPENDENCY@
 
+find_dependency (Libunwind)
+
 include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")