brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · a4cacf8 Raw
81 lines · plain
1if (NOT DEFINED LLDB_RPC_GEN_EXE)2  message(FATAL_ERROR3    "Unable to generate lldb-rpc sources because LLDB_RPC_GEN_EXE is not4    defined. If you are cross-compiling, please build lldb-rpc-gen for your host5    platform.")6endif()7set(lldb_rpc_generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")8set(lldb_rpc_server_generated_source_dir "${lldb_rpc_generated_dir}/server")9 10file(GLOB api_headers ${LLDB_SOURCE_DIR}/include/lldb/API/SB*.h)11# We don't generate SBCommunication12list(REMOVE_ITEM api_headers ${LLDB_SOURCE_DIR}/include/lldb/API/SBCommunication.h)13# SBDefines.h is mostly definitions and forward declarations, nothing to14# generate.15list(REMOVE_ITEM api_headers ${LLDB_SOURCE_DIR}/include/lldb/API/SBDefines.h)16 17# Generate the list of byproducts. Note that we cannot just glob the files in18# the directory with the generated sources because BYPRODUCTS needs to be known19# at configure time but the files are generated at build time.20set(lldb_rpc_gen_byproducts21  ${lldb_rpc_generated_dir}/SBClasses.def22  ${lldb_rpc_generated_dir}/SBAPI.def23  ${lldb_rpc_generated_dir}/lldb.py24  ${lldb_rpc_server_generated_source_dir}/SBAPI.h25)26 27set(lldb_rpc_gen_server_impl_files)28foreach(path ${api_headers})29  get_filename_component(filename_no_ext ${path} NAME_WLE)30 31  set(server_header_file "Server_${filename_no_ext}.h")32  list(APPEND lldb_rpc_gen_byproducts "${lldb_rpc_server_generated_source_dir}/${server_header_file}")33 34  set(server_impl_file "Server_${filename_no_ext}.cpp")35  list(APPEND lldb_rpc_gen_byproducts "${lldb_rpc_server_generated_source_dir}/${server_impl_file}")36  list(APPEND lldb_rpc_gen_server_impl_files "${lldb_rpc_server_generated_source_dir}/${server_impl_file}")37 38endforeach()39 40# Make sure that the clang-resource-dir is set correctly or else the tool will41# fail to run. This is only needed when we do a standalone build.42set(clang_resource_dir_arg)43if (TARGET clang-resource-headers)44  set(clang_resource_headers_dir45    $<TARGET_PROPERTY:clang-resource-headers,INTERFACE_INCLUDE_DIRECTORIES>)46  set(clang_resource_dir_arg --extra-arg="-resource-dir=${clang_resource_headers_dir}/..")47else()48  set(clang_resource_dir_arg --extra-arg="-resource-dir=${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}")49endif()50 51set(sysroot_arg)52if (DEFINED TOOLCHAIN_TARGET_SYSROOTFS)53  set(sysroot_arg --extra-arg="-resource-dir=${TOOLCHAIN_TARGET_SYSROOTFS}")54endif()55 56add_custom_command(OUTPUT ${lldb_rpc_gen_byproducts}57  COMMAND ${CMAKE_COMMAND} -E make_directory58    ${lldb_rpc_generated_dir}59 60  COMMAND ${CMAKE_COMMAND} -E make_directory61    ${lldb_rpc_server_generated_source_dir}62 63  COMMAND ${LLDB_RPC_GEN_EXE}64    -p ${CMAKE_BINARY_DIR}65    --output-dir=${lldb_rpc_generated_dir}66    ${sysroot_arg}67    --extra-arg="-USWIG"68    ${api_headers}69 70  DEPENDS ${LLDB_RPC_GEN_EXE} ${api_headers}71  COMMENT "Generating sources for lldb-rpc-server..."72  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}73)74 75add_custom_target(lldb-rpc-generate-sources76  DEPENDS77  ${lldb_rpc_gen_byproducts}78  lldb-sbapi-dwarf-enums)79 80add_dependencies(lldb-rpc-generate-sources clang-resource-headers)81