LINE's Apple rules for Bazel
This repository contains additional rules for Bazel that can be used to bundle applications for Apple platforms.
Bazel's official rules for Apple platforms lack many of the features that are conventionally important in the Apple community in general, notably: supports for header maps, Clang modules and mixed language targets. This repository implements those features and exposes them as drop-in replacements for the official Apple rules.
These are open references of what are used to build the LINE iOS app. They may not work with curtain revisions of
rules_swiftdue to their breaking changes. If they don't work out-of-the-box for you, use them as references for your custom rule's implementation.
The latest versions of rules_apple and rules_swift rulesets require the usage of the --incompatibleobjccompileinfomigration flag to work correctly.
Add the following to your
WORKSPACEfile to add the external repositories, replacing the revision number in the
commitattribute with the version of the rules you wish to depend on:
git_repository( name = "build_bazel_rules_apple", remote = "https://github.com/bazelbuild/rules_apple.git", commit = "[SOME_HASH_VALUE]", )
git_repository( name = "build_bazel_rules_swift", remote = "https://github.com/bazelbuild/rules_swift.git", commit = "[SOME_HASH_VALUE]", )
git_repository( name = "build_bazel_apple_support", remote = "https://github.com/bazelbuild/apple_support.git", commit = "[SOME_HASH_VALUE]", )
git_repository( name = "rules_apple_line", remote = "https://github.com/line/rules_apple_line.git", commit = "[SOME_HASH_VALUE]", )
load( "@build_bazel_rules_apple//apple:repositories.bzl", "apple_rules_dependencies", )
load( "@build_bazel_rules_swift//swift:repositories.bzl", "swift_rules_dependencies", )
load( "@build_bazel_apple_support//lib:repositories.bzl", "apple_support_dependencies", )
load( "@rules_apple_line//apple:repositories.bzl", "rules_apple_line_dependencies", )
If you want to lock apple_support, rules_apple and rules_swift to specific
versions, be sure to call this function after their repository rules.
mixed_static_framework( name = "Mixed", srcs = glob([ "/.m", "**/.swift", ]), hdrs = glob([ "/*.h", ]), )
See the examples directory for more examples.
Copyright 2020 LINE Corporation
LINE Corporation licenses this file to you under the Apache License, version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
See LICENSE for more detail.