Skip to content

Commit 13ce3f0

Browse files
authored
[build] Integrate backward_cpp to test targets for enabling C++ stack trace (#6697)
1 parent 489205c commit 13ce3f0

File tree

7 files changed

+35
-5
lines changed

7 files changed

+35
-5
lines changed

.github/workflows/testing.yml

+5-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ jobs:
103103
docker exec --user dev check_clang_tidy /home/dev/taichi/.github/workflows/scripts/check_clang_tidy.sh "$CI_SETUP_CMAKE_ARGS"
104104
env:
105105
CR_PAT: ${{ secrets.GITHUB_TOKEN }}
106-
CI_SETUP_CMAKE_ARGS: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DTI_WITH_OPENGL:BOOL=ON -DTI_WITH_CC:BOOL=ON -DTI_WITH_VULKAN:BOOL=ON -DTI_BUILD_TESTS:BOOL=ON
106+
CI_SETUP_CMAKE_ARGS: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DTI_WITH_OPENGL:BOOL=ON -DTI_WITH_CC:BOOL=ON -DTI_WITH_VULKAN:BOOL=ON -DTI_BUILD_TESTS:BOOL=ON -DTI_WITH_BACKTRACE:BOOL=ON
107107

108108
build_and_test_cpu_mac:
109109
name: Build and Test macos (CPU)
@@ -148,6 +148,7 @@ jobs:
148148
-DTI_WITH_CC:BOOL=${{ matrix.with_cc }}
149149
-DTI_WITH_VULKAN:BOOL=ON
150150
-DTI_WITH_C_API=ON
151+
-DTI_WITH_BACKTRACE:BOOL=ON
151152
-DTI_BUILD_TESTS:BOOL=${{ matrix.with_cpp_tests }}
152153
153154
# [DEBUG] Copy this step around to enable debugging inside Github Action instances.
@@ -211,6 +212,7 @@ jobs:
211212
-DTI_WITH_OPENGL:BOOL=ON
212213
-DTI_WITH_CC:BOOL=ON
213214
-DTI_WITH_VULKAN:BOOL=ON
215+
-DTI_WITH_BACKTRACE:BOOL=ON
214216
-DTI_BUILD_TESTS:BOOL=ON
215217
-DTI_WITH_C_API=ON
216218
@@ -293,6 +295,7 @@ jobs:
293295
-DTI_WITH_DX12:BOOL=ON
294296
-DTI_WITH_CC:BOOL=OFF
295297
-DTI_BUILD_TESTS:BOOL=ON
298+
-DTI_WITH_BACKTRACE=ON
296299
-DTI_WITH_C_API=ON
297300
298301
- name: Test
@@ -353,6 +356,7 @@ jobs:
353356
-DTI_WITH_CC:BOOL=OFF
354357
-DTI_WITH_VULKAN:BOOL=ON
355358
-DTI_BUILD_TESTS:BOOL=ON
359+
-DTI_WITH_BACKTRACE:BOOL=ON
356360
-DTI_WITH_C_API=ON
357361
358362
- name: Test

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,6 @@
6262
[submodule "external/DirectX-Headers"]
6363
path = external/DirectX-Headers
6464
url = https://github.com/microsoft/DirectX-Headers.git
65+
[submodule "external/backward_cpp"]
66+
path = external/backward_cpp
67+
url = https://github.com/bombela/backward-cpp.git

CMakeLists.txt

+11
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,14 @@ if(CCACHE_PROGRAM)
5555
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
5656
endif()
5757

58+
# This compiles all the libraries with -fPIC, which is critical to link a static
59+
# library into a shared lib.
60+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
61+
62+
5863
option(USE_LLD "Use lld (from llvm) linker" OFF)
5964
option(USE_MOLD "Use mold (A Modern Linker)" OFF)
65+
option(TI_WITH_BACKTRACE "Use backward-cpp to print out C++ stack trace upon failure" OFF)
6066

6167
if (USE_LLD)
6268
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld")
@@ -122,6 +128,11 @@ option(TI_WITH_PYTHON "Build with Python language binding" ON)
122128
if (TI_WITH_PYTHON AND NOT ANDROID)
123129
include(cmake/PythonNumpyPybind11.cmake)
124130
endif()
131+
132+
if (TI_WITH_BACKTRACE)
133+
add_subdirectory(external/backward_cpp)
134+
endif()
135+
125136
include(cmake/TaichiCXXFlags.cmake)
126137
include(cmake/TaichiCore.cmake)
127138

cmake/TaichiCAPITests.cmake

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ endif()
2626
target_link_libraries(${C_API_TESTS_NAME} PRIVATE taichi_c_api)
2727
target_link_libraries(${C_API_TESTS_NAME} PRIVATE gtest_main)
2828

29+
if (TI_WITH_BACKTRACE)
30+
target_link_libraries(${C_API_TESTS_NAME} PRIVATE ${BACKWARD_ENABLE})
31+
endif()
32+
2933
target_include_directories(${C_API_TESTS_NAME}
3034
PRIVATE
3135
${PROJECT_SOURCE_DIR}

cmake/TaichiCore.cmake

+7-4
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,6 @@ if (TI_WITH_CC)
119119
list(APPEND TAICHI_CORE_SOURCE ${TAICHI_CC_SOURCE})
120120
endif()
121121

122-
# This compiles all the libraries with -fPIC, which is critical to link a static
123-
# library into a shared lib.
124-
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
125-
126122
set(CORE_LIBRARY_NAME taichi_core)
127123
add_library(${CORE_LIBRARY_NAME} OBJECT ${TAICHI_CORE_SOURCE})
128124

@@ -432,6 +428,13 @@ if(TI_WITH_PYTHON)
432428
target_link_options(${CORE_WITH_PYBIND_LIBRARY_NAME} PUBLIC -Wl,--exclude-libs=ALL)
433429
endif()
434430

431+
if (TI_WITH_BACKTRACE)
432+
# Defined by external/backward-cpp:
433+
# This will add libraries, definitions and include directories needed by backward
434+
# by setting each property on the target.
435+
target_link_libraries(${CORE_WITH_PYBIND_LIBRARY_NAME} PRIVATE ${BACKWARD_ENABLE})
436+
endif()
437+
435438
if(TI_WITH_GGUI)
436439
target_compile_definitions(${CORE_WITH_PYBIND_LIBRARY_NAME} PRIVATE -DTI_WITH_GGUI)
437440
target_link_libraries(${CORE_WITH_PYBIND_LIBRARY_NAME} PRIVATE taichi_ui_vulkan)

cmake/TaichiTests.cmake

+4
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ endif()
6060
target_link_libraries(${TESTS_NAME} PRIVATE taichi_core)
6161
target_link_libraries(${TESTS_NAME} PRIVATE gtest_main)
6262

63+
if (TI_WITH_BACKTRACE)
64+
target_link_libraries(${TESTS_NAME} PRIVATE ${BACKWARD_ENABLE})
65+
endif()
66+
6367
if (TI_WITH_OPENGL OR TI_WITH_VULKAN)
6468
target_link_libraries(${TESTS_NAME} PRIVATE gfx_runtime)
6569
endif()

external/backward_cpp

Submodule backward_cpp added at 647eccd

0 commit comments

Comments
 (0)