summaryrefslogtreecommitdiffstats
path: root/lldb/source/CMakeLists.txt
blob: b4421fc68c2f85ced27293554e36e32e02c71e8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
include_directories(.)

if (__ANDROID_NDK__ OR (CMAKE_SYSTEM_NAME MATCHES "Windows"))
  set(LLDB_DEFAULT_DISABLE_LIBEDIT 1)
else()
  set(LLDB_DEFAULT_DISABLE_LIBEDIT 0)
endif ()

set(LLDB_DISABLE_LIBEDIT ${LLDB_DEFAULT_DISABLE_LIBEDIT} CACHE BOOL "Disables the use of editline.")
if (LLDB_DISABLE_LIBEDIT)
  add_definitions( -DLLDB_DISABLE_LIBEDIT )
endif()

if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
include_directories(
  Plugins/Process/Linux
  Plugins/Process/POSIX
  )
endif ()

if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
include_directories(
  Plugins/Process/FreeBSD
  Plugins/Process/POSIX
  )
endif ()

# Need to export the API in the liblldb.dll for Windows
# The lldbAPI source files are added directly in liblldb
if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
  add_subdirectory(API)
endif ()

add_subdirectory(Breakpoint)
add_subdirectory(Commands)
add_subdirectory(Core)
add_subdirectory(DataFormatters)
add_subdirectory(Expression)
add_subdirectory(Host)
add_subdirectory(Interpreter)
add_subdirectory(Plugins)
add_subdirectory(Symbol)
add_subdirectory(Target)
add_subdirectory(Utility)

include(../cmake/LLDBDependencies.cmake)

if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
add_definitions( -DEXPORT_LIBLLDB )
endif()

# Need to export the API in the liblldb.dll for Windows
# The lldbAPI source files are added directly in liblldb
if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
# On Non-Windows, the corresponding file list is maintained in
# source\API\CMakeLists.txt.  When editing this list, do not forget to make a
# corresponding change in that file as well (when appropriate).
add_lldb_library(liblldb SHARED
  lldb.cpp
  lldb-log.cpp
  API/SBAddress.cpp
  API/SBBlock.cpp
  API/SBBreakpoint.cpp
  API/SBBreakpointLocation.cpp
  API/SBBroadcaster.cpp
  API/SBCommandInterpreter.cpp
  API/SBCommandReturnObject.cpp
  API/SBCommunication.cpp
  API/SBCompileUnit.cpp
  API/SBData.cpp
  API/SBDebugger.cpp
  API/SBDeclaration.cpp
  API/SBError.cpp
  API/SBEvent.cpp
  API/SBExecutionContext.cpp
  API/SBExpressionOptions.cpp
  API/SBFileSpec.cpp
  API/SBFileSpecList.cpp
  API/SBFrame.cpp
  API/SBFunction.cpp
  API/SBHostOS.cpp
  API/SBInstruction.cpp
  API/SBInstructionList.cpp
  API/SBLineEntry.cpp
  API/SBListener.cpp
  API/SBModule.cpp
  API/SBModuleSpec.cpp
  API/SBPlatform.cpp
  API/SBProcess.cpp
  API/SBQueue.cpp
  API/SBQueueItem.cpp
  API/SBSection.cpp
  API/SBSourceManager.cpp
  API/SBStream.cpp
  API/SBStringList.cpp
  API/SBSymbol.cpp
  API/SBSymbolContext.cpp
  API/SBSymbolContextList.cpp
  API/SBTarget.cpp
  API/SBThread.cpp
  API/SBThreadPlan.cpp
  API/SBThreadCollection.cpp
  API/SBType.cpp
  API/SBTypeCategory.cpp
  API/SBTypeEnumMember.cpp
  API/SBTypeFilter.cpp
  API/SBTypeFormat.cpp
  API/SBTypeNameSpecifier.cpp
  API/SBTypeSummary.cpp
  API/SBTypeSynthetic.cpp
  API/SBUnixSignals.cpp
  API/SBValue.cpp
  API/SBValueList.cpp
  API/SBWatchpoint.cpp
  Host/Windows/getopt/GetOptInc.cpp
  ${LLDB_WRAP_PYTHON}
  ${LLDB_VERS_GENERATED_FILE}
  )
else ()
add_lldb_library(liblldb SHARED
  lldb.cpp
  lldb-log.cpp
  ${LLDB_WRAP_PYTHON}
  ${LLDB_VERS_GENERATED_FILE}
  )
endif ()

if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set_target_properties(liblldb
  PROPERTIES
  OUTPUT_NAME liblldb
  VERSION ${LLDB_VERSION}
  )
else()
set_target_properties(liblldb
  PROPERTIES
  OUTPUT_NAME lldb
  VERSION ${LLDB_VERSION}
  )
endif()

if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
  add_dependencies(liblldb swig_wrapper)
endif()
target_link_libraries(liblldb ${cmake_2_8_12_PRIVATE} ${LLDB_SYSTEM_LIBS})

# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
# such will not work on Windows.
if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
  execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
                  OUTPUT_VARIABLE LLDB_REVISION)
  if ( LLDB_REVISION )
    string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
  endif()

  execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
                  OUTPUT_VARIABLE LLDB_REPOSITORY)
  if ( LLDB_REPOSITORY )
    # Replace newline characters with spaces
    string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})

    # Remove trailing spaces
    string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
  endif()

  set_property(
    SOURCE lldb.cpp
    PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
endif ()
# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
#        revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.

if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION )
	# Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows)
	if ( NOT LLDB_DISABLE_PYTHON )
	    add_custom_command( TARGET liblldb
	        POST_BUILD
            DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py
	        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py --buildConfig=${CMAKE_BUILD_TYPE} "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--prefix=${CMAKE_BINARY_DIR}" "--cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}" -m
	        COMMENT "Python script sym-linking LLDB Python API")
	endif ()
endif ()

install(TARGETS liblldb
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
  ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
OpenPOWER on IntegriCloud