Skip to content
This repository has been archived by the owner on May 2, 2020. It is now read-only.

thii/rules_apple_extras

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extra Apple Rules for Bazel

This repository contains additional rules for Bazel that can be used to build libraries for Apple platforms.

Reference documentation

objc_library

Produces a static library from the given Objective-C source files, with support for header maps.

In iOS development, conventionally, when depending on an Objective-C library, you can import its public headers using the system include syntax (#import <MyLibrary/MyLibrary.h>) regardless of their location on the file sytem. However, in Bazel, you have to explicitly specify the location of the imported headers from the relatively from the included directories (#import "external/MyLibrary/MyLibrary.h"). This rule wraps the native objc_library rule to add support for the conventional import syntax, so that you won't have to patch your libraries to support building with Bazel.

apple_resource_bundle

Encapsulates a target which is provided to dependers as a bundle.

apple_resource_bundle rules coming from rules_apple doesn't have a bundle_id attribute, and doesn't support substitution of DEVELOPMENT_LANGUAGE and PRODUCT_BUNDLE_IDENTIFIER variables which by default exist in a resource bundle target generated by Xcode. This macro wraps rules_apple's apple_resource_bundle rule to modify the Info.plist files under the hood before giving them to the original rule, so that users don't have to manually hard code their plists in order to make their resource bundle targets work with Bazel.

Reference

Quick setup

Add the following to your WORKSPACE file to add the external repositories, replacing the commit hash in the commit attribute with the version of the rules you wish to depend on:

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

git_repository(
    name = "com_github_thii_rules_apple_extras",
    remote = "https://github.com/thii/rules_apple_extras.git",
    commit = "<latest commit hash here>",
)

Examples

With a load statement at the top of your BUILD file, you can use this rule as you would with the native objc_library rule.

load("@com_github_thii_rules_apple_extras//apple:objc_library.bzl", "objc_library")

objc_library(
    name = "Lib",
    hdrs = [
        "Lib.h",
    ],
    srcs = glob([
        "**/*.m",
    ]),
)

Any target that depends on Lib will be able to import Lib's public header using #import <Lib/Lib.h> syntax.

License

MIT

About

Extra Bazel rules for Apple platforms.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published