Adding DBGShellCommands interactions to Tulsi.

This serves as a replacement for Spotlight in finding debug symbols,
as a primary source with Spotlight as a fallback. In instances when
the Spotlight service cannot be relied upon to find dSYM bundles,
or when Spotlight takes too long to index a new dSYM UUID, we instead
use a SQLite database using the API recommended by Apple to reference
locations to those dSYM bundles by architecture.

Lookups are done by a small C program, for maximum efficiency.

All other interactions with the database are handled by Python
scripts, including managing the schema.

Database is cleaned of references to dSYMs that cannot be found
during project generation.

This feature can be turned off through the Tulsi GUI, in the Shared
Options tab, on a per-Tulsi project basis.

Requires an Xcode.app restart to acknowledge new DBGShellCommands
settings. This goes for all changes to com.apple.DebugSymbols.

https://lldb.llvm.org/symbols.html for more information.

As we now have a means to find dSYMs in addition to Spotlight, the
Spotlight requirement checks have been removed as well.

PiperOrigin-RevId: 188931719
32 files changed
tree: e4ade2208a3ee4facff6cb122b812e19f2dbea9c
  1. site/
  2. src/
  3. .gitignore
  4. AUTHORS
  5. CONTRIBUTING.md
  6. CONTRIBUTORS
  7. LICENSE.txt
  8. README.md
README.md

Tulsi - an Xcode Project Generator For Bazel

Building and installing

  1. Open src/Tulsi.xcodeproj, and within Xcode, build the TulsiApp.

  2. Run the TulsiApp.

Notes

Tulsi-generated Xcode projects use Bazel to build, not Xcode via xcbuild. This means that many common components of an Xcode project are handled differently than you may be used to. Notable differences:

  • BUILD files are the source of truth; most changes made to your Xcode project won't affect the build.
    • Adding new sources to the Xcode project won't include them in your app; they must be added to BUILD files.
    • Changes made to your BUILD files, such as adding new library dependencies, are incorporated automatically when building your generated project. The only time you need to re-run Tulsi is if you want to add additional build targets or have new source files show up in Xcode for editing.
    • The Info.plist file is governed entirely by BUILD rules in Bazel and is not displayed in the Xcode UI.
    • Changes to compilation flags (i.e. -DHELLO) should be made in the BUILD files in order to affect the build; changes made to compilation settings in the Xcode UI will only affect indexing. You may want to regenerate your project using Tulsi after modifying compilation flags.