| # Copyright 2018 The Bazel Authors. All rights reserved. |
| # |
| # Licensed 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 |
| # |
| # http://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. |
| """This file contains rules used to bootstrap the compiler repository.""" |
| |
| load("//kotlin/internal:kt.bzl", "kt") |
| load("//kotlin/internal:rules.bzl", _kt_jvm_import_impl="kt_jvm_import_impl") |
| load("@bazel_tools//tools/build_defs/repo:http.bzl", _http_archive="http_archive") |
| |
| kotlin_stdlib = rule( |
| attrs = { |
| "jars": attr.label_list( |
| allow_files = True, |
| mandatory = True, |
| cfg = "host", |
| ), |
| "srcjar": attr.label( |
| allow_single_file = True, |
| cfg = "host", |
| ), |
| }, |
| implementation = _kt_jvm_import_impl, |
| ) |
| |
| """Import Kotlin libraries that are part of the compiler release.""" |
| |
| def _kt_toolchain_ide_info_impl(ctx): |
| tc=ctx.toolchains[kt.defs.TOOLCHAIN_TYPE] |
| info = struct( |
| label = tc.label, |
| common = struct( |
| language_version = tc.language_version, |
| api_version = tc.api_version, |
| coroutines = tc.coroutines |
| ), |
| jvm = struct( |
| jvm_target = tc.jvm_target, |
| ) |
| ) |
| ctx.actions.write(ctx.outputs.ide_info, info.to_json()) |
| return [DefaultInfo(files=depset([ctx.outputs.ide_info]))] |
| |
| kt_toolchain_ide_info = rule( |
| outputs = {"ide_info": "kt_toolchain_ide_info.json"}, |
| toolchains = [kt.defs.TOOLCHAIN_TYPE], |
| implementation = _kt_toolchain_ide_info_impl, |
| ) |
| |
| def github_archive(name, repo, commit, build_file_content = None): |
| if build_file_content: |
| _http_archive( |
| name = name, |
| strip_prefix = "%s-%s" % (repo.split("/")[1], commit), |
| url = "https://github.com/%s/archive/%s.zip" % (repo, commit), |
| type = "zip", |
| build_file_content = build_file_content, |
| ) |
| else: |
| _http_archive( |
| name = name, |
| strip_prefix = "%s-%s" % (repo.split("/")[1], commit), |
| url = "https://github.com/%s/archive/%s.zip" % (repo, commit), |
| type = "zip", |
| ) |