diff --git a/.gitmodules b/.gitmodules index cc37f645..7882c2cf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "3rdparty/rapidjson"] path = 3rdparty/rapidjson url = https://github.com/Tencent/rapidjson.git +[submodule "3rdparty/libbacktrace"] + path = 3rdparty/libbacktrace + url = https://github.com/ianlancetaylor/libbacktrace.git diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 79caf4ab..a1ab3fc7 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -1,3 +1,24 @@ file(GLOB_RECURSE RAPIDJSON_SOURCES "${CMAKE_CURRENT_LIST_DIR}/rapidjson/include/*") add_library(rapidjson INTERFACE EXCLUDE_FROM_ALL "${RAPIDJSON_SOURCES}") target_include_directories(rapidjson INTERFACE "${CMAKE_CURRENT_LIST_DIR}/rapidjson/include") + +set(LIBBACKTRACE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/libbacktrace") +set(LIBBACKTRACE_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/libbacktrace") +set(LIBBACKTRACE_INCLUDE_DIR "${LIBBACKTRACE_BUILD_DIR}/include") +set(LIBBACKTRACE_LIBRARY "${LIBBACKTRACE_BUILD_DIR}/.libs/libbacktrace.a") + +add_custom_command( + OUTPUT "${LIBBACKTRACE_LIBRARY}" + COMMAND mkdir -p "${LIBBACKTRACE_BUILD_DIR}" + COMMAND mkdir -p "${LIBBACKTRACE_INCLUDE_DIR}" + COMMAND cp -r "${LIBBACKTRACE_SOURCE_DIR}/*" "${LIBBACKTRACE_BUILD_DIR}" + COMMAND cp "${LIBBACKTRACE_SOURCE_DIR}/backtrace.h" "${LIBBACKTRACE_INCLUDE_DIR}" + COMMAND cd "${LIBBACKTRACE_BUILD_DIR}" && ./configure + COMMAND cd "${LIBBACKTRACE_BUILD_DIR}" && make +) + +add_library(libbacktrace STATIC IMPORTED GLOBAL) +set_target_properties(libbacktrace PROPERTIES + IMPORTED_LOCATION "${LIBBACKTRACE_LIBRARY}" +) +target_include_directories(libbacktrace INTERFACE "${LIBBACKTRACE_INCLUDE_DIR}") diff --git a/3rdparty/libbacktrace b/3rdparty/libbacktrace new file mode 160000 index 00000000..9ae4f4ae --- /dev/null +++ b/3rdparty/libbacktrace @@ -0,0 +1 @@ +Subproject commit 9ae4f4ae4481b1e69d38ed810980d33103544613