summaryrefslogtreecommitdiff
path: root/utils/llvm-symbolizer/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'utils/llvm-symbolizer/CMakeLists.txt')
-rw-r--r--utils/llvm-symbolizer/CMakeLists.txt67
1 files changed, 67 insertions, 0 deletions
diff --git a/utils/llvm-symbolizer/CMakeLists.txt b/utils/llvm-symbolizer/CMakeLists.txt
new file mode 100644
index 000000000..d1f0acd88
--- /dev/null
+++ b/utils/llvm-symbolizer/CMakeLists.txt
@@ -0,0 +1,67 @@
+# Build llvm-symbolizer binary, which will be used as an external symbolizer
+# by sanitizer tools. Later it can probably become another LLVM tool.
+
+set(SYMBOLIZER_SOURCES
+ llvm-symbolizer.cc
+ )
+
+# Append sources of LLVM libs we use.
+append_llvm_sources(SYMBOLIZER_SOURCES
+ LLVMDebugInfo
+ LLVMSupport
+ LLVMObject
+ )
+
+set(SYMBOLIZER_CFLAGS
+ -I${LLVM_MAIN_SRC_DIR}/include
+ -I${LLVM_BINARY_DIR}/include
+ -fPIC
+ -fomit-frame-pointer
+ -O3
+ )
+
+set(SYMBOLIZER_DEFINITIONS
+# __STDC_CONSTANT_MACROS=1
+# __STDC_LIMIT_MACROS=1
+ )
+
+# FIXME: Generalize the following ugly piece in sanitizer_common, symbolizer
+# and asan folders.
+set(SYMBOLIZER_BINARIES)
+if (APPLE)
+ # Build universal binary on Apple.
+ add_executable(llvm-symbolizer.osx ${SYMBOLIZER_SOURCES})
+ set_target_compile_flags(llvm-symbolizer.osx ${SYMBOLIZER_CFLAGS})
+ filter_available_targets(SYMBOLIZER_TARGETS x86_64 i386)
+ set_target_properties(llvm-symbolizer.osx PROPERTIES
+ OSX_ARCHITECTURES "${SYMBOLIZER_TARGETS}")
+ list(APPEND SYMBOLIZER_BINARIES llvm-symbolizer.osx)
+elseif(UNIX)
+ # Assume Linux
+ if(CAN_TARGET_X86_64)
+ add_executable(llvm-symbolizer-x86_64 ${SYMBOLIZER_SOURCES})
+ set_target_compile_flags(llvm-symbolizer-x86_64
+ ${SYMBOLIZER_CFLAGS} ${TARGET_X86_64_CFLAGS})
+ set_property(TARGET llvm-symbolizer-x86_64 APPEND_STRING PROPERTY
+ LINK_FLAGS " ${TARGET_X86_64_CFLAGS}")
+ list(APPEND SYMBOLIZER_BINARIES llvm-symbolizer-x86_64)
+ endif()
+ if(CAN_TARGET_I386)
+ add_executable(llvm-symbolizer-i386 ${SYMBOLIZER_SOURCES})
+ set_target_compile_flags(llvm-symbolizer-i386
+ ${SYMBOLIZER_CFLAGS} ${TARGET_I386_CFLAGS})
+ set_property(TARGET llvm-symbolizer-i386 APPEND_STRING PROPERTY
+ LINK_FLAGS " ${TARGET_I386_CFLAGS}")
+ list(APPEND SYMBOLIZER_BINARIES llvm-symbolizer-i386)
+ endif()
+ # Linux-specific linker flags.
+ set_property(TARGET ${SYMBOLIZER_BINARIES} APPEND_STRING PROPERTY
+ LINK_FLAGS " -lpthread -ldl")
+endif()
+
+set_property(TARGET ${SYMBOLIZER_BINARIES} APPEND PROPERTY
+ COMPILE_DEFINITIONS ${SYMBOLIZER_DEFINITIONS}
+ )
+# FIXME: Setup sane output directories for ${SYMBOLIZER_BINARIES}
+set_target_properties(${SYMBOLIZER_BINARIES} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})