diff options
| author | Jonas Devlieghere <jonas@devlieghere.com> | 2019-12-08 15:32:57 -0800 |
|---|---|---|
| committer | Jonas Devlieghere <jonas@devlieghere.com> | 2019-12-21 11:28:41 -0800 |
| commit | bf03e17c570171c7a52117fe63ace89d58f328d5 (patch) | |
| tree | 8361b20a3a9569ef8cf70fed5033e24c414e99c7 /lldb/scripts | |
| parent | 2203089a60d826e882e2ccfc5cc5d361b4f91078 (diff) | |
| download | bcm5719-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.txt | 79 | ||||
| -rw-r--r-- | lldb/scripts/lldb_lua.swig | 18 |
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" |

