Skip to content

Commit 31be6ba

Browse files
committed
update backward-cpp
updated backward-cpp to last version fix compile under openSUSE Tumbleweed
1 parent 773bffa commit 31be6ba

File tree

7 files changed

+250
-124
lines changed

7 files changed

+250
-124
lines changed

osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ target_include_directories(memory_tools
2626
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
2727
$<INSTALL_INTERFACE:include>
2828
)
29-
target_link_libraries(memory_tools PRIVATE Backward::Backward)
29+
3030

3131
if(CMAKE_DL_LIBS)
3232
target_link_libraries(memory_tools PUBLIC ${CMAKE_DL_LIBS})

osrf_testing_tools_cpp/src/memory_tools/vendor/bombela/backward-cpp/BackwardConfig.cmake

Lines changed: 56 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,6 @@ set(STACK_DETAILS_BFD FALSE CACHE BOOL
4343
set(STACK_DETAILS_DWARF FALSE CACHE BOOL
4444
"Use libdwarf/libelf to read debug info")
4545

46-
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND NOT DEFINED BACKWARD_TESTS)
47-
# If this is a top level CMake project, we most lixely want the tests
48-
set(BACKWARD_TESTS ON CACHE BOOL "Enable tests")
49-
else()
50-
set(BACKWARD_TESTS OFF CACHE BOOL "Enable tests")
51-
endif()
5246
###############################################################################
5347
# CONFIGS
5448
###############################################################################
@@ -79,18 +73,31 @@ if (STACK_WALKING_LIBUNWIND)
7973

8074
# Disable other unwinders if libunwind is found
8175
set(STACK_WALKING_UNWIND FALSE)
82-
set(STACK_WALKING_BACKTRACE FALSE)
76+
set(STACK_WALKING_BACKTRACE FALSE)
8377
endif()
8478

85-
if (${STACK_DETAILS_AUTO_DETECT} AND NOT WIN32)
79+
if (${STACK_DETAILS_AUTO_DETECT})
8680
if(NOT CMAKE_VERSION VERSION_LESS 3.17)
8781
set(_name_mismatched_arg NAME_MISMATCHED)
8882
endif()
8983
# find libdw
9084
find_path(LIBDW_INCLUDE_DIR NAMES "elfutils/libdw.h" "elfutils/libdwfl.h")
9185
find_library(LIBDW_LIBRARY dw)
86+
# in case it's statically linked, look for all the possible dependencies
87+
find_library(LIBELF_LIBRARY elf)
88+
find_library(LIBPTHREAD_LIBRARY pthread)
89+
find_library(LIBZ_LIBRARY z)
90+
find_library(LIBBZ2_LIBRARY bz2)
91+
find_library(LIBLZMA_LIBRARY lzma)
92+
find_library(LIBZSTD_LIBRARY zstd)
9293
set(LIBDW_INCLUDE_DIRS ${LIBDW_INCLUDE_DIR} )
93-
set(LIBDW_LIBRARIES ${LIBDW_LIBRARY} )
94+
set(LIBDW_LIBRARIES ${LIBDW_LIBRARY}
95+
$<$<BOOL:${LIBELF_LIBRARY}>:${LIBELF_LIBRARY}>
96+
$<$<BOOL:${LIBPTHREAD_LIBRARY}>:${LIBPTHREAD_LIBRARY}>
97+
$<$<BOOL:${LIBZ_LIBRARY}>:${LIBZ_LIBRARY}>
98+
$<$<BOOL:${LIBBZ2_LIBRARY}>:${LIBBZ2_LIBRARY}>
99+
$<$<BOOL:${LIBLZMA_LIBRARY}>:${LIBLZMA_LIBRARY}>
100+
$<$<BOOL:${LIBZSTD_LIBRARY}>:${LIBZSTD_LIBRARY}>)
94101
find_package_handle_standard_args(libdw ${_name_mismatched_arg}
95102
REQUIRED_VARS LIBDW_LIBRARY LIBDW_INCLUDE_DIR)
96103
mark_as_advanced(LIBDW_INCLUDE_DIR LIBDW_LIBRARY)
@@ -139,6 +146,11 @@ if (${STACK_DETAILS_AUTO_DETECT} AND NOT WIN32)
139146
# If we attempt to link against static bfd, make sure to link its dependencies, too
140147
get_filename_component(bfd_lib_ext "${LIBBFD_LIBRARY}" EXT)
141148
if (bfd_lib_ext STREQUAL "${CMAKE_STATIC_LIBRARY_SUFFIX}")
149+
find_library(LIBSFRAME_LIBRARY NAMES sframe)
150+
if (LIBSFRAME_LIBRARY)
151+
list(APPEND _BACKWARD_LIBRARIES ${LIBSFRAME_LIBRARY})
152+
endif()
153+
142154
list(APPEND _BACKWARD_LIBRARIES iberty z)
143155
endif()
144156

@@ -190,14 +202,24 @@ if (NOT _BACKWARD_DEFINITIONS)
190202
endif()
191203

192204
if(WIN32)
193-
list(APPEND _BACKWARD_LIBRARIES dbghelp psapi)
205+
list(APPEND _BACKWARD_LIBRARIES dbghelp psapi)
194206
if(MINGW)
195-
set(MINGW_MSVCR_LIBRARY "msvcr90$<$<CONFIG:DEBUG>:d>" CACHE STRING "Mingw MSVC runtime import library")
196-
list(APPEND _BACKWARD_LIBRARIES ${MINGW_MSVCR_LIBRARY})
197-
endif()
207+
include(CheckCXXCompilerFlag)
208+
check_cxx_compiler_flag(-gcodeview SUPPORT_WINDOWS_DEBUG_INFO)
209+
if(SUPPORT_WINDOWS_DEBUG_INFO)
210+
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--pdb= ")
211+
add_compile_options(-gcodeview)
212+
else()
213+
set(MINGW_MSVCR_LIBRARY "msvcr90$<$<CONFIG:DEBUG>:d>" CACHE STRING "Mingw MSVC runtime import library")
214+
list(APPEND _BACKWARD_LIBRARIES ${MINGW_MSVCR_LIBRARY})
215+
endif()
216+
endif()
198217
endif()
199218

200-
set(BACKWARD_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}")
219+
set(BACKWARD_INCLUDE_DIR
220+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
221+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
222+
)
201223

202224
set(BACKWARD_HAS_EXTERNAL_LIBRARIES FALSE)
203225
set(FIND_PACKAGE_REQUIRED_VARS BACKWARD_INCLUDE_DIR)
@@ -208,40 +230,41 @@ endif()
208230

209231
include(FindPackageHandleStandardArgs)
210232
find_package_handle_standard_args(Backward
211-
REQUIRED_VARS ${FIND_PACKAGE_REQUIRED_VARS}
233+
REQUIRED_VARS ${FIND_PACKAGE_REQUIRED_VARS}
212234
)
213235
list(APPEND _BACKWARD_INCLUDE_DIRS ${BACKWARD_INCLUDE_DIR})
214236

237+
# add_backward, optional bool argument; if passed and true, backward will be included as a system header
215238
macro(add_backward target)
216-
target_include_directories(${target} PRIVATE ${BACKWARD_INCLUDE_DIRS})
239+
message(DEPRECATION "The add_backward() macro is deprecated, use target_link_libraries() to link to "
240+
"one of the exported targets: Backward::Interface, Backward::Object, or Backward::Backward."
241+
)
242+
if ("${ARGN}")
243+
target_include_directories(${target} SYSTEM PRIVATE ${BACKWARD_INCLUDE_DIRS})
244+
else()
245+
target_include_directories(${target} PRIVATE ${BACKWARD_INCLUDE_DIRS})
246+
endif()
217247
set_property(TARGET ${target} APPEND PROPERTY COMPILE_DEFINITIONS ${BACKWARD_DEFINITIONS})
218248
set_property(TARGET ${target} APPEND PROPERTY LINK_LIBRARIES ${BACKWARD_LIBRARIES})
219249
endmacro()
220250

221-
set(BACKWARD_INCLUDE_DIRS ${_BACKWARD_INCLUDE_DIRS} CACHE INTERNAL "_BACKWARD_INCLUDE_DIRS")
251+
set(BACKWARD_INCLUDE_DIRS ${_BACKWARD_INCLUDE_DIRS} CACHE INTERNAL "BACKWARD_INCLUDE_DIRS")
222252
set(BACKWARD_DEFINITIONS ${_BACKWARD_DEFINITIONS} CACHE INTERNAL "BACKWARD_DEFINITIONS")
223253
set(BACKWARD_LIBRARIES ${_BACKWARD_LIBRARIES} CACHE INTERNAL "BACKWARD_LIBRARIES")
224254
mark_as_advanced(BACKWARD_INCLUDE_DIRS BACKWARD_DEFINITIONS BACKWARD_LIBRARIES)
225255

226256
# Expand each definition in BACKWARD_DEFINITIONS to its own cmake var and export
227257
# to outer scope
228258
foreach(var ${BACKWARD_DEFINITIONS})
229-
string(REPLACE "=" ";" var_as_list ${var})
230-
list(GET var_as_list 0 var_name)
231-
list(GET var_as_list 1 var_value)
232-
set(${var_name} ${var_value})
233-
mark_as_advanced(${var_name})
259+
string(REPLACE "=" ";" var_as_list ${var})
260+
list(GET var_as_list 0 var_name)
261+
list(GET var_as_list 1 var_value)
262+
set(${var_name} ${var_value})
263+
mark_as_advanced(${var_name})
234264
endforeach()
235265

236-
if (NOT TARGET Backward::Backward)
237-
add_library(Backward::Backward INTERFACE IMPORTED)
238-
set_target_properties(Backward::Backward PROPERTIES
239-
INTERFACE_INCLUDE_DIRECTORIES "${BACKWARD_INCLUDE_DIRS}"
240-
INTERFACE_COMPILE_DEFINITIONS "${BACKWARD_DEFINITIONS}"
241-
)
242-
if(BACKWARD_HAS_EXTERNAL_LIBRARIES)
243-
set_target_properties(Backward::Backward PROPERTIES
244-
INTERFACE_LINK_LIBRARIES "${BACKWARD_LIBRARIES}"
245-
)
246-
endif()
266+
# if this file is used from the install tree by find_package(), include the
267+
# file CMake-generated file where the targets are defined
268+
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/BackwardTargets.cmake)
269+
include(${CMAKE_CURRENT_LIST_DIR}/BackwardTargets.cmake)
247270
endif()

osrf_testing_tools_cpp/src/memory_tools/vendor/bombela/backward-cpp/CMakeLists.txt

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
# SOFTWARE.
2222

23-
cmake_minimum_required(VERSION 3.0)
23+
cmake_minimum_required(VERSION 3.14)
2424
project(backward CXX)
2525

2626
# Introduce variables:
@@ -31,6 +31,22 @@ include(GNUInstallDirs)
3131

3232
include(BackwardConfig.cmake)
3333

34+
###############################################################################
35+
# OPTIONS
36+
###############################################################################
37+
38+
option(BACKWARD_SHARED "Build backward as a shared library" OFF)
39+
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND NOT DEFINED BACKWARD_TESTS)
40+
# If this is a top level CMake project, we most lixely want the tests
41+
set(BACKWARD_TESTS ON CACHE BOOL "Enable tests")
42+
else()
43+
set(BACKWARD_TESTS OFF CACHE BOOL "Enable tests")
44+
endif()
45+
46+
###############################################################################
47+
# COMPILER FLAGS
48+
###############################################################################
49+
3450
# check if compiler is nvcc or nvcc_wrapper
3551
set(COMPILER_IS_NVCC false)
3652
get_filename_component(COMPILER_NAME ${CMAKE_CXX_COMPILER} NAME)
@@ -52,10 +68,6 @@ if (${COMPILER_IS_NVCC})
5268
set(CMAKE_CXX_EXTENSIONS OFF)
5369
endif()
5470

55-
###############################################################################
56-
# COMPILER FLAGS
57-
###############################################################################
58-
5971
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
6072
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
6173
if (NOT ${COMPILER_IS_NVCC})
@@ -65,27 +77,43 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
6577
endif()
6678

6779
###############################################################################
68-
# BACKWARD OBJECT
80+
# BACKWARD INTERFACE
6981
###############################################################################
7082

71-
add_library(backward_object OBJECT backward.cpp)
72-
target_compile_definitions(backward_object PRIVATE ${BACKWARD_DEFINITIONS})
73-
target_include_directories(backward_object PRIVATE ${BACKWARD_INCLUDE_DIRS})
74-
set(BACKWARD_ENABLE $<TARGET_OBJECTS:backward_object> CACHE STRING
75-
"Link with this object to setup backward automatically")
83+
add_library(backward_interface INTERFACE)
84+
set_target_properties(backward_interface PROPERTIES EXPORT_NAME Interface)
85+
target_compile_definitions(backward_interface INTERFACE ${BACKWARD_DEFINITIONS})
86+
target_include_directories(backward_interface INTERFACE ${BACKWARD_INCLUDE_DIRS})
87+
if(BACKWARD_HAS_EXTERNAL_LIBRARIES)
88+
target_link_libraries(backward_interface INTERFACE ${BACKWARD_LIBRARIES})
89+
endif()
90+
add_library(Backward::Interface ALIAS backward_interface)
7691

92+
###############################################################################
93+
# BACKWARD OBJECT (Includes backward.cpp)
94+
# (Note that this target is not exported, since CMake currently does not allow
95+
# exporting an OBJECT library.)
96+
###############################################################################
97+
98+
add_library(backward_object OBJECT backward.cpp)
99+
set_target_properties(backward_object PROPERTIES EXPORT_NAME Object)
100+
target_link_libraries(backward_object PUBLIC Backward::Interface)
101+
add_library(Backward::Object ALIAS backward_object)
77102

78103
###############################################################################
79104
# BACKWARD LIBRARY (Includes backward.cpp)
105+
# (Note that the linker will not include unused objects from a static library,
106+
# unless the -Wl,--whole-archive option (or similar) is used.)
80107
###############################################################################
81-
option(BACKWARD_SHARED "Build dynamic backward-cpp shared lib" OFF)
82108

109+
set(libtype STATIC)
83110
if(BACKWARD_SHARED)
84111
set(libtype SHARED)
85112
endif()
86113
add_library(backward ${libtype} backward.cpp)
87-
target_compile_definitions(backward PUBLIC ${BACKWARD_DEFINITIONS})
88-
target_include_directories(backward PUBLIC ${BACKWARD_INCLUDE_DIRS})
114+
set_target_properties(backward PROPERTIES EXPORT_NAME Backward)
115+
target_link_libraries(backward PUBLIC Backward::Interface)
116+
add_library(Backward::Backward ALIAS backward)
89117

90118
###############################################################################
91119
# TESTS
@@ -102,7 +130,7 @@ if(BACKWARD_TESTS)
102130

103131
add_executable(${test_name} ${src} ${ARGN} $<TARGET_OBJECTS:test_main>)
104132

105-
target_link_libraries(${test_name} PRIVATE Backward::Backward)
133+
target_link_libraries(${test_name} PRIVATE Backward::Interface)
106134

107135
add_test(NAME ${name} COMMAND ${test_name})
108136
endmacro()
@@ -125,7 +153,7 @@ if(BACKWARD_TESTS)
125153
)
126154

127155
foreach(test ${TESTS})
128-
backward_add_test(test/${test}.cpp ${BACKWARD_ENABLE})
156+
backward_add_test(test/${test}.cpp backward.cpp)
129157
endforeach()
130158
endif()
131159

@@ -135,5 +163,14 @@ install(
135163
)
136164
install(
137165
FILES "BackwardConfig.cmake"
138-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/backward
166+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
139167
)
168+
# check if Backward is being used as a top-level project or included as a subproject
169+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
170+
# export the targets (note that exporting backward_object does not make sense)
171+
install(TARGETS backward_interface backward EXPORT BackwardTargets)
172+
# install a CMake file for the exported targets
173+
install(EXPORT BackwardTargets
174+
NAMESPACE Backward::
175+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
176+
endif()

0 commit comments

Comments
 (0)