summaryrefslogtreecommitdiff
path: root/source/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'source/CMakeLists.txt')
-rw-r--r--source/CMakeLists.txt92
1 files changed, 92 insertions, 0 deletions
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
new file mode 100644
index 0000000000000..f23af477bf89b
--- /dev/null
+++ b/source/CMakeLists.txt
@@ -0,0 +1,92 @@
+include_directories(.)
+
+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 ()
+
+if ( CMAKE_SYSTEM_NAME MATCHES "NetBSD" )
+include_directories(
+ Plugins/Process/POSIX
+ )
+endif ()
+
+
+set(lldbBase_SOURCES
+ lldb.cpp
+ )
+
+if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
+ add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
+ COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
+ ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core
+ > ${LLDB_VERS_GENERATED_FILE}
+ DEPENDS ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
+ ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj)
+ set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
+ # Add this to lldbBase since lldb.cpp uses the symbol defined here.
+ list(APPEND lldbBase_SOURCES ${LLDB_VERS_GENERATED_FILE})
+ add_custom_target(lldbGeneratedVersion
+ DEPENDS ${LLDB_VERS_GENERATED_FILE})
+endif()
+
+add_lldb_library(lldbBase
+ ${lldbBase_SOURCES}
+ )
+
+if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ add_dependencies(lldbBase lldbGeneratedVersion)
+endif()
+
+add_subdirectory(Breakpoint)
+add_subdirectory(Commands)
+add_subdirectory(Core)
+add_subdirectory(DataFormatters)
+add_subdirectory(Expression)
+add_subdirectory(Host)
+add_subdirectory(Initialization)
+add_subdirectory(Interpreter)
+add_subdirectory(Plugins)
+add_subdirectory(Symbol)
+add_subdirectory(Target)
+add_subdirectory(Utility)
+
+# Build API last. Since liblldb needs to link against every other target, it needs
+# those targets to have already been created.
+add_subdirectory(API)
+
+# 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.