blob: 0f51245a04ff1d1c16c5b7902c869c4405a0ca29 [file] [log] [blame]
# 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",
)