1098 lines · plain
1# This file is licensed under the Apache License v2.0 with LLVM Exceptions.2# See https://llvm.org/LICENSE.txt for license information.3# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception4 5load("@bazel_skylib//lib:selects.bzl", "selects")6load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")7load("@bazel_skylib//rules:expand_template.bzl", "expand_template")8load("@build_bazel_apple_support//rules:apple_genrule.bzl", "apple_genrule")9load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_import", "cc_library", "objc_library")10load("@rules_python//python:defs.bzl", "py_binary")11load("//:vars.bzl", "LLVM_VERSION_MAJOR", "LLVM_VERSION_MINOR", "LLVM_VERSION_PATCH", "LLVM_VERSION_SUFFIX", "PACKAGE_VERSION")12load("//lldb/source/Plugins:plugin_config.bzl", "DEFAULT_PLUGINS", "DEFAULT_SCRIPT_PLUGINS", "OBJCPP_COPTS")13load("//mlir:build_defs.bzl", "cc_headers_only")14load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library")15 16package(17 default_visibility = ["//visibility:public"],18 features = ["layering_check"],19)20 21licenses(["notice"])22 23exports_files([24 "LICENSE.TXT",25 "source/API/liblldb-private.exports",26 "source/API/liblldb.exports",27])28 29bool_flag(30 name = "enable_curses",31 build_setting_default = False,32)33 34config_setting(35 name = "curses_enabled_setting",36 flag_values = {":enable_curses": "true"},37)38 39selects.config_setting_group(40 name = "curses_enabled",41 match_any = [42 ":curses_enabled_setting",43 "@platforms//os:macos",44 ],45)46 47bool_flag(48 name = "enable_libedit",49 build_setting_default = False,50)51 52config_setting(53 name = "libedit_enabled_setting",54 flag_values = {":enable_libedit": "true"},55)56 57selects.config_setting_group(58 name = "libedit_enabled",59 match_any = [60 ":libedit_enabled_setting",61 "@platforms//os:macos",62 ],63)64 65selects.config_setting_group(66 name = "needs_libbsd",67 match_all = [68 ":libedit_enabled_setting",69 "@platforms//os:linux",70 ],71)72 73_VERSION_SUBSTITUTIONS = {74 "@LLDB_VERSION@": PACKAGE_VERSION,75 "@LLDB_VERSION_MAJOR@": LLVM_VERSION_MAJOR,76 "@LLDB_VERSION_MINOR@": LLVM_VERSION_MINOR,77 "@LLDB_VERSION_PATCH@": LLVM_VERSION_PATCH,78 "@LLDB_VERSION_SUFFIX@": LLVM_VERSION_SUFFIX,79 '#cmakedefine LLDB_FULL_VERSION_STRING "@LLDB_FULL_VERSION_STRING@"': "/* #undef LLDB_FULL_VERSION_STRING */",80}81 82genrule(83 name = "vcs_version_gen",84 outs = ["VCSVersion.inc"],85 cmd = "echo '#undef LLDB_REVISION' >> $@\n" +86 "echo '#undef LLDB_REPOSITORY' >> $@\n",87)88 89expand_template(90 name = "version_inc_gen",91 out = "Version/Version.inc",92 substitutions = _VERSION_SUBSTITUTIONS,93 template = "include/lldb/Version/Version.inc.in",94)95 96cc_library(97 name = "Version",98 srcs = [99 "source/Version/Version.cpp",100 ":vcs_version_gen",101 ":version_inc_gen",102 ],103 hdrs = ["include/lldb/Version/Version.h"],104 features = ["-layering_check"], # Version.inc breaks this unintentionally105 includes = ["include"],106 deps = ["//clang:basic"],107)108 109expand_template(110 name = "ConfigHeader",111 out = "include/lldb/Host/Config.h",112 substitutions = {113 "#cmakedefine01 HAVE_PTSNAME_R": "#define HAVE_PTSNAME_R 1",114 "#cmakedefine01 LLDB_ENABLE_TERMIOS": "#define LLDB_ENABLE_TERMIOS 1",115 116 # TODO: Add LZMA support by including the library in bazel117 "#cmakedefine01 LLDB_ENABLE_LZMA": "#define LLDB_ENABLE_LZMA 0",118 119 # TODO: lua support120 "#cmakedefine01 LLDB_ENABLE_LUA": "#define LLDB_ENABLE_LUA 0",121 122 # TODO: curl support123 "#cmakedefine01 LLVM_ENABLE_CURL": "#define LLVM_ENABLE_CURL 0",124 125 # TODO: python support126 # Note this substitution has to be defined before LLDB_ENABLE_PYTHON.127 # Otherwise it will get replaced to 0_LIMITED_API.128 "#cmakedefine01 LLDB_ENABLE_PYTHON_LIMITED_API": "#define LLDB_ENABLE_PYTHON_LIMITED_API 0",129 "#cmakedefine01 LLDB_ENABLE_PYTHON": "#define LLDB_ENABLE_PYTHON 0",130 # Only enabled by default on Windows131 "#cmakedefine01 LLDB_EMBED_PYTHON_HOME": "#define LLDB_EMBED_PYTHON_HOME 0",132 # Only used if LLDB_EMBED_PYTHON_HOME is true133 "#cmakedefine LLDB_PYTHON_HOME R\"(${LLDB_PYTHON_HOME})\"": "#define LLDB_PYTHON_HOME \"\"",134 135 # Unsupported136 "#cmakedefine01 CURSES_HAVE_NCURSES_CURSES_H": "#define CURSES_HAVE_NCURSES_CURSES_H 0",137 "#cmakedefine01 LLDB_ENABLE_FBSDVMCORE": "#define LLDB_ENABLE_FBSDVMCORE 0",138 139 # Defaults that could be configurable if needed140 "#cmakedefine01 LLDB_ENABLE_POSIX": "#define LLDB_ENABLE_POSIX 1",141 "#cmakedefine LLDB_GLOBAL_INIT_DIRECTORY R\"(${LLDB_GLOBAL_INIT_DIRECTORY})\"": "#define LLDB_GLOBAL_INIT_DIRECTORY \"\"",142 "${LLDB_INSTALL_LIBDIR_BASENAME}": "lib",143 "${LLDB_BUG_REPORT_URL}": "",144 } | select({145 "@platforms//os:macos": {146 "#cmakedefine01 HAVE_LIBCOMPRESSION": "#define HAVE_LIBCOMPRESSION 1",147 "#cmakedefine01 HAVE_NR_PROCESS_VM_READV": "#define HAVE_NR_PROCESS_VM_READV 0",148 "#cmakedefine01 HAVE_PPOLL": "#define HAVE_PPOLL 0",149 "#cmakedefine01 HAVE_PROCESS_VM_READV": "#define HAVE_PROCESS_VM_READV 0",150 "#cmakedefine01 HAVE_SYS_EVENT_H": "#define HAVE_SYS_EVENT_H 1",151 "#cmakedefine01 LLDB_ENABLE_LIBXML2": "#define LLDB_ENABLE_LIBXML2 1",152 "#cmakedefine01 LLDB_HAVE_EL_RFUNC_T": "#define LLDB_HAVE_EL_RFUNC_T 0",153 },154 "@platforms//os:linux": {155 "#cmakedefine01 HAVE_LIBCOMPRESSION": "#define HAVE_LIBCOMPRESSION 0",156 "#cmakedefine01 HAVE_NR_PROCESS_VM_READV": "#define HAVE_NR_PROCESS_VM_READV 1",157 "#cmakedefine01 HAVE_PPOLL": "#define HAVE_PPOLL 1",158 "#cmakedefine01 HAVE_PROCESS_VM_READV": "#define HAVE_PROCESS_VM_READV 1",159 "#cmakedefine01 HAVE_SYS_EVENT_H": "#define HAVE_SYS_EVENT_H 0",160 "#cmakedefine01 LLDB_ENABLE_LIBXML2": "#define LLDB_ENABLE_LIBXML2 0",161 "#cmakedefine01 LLDB_HAVE_EL_RFUNC_T": "#define LLDB_HAVE_EL_RFUNC_T 1",162 },163 }) | select({164 ":curses_enabled": {165 "#cmakedefine01 LLDB_ENABLE_CURSES": "#define LLDB_ENABLE_CURSES 1",166 },167 "//conditions:default": {168 "#cmakedefine01 LLDB_ENABLE_CURSES": "#define LLDB_ENABLE_CURSES 0",169 },170 }) | select({171 ":libedit_enabled": {172 "#cmakedefine01 LLDB_EDITLINE_USE_WCHAR": "#define LLDB_EDITLINE_USE_WCHAR 1",173 "#cmakedefine01 LLDB_ENABLE_LIBEDIT": "#define LLDB_ENABLE_LIBEDIT 1",174 },175 "//conditions:default": {176 "#cmakedefine01 LLDB_EDITLINE_USE_WCHAR": "#define LLDB_EDITLINE_USE_WCHAR 0",177 "#cmakedefine01 LLDB_ENABLE_LIBEDIT": "#define LLDB_ENABLE_LIBEDIT 0",178 },179 }),180 template = "include/lldb/Host/Config.h.cmake",181)182 183cc_library(184 name = "Config",185 hdrs = [":ConfigHeader"],186 include_prefix = "lldb/Host",187)188 189cc_binary(190 name = "lldb-tblgen",191 srcs = glob([192 "utils/TableGen/*.cpp",193 "utils/TableGen/*.h",194 ]),195 deps = [196 "//llvm:CodeGenTypes",197 "//llvm:Support",198 "//llvm:TableGen",199 "//llvm:TargetParser",200 "//llvm:config",201 ],202)203 204py_binary(205 name = "generate-sbapi-dwarf-enum",206 srcs = ["scripts/generate-sbapi-dwarf-enum.py"],207)208 209genrule(210 name = "lldb-sbapi-dwarf-enums",211 srcs = ["//llvm:include/llvm/BinaryFormat/Dwarf.def"],212 outs = ["include/lldb/API/SBLanguages.h"],213 cmd = "$(location :generate-sbapi-dwarf-enum) $(location //llvm:include/llvm/BinaryFormat/Dwarf.def) --output $@",214 tools = [":generate-sbapi-dwarf-enum"],215)216 217cc_library(218 name = "API",219 srcs = glob([220 "source/API/**/*.cpp",221 "source/API/**/*.h",222 ]),223 hdrs = glob(["include/lldb/API/**/*.h"]) + [":lldb-sbapi-dwarf-enums"],224 includes = ["include"],225 deps = [226 ":Breakpoint",227 ":Commands",228 ":Core",229 ":DataFormatters",230 ":Expression",231 ":Headers",232 ":Host",233 ":Initialization",234 ":InterpreterHeaders",235 ":Symbol",236 ":SymbolHeaders",237 ":Target",238 ":TargetHeaders",239 ":Utility",240 ":Version",241 "//lldb/source/Plugins:PluginExpressionParserClang",242 "//lldb/source/Plugins:PluginExpressionParserClangHeaders",243 "//lldb/source/Plugins:PluginsConfig",244 "//llvm:AllTargetsDisassemblers",245 "//llvm:ExecutionEngine",246 "//llvm:MCJIT",247 "//llvm:Support",248 "//llvm:config",249 ] + [250 "//lldb/source/Plugins:Plugin{}".format(x)251 for x in DEFAULT_PLUGINS + DEFAULT_SCRIPT_PLUGINS252 ] + select({253 "@platforms//os:macos": [254 "//lldb/source/Plugins:PluginProcessMacOSXKernel",255 "//lldb/source/Plugins:PluginSymbolLocatorDebugSymbols",256 "//lldb/source/Plugins:PluginSymbolVendorMacOSX",257 ],258 "@platforms//os:linux": [259 "//lldb/source/Plugins:PluginProcessLinux",260 ],261 "//conditions:default": [],262 }),263 alwayslink = True,264)265 266cc_library(267 name = "Breakpoint",268 srcs = glob(["source/Breakpoint/**/*.cpp"]),269 hdrs = glob(["include/lldb/Breakpoint/**/*.h"]),270 includes = ["include"],271 deps = [272 ":Core",273 ":DataFormattersHeaders",274 ":Expression",275 ":Headers",276 ":InterpreterHeaders",277 ":SymbolHeaders",278 ":TargetHeaders",279 ":Utility",280 "//llvm:Support",281 ],282)283 284cc_library(285 name = "DataFormatters",286 srcs = glob([287 "source/DataFormatters/**/*.cpp",288 "source/DataFormatters/**/*.h",289 ]),290 hdrs = glob(["include/lldb/DataFormatters/**/*.h"]),291 includes = ["include"],292 textual_hdrs = glob(["source/DataFormatters/**/*.def"]),293 deps = [294 ":CoreHeaders",295 ":Headers",296 ":InterpreterHeaders",297 ":SymbolHeaders",298 ":TargetHeaders",299 ":Utility",300 "//llvm:Support",301 "//llvm:Telemetry",302 ],303)304 305cc_library(306 name = "Expression",307 srcs = glob(["source/Expression/**/*.cpp"]),308 hdrs = glob(["include/lldb/Expression/**/*.h"]) + [":lldb-sbapi-dwarf-enums"],309 includes = ["include"],310 deps = [311 ":Core",312 ":Headers",313 ":Host",314 ":InterpreterHeaders",315 ":SymbolHeaders",316 ":TargetHeaders",317 ":Utility",318 "//lldb/source/Plugins:PluginSymbolFileDWARFHeaders",319 "//llvm:BinaryFormat",320 "//llvm:Core",321 "//llvm:DebugInfoDWARF",322 "//llvm:DebugInfoDWARFLowLevel",323 "//llvm:ExecutionEngine",324 "//llvm:Support",325 ],326)327 328cc_library(329 name = "Initialization",330 srcs = glob(["source/Initialization/**/*.cpp"]),331 hdrs = glob(["include/lldb/Initialization/**/*.h"]),332 includes = ["include"],333 deps = [334 ":Core",335 ":Headers",336 ":Host",337 ":TargetHeaders",338 ":Utility",339 ":Version",340 "//lldb/source/Plugins:PluginProcessGDBRemote",341 "//lldb/source/Plugins:PluginProcessPOSIX",342 "//llvm:Support",343 ],344)345 346gentbl_cc_library(347 name = "InterpreterProperties",348 strip_include_prefix = "source/Interpreter",349 tbl_outs = {350 "source/Interpreter/InterpreterProperties.inc": ["-gen-lldb-property-defs"],351 "source/Interpreter/InterpreterPropertiesEnum.inc": ["-gen-lldb-property-enum-defs"],352 },353 tblgen = ":lldb-tblgen",354 td_file = "source/Interpreter/InterpreterProperties.td",355 deps = [":CoreTdFiles"],356)357 358cc_library(359 name = "APIHeaders",360 hdrs = glob(["include/lldb/API/**/*.h"]),361 includes = ["include"],362)363 364cc_library(365 name = "InterpreterHeaders",366 hdrs = glob(["include/lldb/Interpreter/**/*.h"]),367 includes = ["include"],368 deps = [":APIHeaders"],369)370 371cc_library(372 name = "BreakpointHeaders",373 hdrs = glob(["include/lldb/Breakpoint/**/*.h"]),374 includes = ["include"],375)376 377cc_library(378 name = "ExpressionHeaders",379 hdrs = glob(["include/lldb/Expression/**/*.h"]) + [":lldb-sbapi-dwarf-enums"],380 includes = ["include"],381 deps = ["//llvm:ExecutionEngine"],382)383 384cc_library(385 name = "DataFormattersHeaders",386 hdrs = glob(["include/lldb/DataFormatters/**/*.h"]),387 includes = ["include"],388)389 390cc_library(391 name = "Interpreter",392 srcs = glob(["source/Interpreter/**/*.cpp"]),393 deps = [394 ":API",395 ":Commands",396 ":Core",397 ":DataFormatters",398 ":Headers",399 ":Host",400 ":InterpreterHeaders",401 ":InterpreterProperties",402 ":SymbolHeaders",403 ":TargetHeaders",404 ":Utility",405 "//llvm:Support",406 "//llvm:Telemetry",407 ],408)409 410td_library(411 name = "CommandsTdFiles",412 srcs = glob(["source/Commands/**/*.td"]),413)414 415gentbl_cc_library(416 name = "CommandOptions",417 strip_include_prefix = "source/Commands",418 tbl_outs = {"source/Commands/CommandOptions.inc": ["-gen-lldb-option-defs"]},419 tblgen = ":lldb-tblgen",420 td_file = "source/Commands/Options.td",421 deps = [":CommandsTdFiles"],422)423 424cc_library(425 name = "Commands",426 srcs = glob(["source/Commands/**/*.cpp"]),427 hdrs = glob(["source/Commands/**/*.h"]),428 includes = ["source"],429 deps = [430 ":Breakpoint",431 ":CommandOptions",432 ":Core",433 ":DataFormatters",434 ":Expression",435 ":Headers",436 ":Host",437 ":InterpreterHeaders",438 ":SymbolHeaders",439 ":Target",440 ":TargetHeaders",441 ":Utility",442 ":Version",443 "//clang:codegen",444 "//clang:driver",445 "//clang:frontend",446 "//clang:serialization",447 "//llvm:Support",448 ],449)450 451cc_library(452 name = "SymbolHeaders",453 hdrs = glob(["include/lldb/Symbol/**/*.h"]),454 includes = ["include"],455)456 457cc_library(458 name = "Symbol",459 srcs = glob(["source/Symbol/**/*.cpp"]),460 deps = [461 ":Core",462 ":Expression",463 ":Headers",464 ":Host",465 ":SymbolHeaders",466 ":TargetHeaders",467 ":Utility",468 ":UtilityPrivateHeaders",469 "//llvm:BinaryFormat",470 "//llvm:DebugInfo",471 "//llvm:DebugInfoDWARF",472 "//llvm:DebugInfoDWARFLowLevel",473 "//llvm:Support",474 ],475)476 477cc_library(478 name = "HostMacOSXHeaders",479 hdrs = glob([480 "include/lldb/Host/*.h",481 "include/lldb/Host/macosx/*.h",482 "include/lldb/Host/posix/*.h",483 ]),484 includes = ["include"],485 deps = [":UtilityHeaders"],486)487 488cc_library(489 name = "HostMacOSXPrivateHeaders",490 hdrs = glob([491 "source/Host/macosx/cfcpp/*.h",492 "source/Host/macosx/objcxx/*.h",493 ]),494 includes = ["source"],495 tags = ["nobuildkite"],496 target_compatible_with = select({497 "@platforms//os:macos": [],498 "//conditions:default": ["@platforms//:incompatible"],499 }),500 deps = [":UtilityHeaders"],501)502 503objc_library(504 name = "HostMacOSXObjCXX",505 copts = OBJCPP_COPTS,506 non_arc_srcs = glob(["source/Host/macosx/objcxx/*.mm"]),507 tags = ["nobuildkite"],508 target_compatible_with = select({509 "@platforms//os:macos": [],510 "//conditions:default": ["@platforms//:incompatible"],511 }),512 deps = [513 ":Headers",514 ":HostMacOSXHeaders",515 ":HostMacOSXPrivateHeaders",516 ":UtilityHeaders",517 "//llvm:Support",518 "//llvm:TargetParser",519 ],520)521 522cc_library(523 name = "Host",524 srcs = glob([525 "source/Host/common/**/*.cpp",526 ]) + select({527 "@platforms//os:linux": glob(528 [529 "source/Host/posix/**/*.cpp",530 "source/Host/linux/**/*.cpp",531 ],532 exclude = ["source/Host/linux/android/**/*.cpp"],533 ),534 "@platforms//os:macos": glob(535 [536 "source/Host/macosx/cfcpp/*.cpp",537 "source/Host/posix/**/*.cpp",538 ],539 ),540 }),541 hdrs = [":ConfigHeader"] + glob([542 "include/lldb/Host/*.h",543 "include/lldb/Host/common/*.h",544 ]) + select({545 "@platforms//os:macos": glob([546 "include/lldb/Host/macosx/*.h",547 "include/lldb/Host/posix/*.h",548 ]),549 "@platforms//os:linux": glob([550 "include/lldb/Host/linux/*.h",551 "include/lldb/Host/posix/*.h",552 ]),553 }),554 features = ["-layering_check"], # histedit.h breaks this.555 includes = ["include"],556 # TODO: Move this to Config library when https://github.com/bazelbuild/bazel/issues/21884 is fixed557 linkopts = select({558 "@platforms//os:macos": [559 "-lcompression",560 "-lxml2",561 "-Wl,-framework,CoreServices",562 "-Wl,-framework,Security",563 ],564 "//conditions:default": [],565 }) + select({566 ":curses_enabled": [567 "-lcurses",568 "-lpanel",569 ],570 "//conditions:default": [],571 }) + select({572 ":libedit_enabled": [573 "-ledit",574 ],575 "//conditions:default": [],576 }) + select({577 ":needs_libbsd": [578 "-lbsd",579 ],580 "//conditions:default": [],581 }),582 deps = [583 ":Headers",584 ":UtilityHeaders",585 "//llvm:Object",586 "//llvm:Support",587 "//llvm:TargetParser",588 "//llvm:config",589 ] + select({590 "@platforms//os:macos": [591 ":HostMacOSXObjCXX",592 ":HostMacOSXPrivateHeaders",593 ],594 "//conditions:default": [],595 }),596)597 598cc_headers_only(599 name = "HostHeaders",600 src = ":Host",601)602 603td_library(604 name = "CoreTdFiles",605 srcs = glob([606 "source/Core/**/*.td",607 "include/lldb/Core/*.td",608 ]),609)610 611gentbl_cc_library(612 name = "CoreProperties",613 strip_include_prefix = "source/Core",614 tbl_outs = {615 "source/Core/CoreProperties.inc": ["-gen-lldb-property-defs"],616 "source/Core/CorePropertiesEnum.inc": ["-gen-lldb-property-enum-defs"],617 },618 tblgen = ":lldb-tblgen",619 td_file = "source/Core/CoreProperties.td",620 deps = [":CoreTdFiles"],621)622 623cc_library(624 name = "CoreHeaders",625 hdrs = glob([626 "include/lldb/Core/**/*.h",627 "include/lldb/ValueObject/**/*.h", # This should be its own library.628 ]),629 includes = ["include"],630 deps = [631 ":BreakpointHeaders",632 ":CoreProperties",633 ":DataFormattersHeaders",634 ":ExpressionHeaders",635 ":Host",636 ":InterpreterHeaders",637 ":SymbolHeaders",638 ":TargetHeaders",639 "//clang:driver",640 "//llvm:Demangle",641 "//llvm:Support",642 "//llvm:TargetParser",643 ],644)645 646cc_library(647 name = "Core",648 srcs = glob(649 [650 "source/Core/**/*.cpp",651 "source/ValueObject/**/*.cpp", # This should be its own library.652 ],653 ),654 hdrs = glob(655 [656 "include/lldb/Core/**/*.h",657 "include/lldb/ValueObject/**/*.h", # This should be its own library.658 ],659 ),660 includes = ["include"],661 deps = [662 ":BreakpointHeaders",663 ":CoreHeaders",664 ":CoreProperties",665 ":DataFormattersHeaders",666 ":ExpressionHeaders",667 ":Headers",668 ":Host",669 ":InterpreterHeaders",670 ":SymbolHeaders",671 ":TargetHeaders",672 ":Utility",673 ":Version",674 "//clang:driver",675 "//lldb/source/Plugins:PluginCPlusPlusLanguageHeaders",676 "//lldb/source/Plugins:PluginObjCLanguageHeaders",677 "//llvm:BinaryFormat",678 "//llvm:Demangle",679 "//llvm:Support",680 "//llvm:TargetParser",681 "//llvm:Telemetry",682 "//llvm:config",683 ],684)685 686gentbl_cc_library(687 name = "TargetProperties",688 strip_include_prefix = "source/Target",689 tbl_outs = {690 "source/Target/TargetProperties.inc": ["-gen-lldb-property-defs"],691 "source/Target/TargetPropertiesEnum.inc": ["-gen-lldb-property-enum-defs"],692 },693 tblgen = ":lldb-tblgen",694 td_file = "source/Target/TargetProperties.td",695 deps = [":CoreTdFiles"],696)697 698cc_library(699 name = "AppleArm64ExceptionClass",700 hdrs = ["include/lldb/Target/AppleArm64ExceptionClass.def"],701 strip_include_prefix = "include/lldb/Target",702)703 704cc_library(705 name = "TargetHeaders",706 hdrs = glob(["include/lldb/Target/**/*.h"]),707 includes = ["include"],708 deps = [709 ":AppleArm64ExceptionClass",710 ":BreakpointHeaders",711 ],712)713 714cc_library(715 name = "Target",716 srcs = glob(["source/Target/**/*.cpp"]),717 deps = [718 ":BreakpointHeaders",719 ":Core",720 ":DataFormattersHeaders",721 ":ExpressionHeaders",722 ":Headers",723 ":Host",724 ":InterpreterHeaders",725 ":Symbol",726 ":SymbolHeaders",727 ":TargetHeaders",728 ":TargetProperties",729 ":Utility",730 "//clang:codegen",731 "//lldb/source/Plugins:PluginProcessUtility",732 "//llvm:BinaryFormat",733 "//llvm:MC",734 "//llvm:Support",735 ],736)737 738cc_library(739 name = "Headers",740 hdrs = glob(["include/lldb/lldb-*.h"]) + [741 "include/lldb/Symbol/SaveCoreOptions.h",742 ],743 includes = ["include"],744)745 746cc_library(747 name = "UtilityPrivateHeaders",748 hdrs = glob(["source/Utility/**/*.h"]),749 includes = ["source"],750 deps = [":Headers"],751)752 753cc_library(754 name = "UtilityHeaders",755 hdrs = glob(["include/lldb/Utility/**/*.h"]),756 includes = ["include"],757)758 759cc_library(760 name = "Utility",761 srcs = glob(["source/Utility/**/*.cpp"]),762 hdrs = glob(["include/lldb/Utility/**/*.h"]),763 includes = ["include"],764 deps = [765 ":CoreHeaders",766 ":Headers",767 ":TargetHeaders",768 ":UtilityPrivateHeaders",769 "//llvm:BinaryFormat",770 "//llvm:Support",771 "//llvm:TargetParser",772 "//llvm:config",773 ],774)775 776genrule(777 name = "gen_exports_file_linux",778 srcs = ["//lldb:source/API/liblldb-private.exports"],779 outs = ["exports_linux.txt"],780 cmd = """781cat > $(OUTS) <<EOF782{783 global:784 $$(sed 's/$$/;/g' $(SRCS))785};786EOF787""",788)789 790genrule(791 name = "gen_exports_file_macos",792 srcs = ["//lldb:source/API/liblldb-private.exports"],793 outs = ["exports_macos.txt"],794 cmd = "sed 's/^/_/g' $(SRCS) > $(OUTS)",795)796 797# Create a shared library using linkshared=True for liblldb. This uses798# cc_binary instead of cc_shared_library since the latter expects you to799# re-export all transitive dependencies vs them being relinked into other800# binaries.801cc_binary(802 name = "lldb{}".format(PACKAGE_VERSION),803 additional_linker_inputs = select({804 "@platforms//os:linux": [805 ":gen_exports_file_linux",806 ],807 "@platforms//os:macos": [808 ":gen_exports_file_macos",809 ],810 "//conditions:default": [],811 }),812 linkopts = select({813 "@platforms//os:linux": [814 "-Wl,--export-dynamic-symbol-list=$(location :gen_exports_file_linux)",815 ],816 "@platforms//os:macos": [817 "-Wl,-exported_symbols_list,$(location :gen_exports_file_macos)",818 ],819 "//conditions:default": [],820 }),821 linkshared = True,822 deps = [823 ":API",824 ":Interpreter",825 ],826)827 828# cc_binary targets using linkshared=True to build a shared library cannot be829# imported directly and instead need to be referenced indirectly through830# cc_import831cc_import(832 name = "liblldb.wrapper",833 shared_library = "lldb{}".format(PACKAGE_VERSION),834)835 836gentbl_cc_library(837 name = "lldb_options_inc_gen",838 strip_include_prefix = ".",839 tbl_outs = {"Options.inc": ["-gen-opt-parser-defs"]},840 tblgen = "//llvm:llvm-tblgen",841 td_file = "tools/driver/Options.td",842 deps = ["//llvm:OptParserTdFiles"],843)844 845alias(846 name = "gdb-server",847 actual = select({848 "@platforms//os:macos": ":debugserver",849 "//conditions:default": ":lldb-server",850 }),851)852 853cc_binary(854 name = "lldb",855 srcs = glob([856 "tools/driver/*.cpp",857 "tools/driver/*.h",858 ]),859 deps = [860 ":APIHeaders",861 ":HostHeaders",862 ":UtilityHeaders",863 ":liblldb.wrapper",864 ":lldb_options_inc_gen",865 "//llvm:Option",866 "//llvm:Support",867 ],868)869 870cc_library(871 name = "DebugServerCommonMacOSXHeaders",872 hdrs = glob(["tools/debugserver/source/MacOSX/**/*.h"]),873 strip_include_prefix = "tools/debugserver/source/MacOSX",874)875 876cc_library(877 name = "DebugServerCommonHeaders",878 hdrs = glob(["tools/debugserver/source/**/*.h"]),879 strip_include_prefix = "tools/debugserver/source",880 deps = [":DebugServerCommonMacOSXHeaders"],881)882 883objc_library(884 name = "DebugServerMacOSX",885 copts = OBJCPP_COPTS,886 non_arc_srcs = glob(["tools/debugserver/source/MacOSX/*.mm"]),887 tags = ["nobuildkite"],888 target_compatible_with = select({889 "@platforms//os:macos": [],890 "//conditions:default": ["@platforms//:incompatible"],891 }),892 deps = [893 ":DebugServerCommonHeaders",894 ":DebugServerCommonMacOSXHeaders",895 ],896)897 898cc_library(899 name = "DebugServerCommon",900 srcs = glob(901 ["tools/debugserver/source/**/*.cpp"],902 exclude = ["tools/debugserver/source/debugserver.cpp"],903 ),904 local_defines = ["LLDB_USE_OS_LOG"],905 tags = ["nobuildkite"],906 deps = [907 ":DebugServerCommonHeaders",908 ":DebugServerCommonMacOSXHeaders",909 ":DebugServerMacOSX",910 ":Host",911 ],912)913 914apple_genrule(915 name = "mach_gen",916 srcs = ["tools/debugserver/source/MacOSX/dbgnub-mig.defs"],917 outs = [918 "mach_exc.h",919 "mach_excServer.c",920 "mach_excUser.c",921 ],922 cmd = "mig -header $(location :mach_exc.h) -server $(location :mach_excServer.c) -user $(location :mach_excUser.c) $(SRCS)",923 tags = [924 "manual",925 "nobuildkite",926 ],927 target_compatible_with = select({928 "@platforms//os:macos": [],929 "//conditions:default": ["@platforms//:incompatible"],930 }),931)932 933expand_template(934 name = "debugserver_version_gen",935 out = "debugserver_vers.c",936 substitutions = _VERSION_SUBSTITUTIONS,937 template = "tools/debugserver/source/debugserver_vers.c.in",938)939 940cc_binary(941 name = "debugserver_unsigned",942 srcs = [943 "tools/debugserver/source/debugserver.cpp",944 ":debugserver_version_gen",945 ":mach_gen",946 ],947 tags = ["nobuildkite"],948 target_compatible_with = select({949 "@platforms//os:macos": [],950 "//conditions:default": ["@platforms//:incompatible"],951 }),952 deps = [953 ":DebugServerCommon",954 ":DebugServerCommonHeaders",955 ":DebugServerCommonMacOSXHeaders",956 ],957)958 959apple_genrule(960 name = "debugserver_signed",961 srcs = [":debugserver_unsigned"],962 outs = ["debugserver"],963 cmd = "cp $(SRCS) $(OUTS) && xcrun codesign -f -s - --entitlements $(location tools/debugserver/resources/debugserver-macosx-entitlements.plist) $(OUTS)",964 tags = [965 "manual",966 "nobuildkite",967 ],968 target_compatible_with = select({969 "@platforms//os:macos": [],970 "//conditions:default": ["@platforms//:incompatible"],971 }),972 tools = [973 "tools/debugserver/resources/debugserver-macosx-entitlements.plist",974 ],975)976 977cc_binary(978 name = "lldb-argdumper",979 srcs = glob(["tools/argdumper/*.cpp"]),980 deps = ["//llvm:Support"],981)982 983gentbl_cc_library(984 name = "lldb_server_opts_gen",985 strip_include_prefix = ".",986 tbl_outs = {"LLGSOptions.inc": ["-gen-opt-parser-defs"]},987 tblgen = "//llvm:llvm-tblgen",988 td_file = "tools/lldb-server/LLGSOptions.td",989 deps = ["//llvm:OptParserTdFiles"],990)991 992gentbl_cc_library(993 name = "lldb_platform_opts_gen",994 strip_include_prefix = ".",995 tbl_outs = {"PlatformOptions.inc": ["-gen-opt-parser-defs"]},996 tblgen = "//llvm:llvm-tblgen",997 td_file = "tools/lldb-server/PlatformOptions.td",998 deps = ["//llvm:OptParserTdFiles"],999)1000 1001cc_binary(1002 name = "lldb-server",1003 srcs = glob([1004 "tools/lldb-server/*.cpp",1005 "tools/lldb-server/*.h",1006 ]),1007 target_compatible_with = select({1008 "@platforms//os:linux": [],1009 "@platforms//os:macos": [],1010 # TODO: This can theoretically support more platforms, but it hasn't been tested yet1011 "//conditions:default": ["@platforms//:incompatible"],1012 }),1013 deps = [1014 ":Host",1015 ":Initialization",1016 ":Interpreter",1017 ":Utility",1018 ":Version",1019 ":lldb_platform_opts_gen",1020 ":lldb_server_opts_gen",1021 "//lldb:Target",1022 "//lldb:TargetHeaders",1023 "//lldb/source/Plugins:PluginCPlusPlusLanguage",1024 "//lldb/source/Plugins:PluginExpressionParserClang",1025 "//lldb/source/Plugins:PluginInstructionARM",1026 "//lldb/source/Plugins:PluginInstructionARM64",1027 "//lldb/source/Plugins:PluginInstructionLoongArch",1028 "//lldb/source/Plugins:PluginInstructionMIPS",1029 "//lldb/source/Plugins:PluginInstructionMIPS64",1030 "//lldb/source/Plugins:PluginInstructionRISCV",1031 "//lldb/source/Plugins:PluginObjCLanguage",1032 "//lldb/source/Plugins:PluginProcessGDBRemote",1033 "//lldb/source/Plugins:PluginProcessWasm",1034 "//lldb/source/Plugins:PluginSymbolFileDWARF",1035 "//lldb/source/Plugins:PluginSymbolFileNativePDB",1036 "//lldb/source/Plugins:PluginSymbolFilePDB",1037 "//lldb/source/Plugins:PluginTypeSystemClang",1038 "//llvm:Option",1039 "//llvm:Support",1040 ] + select({1041 "@platforms//os:linux": [1042 "//lldb/source/Plugins:PluginObjectFileELF",1043 "//lldb/source/Plugins:PluginProcessLinux",1044 ],1045 "@platforms//os:macos": [1046 "//lldb/source/Plugins:PluginObjectFileMachO",1047 ],1048 "//conditions:default": [],1049 }),1050)1051 1052expand_template(1053 name = "lldb-dap-plist",1054 out = "lldb-dap-Info.plist",1055 substitutions = {1056 "${LLDB_VERSION}": PACKAGE_VERSION,1057 },1058 template = "tools/lldb-dap/tool/lldb-dap-Info.plist.in",1059)1060 1061gentbl_cc_library(1062 name = "lldb_dap_opts_gen",1063 strip_include_prefix = "tools/lldb-dap",1064 tbl_outs = {"tools/lldb-dap/Options.inc": ["-gen-opt-parser-defs"]},1065 tblgen = "//llvm:llvm-tblgen",1066 td_file = "tools/lldb-dap/tool/Options.td",1067 deps = ["//llvm:OptParserTdFiles"],1068)1069 1070cc_binary(1071 name = "lldb-dap",1072 srcs = glob([1073 "tools/lldb-dap/**/*.cpp",1074 "tools/lldb-dap/**/*.h",1075 ]),1076 additional_linker_inputs = [1077 ":lldb-dap-plist",1078 ],1079 includes = ["tools/lldb-dap"],1080 linkopts = select({1081 "@platforms//os:macos": [1082 "-Wl,-sectcreate,__TEXT,__info_plist,$(location :lldb-dap-plist)",1083 ],1084 "//conditions:default": [],1085 }),1086 deps = [1087 ":lldb_dap_opts_gen",1088 "//lldb:APIHeaders",1089 "//lldb:Headers",1090 "//lldb:Host",1091 "//lldb:Utility",1092 "//lldb:liblldb.wrapper",1093 "//llvm:Option",1094 "//llvm:Support",1095 "//llvm:config",1096 ],1097)1098