@@ -325,6 +325,47 @@ if (WITH_BLKIN)
325325 add_subdirectory (blkin/blkin-lib)
326326endif (WITH_BLKIN)
327327
328+ ## breakpad
329+ if (WITH_BREAKPAD)
330+ set (breakpad_SOURCE_DIR ${CMAKE_SOURCE_DIR} /src/breakpad)
331+ set (lss_SOURCE_DIR ${CMAKE_SOURCE_DIR} /src/lss)
332+
333+ add_custom_target (breakpad_lss_symlink)
334+ add_custom_command (
335+ TARGET breakpad_lss_symlink
336+ COMMAND ${CMAKE_COMMAND} -E create_symlink ${lss_SOURCE_DIR} ${breakpad_SOURCE_DIR} /src/third_party/lss
337+ COMMENT "Creating symbolic link lss -> breakpad third party"
338+ )
339+ ExternalProject_Add(
340+ breakpad_project
341+ SOURCE_DIR "${breakpad_SOURCE_DIR} "
342+ CONFIGURE_COMMAND cd "${breakpad_SOURCE_DIR} "
343+ COMMAND "${breakpad_SOURCE_DIR} /configure"
344+ "CFLAGS=${CMAKE_C_FLAGS} -Wno-array-bounds -Wno-maybe-uninitialized"
345+ "CXXFLAGS=${CMAKE_CXX_FLAGS} -Wno-array-bounds -Wno-maybe-uninitialized"
346+ "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} -Wno-array-bounds -Wno-maybe-uninitialized"
347+ BUILD_COMMAND
348+ /bin/sh -cx "cd ${breakpad_SOURCE_DIR} && make"
349+ INSTALL_COMMAND ""
350+ UPDATE_DISCONNECTED ON
351+ BUILD_IN_SOURCE ON
352+ DEPENDS breakpad_lss_symlink
353+ BUILD_BYPRODUCTS "${breakpad_SOURCE_DIR} /src/libbreakpad.a;${breakpad_SOURCE_DIR} /src/client/linux/libbreakpad_client.a"
354+ )
355+
356+ add_library (libbreakpad STATIC IMPORTED GLOBAL )
357+ set_property (TARGET libbreakpad PROPERTY IMPORTED_LOCATION ${breakpad_SOURCE_DIR} /src/libbreakpad.a)
358+ add_library (libbreakpad_client STATIC IMPORTED GLOBAL )
359+ set_property (TARGET libbreakpad_client PROPERTY IMPORTED_LOCATION ${breakpad_SOURCE_DIR} /src/client/linux/libbreakpad_client.a)
360+
361+ include_directories (SYSTEM "${breakpad_SOURCE_DIR} /src" )
362+ add_dependencies (libbreakpad breakpad_project)
363+ add_dependencies (libbreakpad_client breakpad_project)
364+
365+ add_library (breakpad INTERFACE )
366+ target_link_libraries (breakpad INTERFACE libbreakpad libbreakpad_client)
367+ endif (WITH_BREAKPAD)
368+
328369if (WITH_JAEGER)
329370 find_package (thrift 0.13.0 REQUIRED)
330371 include (BuildOpentelemetry)
@@ -481,6 +522,11 @@ if(WITH_JAEGER)
481522 target_link_libraries (common-objs jaeger_base)
482523endif ()
483524
525+ if (WITH_BREAKPAD)
526+ add_dependencies (common-objs breakpad_project)
527+ target_link_libraries (common-objs breakpad)
528+ endif ()
529+
484530CHECK_C_COMPILER_FLAG("-fvar-tracking-assignments" HAS_VTA)
485531add_subdirectory (auth)
486532add_subdirectory (common)
@@ -542,6 +588,10 @@ if(WITH_JAEGER)
542588 list (APPEND ceph_common_deps jaeger_base)
543589endif ()
544590
591+ if (WITH_BREAKPAD)
592+ list (APPEND ceph_common_deps breakpad)
593+ endif ()
594+
545595if (WIN32 )
546596 list (APPEND ceph_common_deps ws2_32 mswsock iphlpapi bcrypt)
547597 list (APPEND ceph_common_deps dlfcn_win32)
@@ -578,6 +628,10 @@ if(WITH_JAEGER)
578628add_dependencies (common jaeger_base)
579629endif ()
580630
631+ if (WITH_BREAKPAD)
632+ add_dependencies (common breakpad_project)
633+ endif ()
634+
581635if (WIN32 )
582636 # Statically building ceph-common on Windows fails. We're temporarily
583637 # reverting this: 22fefb2338cfc4fcb03ece3cbf77aa964a7f17f2
@@ -597,6 +651,10 @@ if(WITH_JAEGER)
597651add_dependencies (ceph-common jaeger_base)
598652endif ()
599653
654+ if (WITH_BREAKPAD)
655+ add_dependencies (ceph-common breakpad_project)
656+ endif ()
657+
600658# appease dpkg-shlibdeps
601659set_target_properties (ceph-common PROPERTIES
602660 SOVERSION 2
0 commit comments