maxwellE / rules_apple_line

LINE's Apple rules for Bazel

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LINE's Apple rules for Bazel

This repository contains additional rules for Bazel that can be used to bundle applications for Apple platforms.

Overview

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.

Build Definitions

Library Rules

Bundling Rules

Other Rules

Quick setup

Add the following to your WORKSPACE file to add the external repositories, replacing the revision number 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 = "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",
)

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()

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.
rules_apple_line_dependencies()

Examples

Minimal example:

load("@rules_apple_line//apple:mixed_static_framework.bzl", "mixed_static_framework")

mixed_static_framework(
    name = "Mixed",
    srcs = glob([
        "**/*.m",
        "**/*.swift",
    ]),
    hdrs = glob([
        "**/*.h",
    ]),
)

See the examples directory for more examples.

License

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:

   https://www.apache.org/licenses/LICENSE-2.0

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.

About

LINE's Apple rules for Bazel

License:Apache License 2.0


Languages

Language:Starlark 99.0%Language:Makefile 1.0%