| # Part of the Crubit project, under the Apache License v2.0 with LLVM |
| # Exceptions. See /LICENSE for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| # Provide LLVM from a local tree built with CMake. |
| |
| llvm_install_tree_build_file_contents = """ |
| package(default_visibility = ["//visibility:public"]) |
| |
| # An extremely coarse-grained target that provides *all* headers and libraries. |
| cc_library( |
| name = "all", |
| srcs = glob([ |
| "lib/*.a", |
| ], exclude = [ |
| "**/*.i386.a", |
| ]), |
| hdrs = glob([ |
| "include/**", |
| ]), |
| includes = [ |
| "include/", |
| ], |
| linkopts = ["-lncurses", "-lz"], |
| ) |
| """ |
| |
| def llvm_repository(name): |
| # First, create an intermediate repo that overlays the BUILD file onto the |
| # prebuilt LLVM tree, yielding the single ":all" target. |
| native.new_local_repository( |
| name = "prebuilt-llvm", |
| path = "${LLVM_INSTALL_PATH}", # template value |
| build_file_content = llvm_install_tree_build_file_contents, |
| ) |
| |
| # Next, create the final repo that emulates the layout of Bazel targets in |
| # llvm-project. |
| native.local_repository( |
| name = name, |
| path = "bazel/llvm_project", |
| ) |