xref: /openbsd-src/gnu/llvm/lldb/bindings/lua/CMakeLists.txt (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1add_custom_command(
2  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapLua.cpp
3  DEPENDS ${SWIG_SOURCES}
4  DEPENDS ${SWIG_INTERFACES}
5  DEPENDS ${SWIG_HEADERS}
6  COMMAND ${SWIG_EXECUTABLE}
7      ${SWIG_COMMON_FLAGS}
8      -I${CMAKE_CURRENT_SOURCE_DIR}
9      -lua
10      -w503
11      -outdir ${CMAKE_CURRENT_BINARY_DIR}
12      -o ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapLua.cpp
13      ${CMAKE_CURRENT_SOURCE_DIR}/lua.swig
14  VERBATIM
15  COMMENT "Building LLDB Lua wrapper")
16
17add_custom_target(swig_wrapper_lua ALL DEPENDS
18  ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapLua.cpp
19)
20
21function(create_lua_package swig_target working_dir pkg_dir)
22  cmake_parse_arguments(ARG "NOINIT" "" "FILES" ${ARGN})
23  add_custom_command(TARGET ${swig_target} POST_BUILD VERBATIM
24    COMMAND ${CMAKE_COMMAND} -E make_directory ${pkg_dir}
25    WORKING_DIRECTORY ${working_dir})
26endfunction()
27
28function(finish_swig_lua swig_target lldb_lua_bindings_dir lldb_lua_target_dir)
29  add_custom_target(${swig_target} ALL VERBATIM
30    COMMAND ${CMAKE_COMMAND} -E make_directory ${lldb_lua_target_dir}
31    DEPENDS swig_wrapper_lua
32    COMMENT "LLDB Lua API")
33  if(LLDB_BUILD_FRAMEWORK)
34    set(LIBLLDB_SYMLINK_DEST "${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/LLDB")
35  else()
36    set(LIBLLDB_SYMLINK_DEST "${LLVM_SHLIB_OUTPUT_INTDIR}/liblldb${CMAKE_SHARED_LIBRARY_SUFFIX}")
37  endif()
38  if(WIN32)
39    if(CMAKE_BUILD_TYPE STREQUAL Debug)
40      set(LIBLLDB_SYMLINK_OUTPUT_FILE "_lldb_d.pyd")
41    else()
42      set(LIBLLDB_SYMLINK_OUTPUT_FILE "_lldb.pyd")
43    endif()
44  else()
45    set(LIBLLDB_SYMLINK_OUTPUT_FILE "lldb.so")
46  endif()
47  create_relative_symlink(${swig_target} ${LIBLLDB_SYMLINK_DEST}
48                          ${lldb_lua_target_dir} ${LIBLLDB_SYMLINK_OUTPUT_FILE})
49  set(lldb_lua_library_target "${swig_target}-library")
50  add_custom_target(${lldb_lua_library_target})
51  add_dependencies(${lldb_lua_library_target} ${swig_target})
52
53  # Ensure we do the Lua post-build step when building lldb.
54  add_dependencies(lldb ${swig_target})
55
56  if(LLDB_BUILD_FRAMEWORK)
57    set(LLDB_LUA_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Resources/Python)
58  else()
59    set(LLDB_LUA_INSTALL_PATH ${LLDB_LUA_RELATIVE_PATH})
60  endif()
61  install(DIRECTORY ${lldb_lua_target_dir}/
62          DESTINATION ${LLDB_LUA_INSTALL_PATH}
63          COMPONENT ${lldb_lua_library_target})
64
65  set(lldb_lua_library_install_target "install-${lldb_lua_library_target}")
66  if (NOT LLVM_ENABLE_IDE)
67    add_llvm_install_targets(${lldb_lua_library_install_target}
68                            COMPONENT ${lldb_lua_library_target}
69                            DEPENDS ${lldb_lua_library_target})
70  endif()
71endfunction()
72