| """Repository rule for Debian 8 Jessie Clang-6.0 portable Linux builds.""" |
| |
| def _clang6_configure(ctx): |
| # TODO(jart): It'd probably be better to use Bazel's struct.to_proto() |
| # method to generate a gigantic CROSSTOOL file that allows |
| # Clang to support everything. |
| ctx.symlink( |
| ctx.os.environ.get( |
| "TF_LLVM_PATH", |
| "/usr/lib/llvm-6.0", |
| ), |
| "clang6/llvm", |
| ) |
| ctx.symlink( |
| ctx.os.environ.get("STRIP", "/usr/bin/strip"), |
| "clang6/sbin/strip", |
| ) |
| ctx.symlink( |
| ctx.os.environ.get("OBJDUMP", "/usr/bin/objdump"), |
| "clang6/sbin/objdump", |
| ) |
| ctx.symlink(ctx.attr._build, "clang6/BUILD") |
| ctx.template("clang6/CROSSTOOL", ctx.attr._crosstool, { |
| "%package(@local_config_clang6//clang6)%": str(ctx.path("clang6")), |
| }) |
| |
| clang6_configure = repository_rule( |
| implementation = _clang6_configure, |
| attrs = { |
| "_build": attr.label( |
| default = str(Label("//third_party/toolchains/clang6:clang.BUILD")), |
| ), |
| "_crosstool": attr.label( |
| default = str(Label("//third_party/toolchains/clang6:CROSSTOOL.tpl")), |
| ), |
| }, |
| ) |