3 set(CMAKE_INCLUDE_CURRENT_DIR ON)
5 # Set the RPATH of sos so that it can find dependencies without needing to set LD_LIBRARY_PATH
6 # For more information: http://www.cmake.org/Wiki/CMake_RPATH_handling.
8 set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
9 if(CLR_CMAKE_PLATFORM_DARWIN)
10 set(CMAKE_INSTALL_RPATH "@loader_path")
12 set(CMAKE_INSTALL_RPATH "\$ORIGIN")
13 endif(CLR_CMAKE_PLATFORM_DARWIN)
14 endif (CORECLR_SET_RPATH)
16 add_definitions(-DPAL_STDCPP_COMPAT)
18 set(ENABLE_LLDBPLUGIN ${CLR_CMAKE_PLATFORM_UNIX} CACHE BOOL "Enable building the SOS plugin for LLDB.")
19 set(REQUIRE_LLDBPLUGIN ${CLR_CMAKE_PLATFORM_LINUX} CACHE BOOL "Require building the SOS plugin for LLDB.")
22 SET(REQUIRE_LLDBPLUGIN false)
25 if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
26 add_definitions(-D_TARGET_AMD64_=1)
27 add_definitions(-DDBG_TARGET_64BIT=1)
28 add_definitions(-DDBG_TARGET_AMD64=1)
29 add_definitions(-DDBG_TARGET_WIN64=1)
30 add_definitions(-DBIT64)
31 elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
32 add_definitions(-D_TARGET_X86_=1)
33 add_definitions(-DDBG_TARGET_32BIT=1)
34 add_definitions(-DDBG_TARGET_X86=1)
35 elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
36 add_definitions(-D_TARGET_ARM_=1)
37 add_definitions(-DDBG_TARGET_32BIT=1)
38 add_definitions(-DDBG_TARGET_ARM=1)
39 elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
40 add_definitions(-D_TARGET_ARM64_=1)
41 add_definitions(-DDBG_TARGET_64BIT=1)
42 add_definitions(-DDBG_TARGET_ARM64=1)
43 add_definitions(-DDBG_TARGET_WIN64=1)
44 add_definitions(-DBIT64)
45 SET(REQUIRE_LLDBPLUGIN false)
49 set(LLVM_HOST_DIR "$ENV{LLVM_HOME}")
50 set(WITH_LLDB_LIBS "${LLVM_HOST_DIR}/lib" CACHE PATH "Path to LLDB libraries")
51 set(WITH_LLDB_INCLUDES "${LLVM_HOST_DIR}/include" CACHE PATH "Path to LLDB headers")
53 if(NOT ENABLE_LLDBPLUGIN)
57 # Check for LLDB library
58 find_library(LLDB NAMES LLDB lldb lldb-4.0 lldb-3.9 lldb-3.8 lldb-3.7 lldb-3.6 lldb-3.5 PATHS "${WITH_LLDB_LIBS}" PATH_SUFFIXES llvm NO_DEFAULT_PATH)
59 find_library(LLDB NAMES LLDB lldb lldb-4.0 lldb-3.9 lldb-3.8 lldb-3.7 lldb-3.6 lldb-3.5 PATH_SUFFIXES llvm)
60 if(LLDB STREQUAL LLDB-NOTFOUND)
61 if(REQUIRE_LLDBPLUGIN)
62 set(MESSAGE_MODE FATAL_ERROR)
64 set(MESSAGE_MODE WARNING)
66 message(${MESSAGE_MODE} "Cannot find lldb-3.5, lldb-3.6, lldb-3.8, lldb-3.9 or lldb-4.0. Try installing lldb-3.6-dev (or the appropriate package for your platform)")
70 message(STATUS "LLDB: ${LLDB}")
72 # Check for LLDB headers
73 # Multiple versions of LLDB can install side-by-side, so we need to check for lldb in various locations.
74 # If the file in a directory is found the result is stored in the variable and the search will not be repeated unless the variable is cleared.
75 find_path(LLDB_H "lldb/API/LLDB.h" PATHS "${WITH_LLDB_INCLUDES}" NO_DEFAULT_PATH)
76 find_path(LLDB_H "lldb/API/LLDB.h")
78 find_path(LLDB_H "lldb/API/LLDB.h" PATHS "/usr/lib/llvm-3.9/include")
79 find_path(LLDB_H "lldb/API/LLDB.h" PATHS "/usr/lib/llvm-3.8/include")
80 find_path(LLDB_H "lldb/API/LLDB.h" PATHS "/usr/lib/llvm-3.7/include")
81 find_path(LLDB_H "lldb/API/LLDB.h" PATHS "/usr/lib/llvm-3.6/include")
82 find_path(LLDB_H "lldb/API/LLDB.h" PATHS "/usr/lib/llvm-3.5/include")
84 if(LLDB_H STREQUAL LLDB_H-NOTFOUND)
85 if(REQUIRE_LLDBPLUGIN)
86 message(FATAL_ERROR "Cannot find LLDB.h. Try installing lldb-3.6-dev (or the appropriate package for your platform)")
88 message(WARNING "Cannot find LLDB.h Try installing lldb-3.6-dev (or the appropriate package for your platform)")
93 message(STATUS "LLDB_H: ${LLDB_H}")
95 add_compile_options(-Wno-delete-non-virtual-dtor)
97 include_directories(inc)
98 include_directories("${LLDB_H}")
99 include_directories(${CLR_DIR}/src/debug/inc)
100 include_directories(${CLR_DIR}/src/inc)
101 include_directories(${CLR_DIR}/src/coreclr/hosts/inc)
102 include_directories(${CLR_DIR}/src/coreclr/hosts/unixcoreruncommon)
107 setclrpathcommand.cpp
112 if(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED)
115 ${CLR_DIR}/src/coreclr/hosts/unixcorerun/corerun.cpp
116 ${CLR_DIR}/src/coreclr/hosts/unixcoreruncommon/coreruncommon.cpp
118 endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED)
120 _add_library(sosplugin SHARED ${SOURCES})
121 add_dependencies(sosplugin sos)
123 if (CLR_CMAKE_PLATFORM_UNIX)
124 target_link_libraries(sosplugin ${LLDB})
127 # add the install targets
128 install_clr(sosplugin)