All Projects → bazelbuild → Tulsi

bazelbuild / Tulsi

Licence: apache-2.0
An Xcode Project Generator For Bazel

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Tulsi

eclipse
Eclipse For Bazel (deprecated, see https://github.com/salesforce/bazel-eclipse instead)
Stars: ✭ 31 (-91.51%)
Mutual labels:  ide, bazel, build-tool
Intellij
IntelliJ plugin for Bazel projects
Stars: ✭ 500 (+36.99%)
Mutual labels:  build-tool, bazel, ide
Buildtools
A bazel BUILD file formatter and editor
Stars: ✭ 538 (+47.4%)
Mutual labels:  build-tool, bazel
Gke Bazel Demo
Building applications with bazel and deploying them on to GKE. This demo contains a java-spring-boot rest service and an angular front-end. Both containers are deployed on GKE.
Stars: ✭ 92 (-74.79%)
Mutual labels:  build-tool, bazel
Please
High-performance extensible build system for reproducible multi-language builds.
Stars: ✭ 1,856 (+408.49%)
Mutual labels:  build-tool, bazel
Xchammer
XCHammer generates Xcode projects from a Bazel Workspace.
Stars: ✭ 195 (-46.58%)
Mutual labels:  bazel, xcode
Index Import
Tool to import swiftc and clang index-store files into Xcode
Stars: ✭ 240 (-34.25%)
Mutual labels:  bazel, xcode
Gogradle
A Gradle Plugin Providing Full Support for Go
Stars: ✭ 712 (+95.07%)
Mutual labels:  build-tool, ide
example-bazel-monorepo
🌿💚 Example Bazel-ified monorepo, supporting Golang, Java, Python, Scala, and Typescript
Stars: ✭ 213 (-41.64%)
Mutual labels:  bazel, build-tool
Bazel Remote
A remote cache for Bazel
Stars: ✭ 260 (-28.77%)
Mutual labels:  build-tool, bazel
Dxxcodeconsoleunicodeplugin
转换Xcode控制台中一些不可阅读的字符,比如 \u22AD 这种
Stars: ✭ 268 (-26.58%)
Mutual labels:  xcode, xcode-plugin
Showingithub
Xcode plugin to open the GitHub page of the commit of the currently selected line in the editor window.
Stars: ✭ 243 (-33.42%)
Mutual labels:  xcode, xcode-plugin
Awesome Xcode Extensions
Awesome native Xcode extensions.
Stars: ✭ 2,628 (+620%)
Mutual labels:  xcode, xcode-plugin
Xcode One Dark
Atom One Dark theme for Xcode
Stars: ✭ 273 (-25.21%)
Mutual labels:  xcode, ide
Linex
Feature packed Xcode extension
Stars: ✭ 210 (-42.47%)
Mutual labels:  xcode, xcode-plugin
Xcodeequatablegenerator
Xcode 8 Source Code Extension will generate conformance to Swift Equatable protocol based on type and fields selection.
Stars: ✭ 188 (-48.49%)
Mutual labels:  xcode, xcode-plugin
Luft
The Xcode Plugin that helps you write lighter view controllers
Stars: ✭ 179 (-50.96%)
Mutual labels:  xcode, xcode-plugin
Amappexporttoipa Xcode Plugin
AMAppExportToIPA-Xcode-Plugin is a simple Xcode plugin to export .app to .ipa file.
Stars: ✭ 185 (-49.32%)
Mutual labels:  xcode, xcode-plugin
makestudio
Setup your Delphi Environment very easily - build your projects with more comfort
Stars: ✭ 43 (-88.22%)
Mutual labels:  ide, build-tool
Clangformat Xcode
Xcode plug-in to to use clang-format from in Xcode and consistently format your code with Clang
Stars: ✭ 2,852 (+681.37%)
Mutual labels:  xcode, xcode-plugin

Tulsi - an Xcode Project Generator For Bazel

tulsi - /ˈto͝olsē/ A kind of basil that is venerated by Hindus as a sacred plant.

Building and installing

Run build_and_run.sh. This will install Tulsi.app inside $HOME/Applications by default. See below for supported options:

  • -b: Bazel binary that Tulsi should use to build and install the app (Default is bazel)
  • -d: The folder where to install the Tulsi app into (Default is $HOME/Applications)
  • -x: The Xcode version Tulsi should be built for (Default is 12.4)

Notes

Tulsi-generated Xcode projects use Bazel to build, not Xcode. Building in Xcode will cause it to only run a script; the script invokes Bazel to build the configured Bazel target and copies the artifacts to where Xcode expects them to be. 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.
  • Tulsi will set some Tulsi-specific flags for bazel invocations, some of which may affect Bazel caching. In order to maximize cache re-use when building from the command line, try using the user_build.py script which is located in the generated xcodeproj at <xcodeproj>/.tulsi/Scripts/user_build.py.

Tulsi project and config settings

Tulsi projects contain a few settings which control various behaviors during project generation and builds.

  • Bazel build flags, customizable per compilation mode (dbg and opt)
  • Bazel build startup flags, also customizable per compilation mode
  • Generation platform configuration: Target platform and arch used during project generation.
    • Can change from targeting iOS sim to iOS device or from iOS to macOS. Setting this improperly shouldn't break your project although it may potentially worsen generation and build performance.
  • Generation compilation mode: Bazel compilation mode (dbg or opt, no fastbuild) used during project generation.
    • Defaults to dbg, swap to opt if you normally build Release builds in Xcode (i.e. profiling your app). Setting this improperly shouldn't break your project although it may potentially worsen generation and build performance.
  • Prioritize Swift: set this to inform Tulsi that it should use Swift-specific flags during project generation.
    • Defaults to No, swap to Yes if your project contains Swift (even in its dependencies). Setting this improperly shouldn't break your project although it may potentially worsen generation and build performance.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].