Skip to content

Bazel rules for building iOS applications and frameworks

License

Notifications You must be signed in to change notification settings

ajanuar/rules_ios

 
 

Repository files navigation

iOS Rules for Bazel

master

⚠️ This is alpha software. We are developing these rules in the open so you should only use them if you know what you are doing and are willing to help develop them.

These rules provide some macros and rules that make it easier to build iOS application with Bazel. The heavy lifting of compiling, and packaging is still done by the existing objc_library rule in Bazel, and by the swift_library rule available from rules_swift.

These rules require Bazel 2.0.

Reference documentation

Click here for the documentation.

Quick setup

Add the following lines to your WORKSPACE file. Note that since rules_swift and rules_apple no longer create releases, the versions are hardcoded to commit sha's that are known to work. You can see the particular commit sha's in repositories.bzl.

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
    name = "build_bazel_rules_ios",
    remote = "https://github.com/ob/rules_ios.git",
    branch = "master",
)

load(
    "@build_bazel_rules_ios//rules:app.bzl",
    "ios_application"
)

rules_ios_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

Examples

Minimal example:

load("@build_bazel_rules_ios//rules:app.bzl", "ios_application")

ios_application(
    name = "iOS-App",
    srcs = glob(["*.m"]),
    bundle_id = "com.example.ios-app",
    entitlements = "ios.entitlements",
    families = [
        "iphone",
        "ipad",
    ],
    launch_storyboard = "LaunchScreen.storyboard",
    minimum_os_version = "12.0",
    visibility = ["//visibility:public"],
)

See the examples directory for sample applications.

About

Bazel rules for building iOS applications and frameworks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Starlark 65.1%
  • C 29.4%
  • Python 2.9%
  • Shell 1.7%
  • Other 0.9%