summaryrefslogtreecommitdiffstats
path: root/lldb/scripts
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2019-12-08 15:32:57 -0800
committerJonas Devlieghere <jonas@devlieghere.com>2019-12-21 11:28:41 -0800
commitbf03e17c570171c7a52117fe63ace89d58f328d5 (patch)
tree8361b20a3a9569ef8cf70fed5033e24c414e99c7 /lldb/scripts
parent2203089a60d826e882e2ccfc5cc5d361b4f91078 (diff)
downloadbcm5719-llvm-bf03e17c570171c7a52117fe63ace89d58f328d5.tar.gz
bcm5719-llvm-bf03e17c570171c7a52117fe63ace89d58f328d5.zip
[Lldb/Lua] Generate Lua Bindings
This patch uses SWIG to generate the Lua bindings for the SB API. It covers most of the API, but some methods require a type map similar to Python. Discussion on the mailing list: http://lists.llvm.org/pipermail/lldb-dev/2019-December/015812.html Differential revision: https://reviews.llvm.org/D71235
Diffstat (limited to 'lldb/scripts')
-rw-r--r--lldb/scripts/CMakeLists.txt79
-rw-r--r--lldb/scripts/lldb_lua.swig18
2 files changed, 71 insertions, 26 deletions
diff --git a/lldb/scripts/CMakeLists.txt b/lldb/scripts/CMakeLists.txt
index 5b86956f2a9..8fa4e5f7891 100644
--- a/lldb/scripts/CMakeLists.txt
+++ b/lldb/scripts/CMakeLists.txt
@@ -27,31 +27,58 @@ else()
set(DARWIN_EXTRAS "")
endif()
-add_custom_command(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lldb.py
- DEPENDS ${SWIG_SOURCES}
- DEPENDS ${SWIG_INTERFACES}
- DEPENDS ${SWIG_HEADERS}
- COMMAND ${SWIG_EXECUTABLE}
- -c++
- -shadow
- -python
- -features autodoc
- -threads
- -I${LLDB_SOURCE_DIR}/include
- -I${CMAKE_CURRENT_SOURCE_DIR}
- -D__STDC_LIMIT_MACROS
- -D__STDC_CONSTANT_MACROS
- ${DARWIN_EXTRAS}
- -outdir ${CMAKE_CURRENT_BINARY_DIR}
- -o ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
- ${LLDB_SOURCE_DIR}/scripts/lldb.swig
- VERBATIM
- COMMENT "Builds LLDB Python wrapper")
-
-add_custom_target(swig_wrapper ALL DEPENDS
- ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/lldb.py
+set(SWIG_COMMON_FLAGS
+ -c++
+ -features autodoc
+ -I${LLDB_SOURCE_DIR}/include
+ -I${CMAKE_CURRENT_SOURCE_DIR}
+ -D__STDC_LIMIT_MACROS
+ -D__STDC_CONSTANT_MACROS
+ ${DARWIN_EXTRAS}
+ -outdir ${CMAKE_CURRENT_BINARY_DIR}
)
+
+if (LLDB_ENABLE_PYTHON)
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lldb.py
+ DEPENDS ${SWIG_SOURCES}
+ DEPENDS ${SWIG_INTERFACES}
+ DEPENDS ${SWIG_HEADERS}
+ COMMAND ${SWIG_EXECUTABLE}
+ ${SWIG_COMMON_FLAGS}
+ -c++
+ -shadow
+ -python
+ -threads
+ -o ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
+ ${LLDB_SOURCE_DIR}/scripts/lldb.swig
+ VERBATIM
+ COMMENT "Builds LLDB Python wrapper")
+
+ add_custom_target(swig_wrapper ALL DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/lldb.py
+ )
+endif()
+
+if (LLDB_ENABLE_LUA)
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapLua.cpp
+ DEPENDS ${SWIG_SOURCES}
+ DEPENDS ${SWIG_INTERFACES}
+ DEPENDS ${SWIG_HEADERS}
+ COMMAND ${SWIG_EXECUTABLE}
+ ${SWIG_COMMON_FLAGS}
+ -lua
+ -w503
+ -o ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapLua.cpp
+ ${LLDB_SOURCE_DIR}/scripts/lldb_lua.swig
+ VERBATIM
+ COMMENT "Builds LLDB Lua wrapper")
+
+ add_custom_target(swig_wrapper_lua ALL DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapLua.cpp
+ )
+endif()
diff --git a/lldb/scripts/lldb_lua.swig b/lldb/scripts/lldb_lua.swig
new file mode 100644
index 00000000000..85edefff76f
--- /dev/null
+++ b/lldb/scripts/lldb_lua.swig
@@ -0,0 +1,18 @@
+/*
+ lldb.swig
+
+ This is the input file for SWIG, to create the appropriate C++ wrappers and
+ functions for various scripting languages, to enable them to call the
+ liblldb Script Bridge functions.
+*/
+
+%module lldb
+
+%include "./headers.swig"
+
+%{
+using namespace lldb_private;
+using namespace lldb;
+%}
+
+%include "./interfaces.swig"
OpenPOWER on IntegriCloud