xref: /aosp_15_r20/external/tensorflow/third_party/eigen3/BUILD (revision b6fb3261f9314811a0f4371741dbb8839866f948)
1*b6fb3261SAndroid Build Coastguard Worker# Description:
2*b6fb3261SAndroid Build Coastguard Worker#   Eigen is a C++ template library for linear algebra: vectors,
3*b6fb3261SAndroid Build Coastguard Worker#   matrices, and related algorithms.
4*b6fb3261SAndroid Build Coastguard Worker# This is the BUILD file with extra code to patch into @eigen_archive.
5*b6fb3261SAndroid Build Coastguard Worker
6*b6fb3261SAndroid Build Coastguard Workerload("//third_party/mkl:build_defs.bzl", "if_mkl")
7*b6fb3261SAndroid Build Coastguard Worker
8*b6fb3261SAndroid Build Coastguard Workerlicenses([
9*b6fb3261SAndroid Build Coastguard Worker    # Note: Eigen is an MPL2 library that includes GPL v3 and LGPL v2.1+ code.
10*b6fb3261SAndroid Build Coastguard Worker    #       We've taken special care to not reference any restricted code.
11*b6fb3261SAndroid Build Coastguard Worker    "reciprocal",  # MPL2
12*b6fb3261SAndroid Build Coastguard Worker    "notice",  # Portions BSD
13*b6fb3261SAndroid Build Coastguard Worker])
14*b6fb3261SAndroid Build Coastguard Worker
15*b6fb3261SAndroid Build Coastguard Workerexports_files(["LICENSE"])
16*b6fb3261SAndroid Build Coastguard Worker
17*b6fb3261SAndroid Build Coastguard WorkerEIGEN3_THIRD_PARTY_HEADERS = [
18*b6fb3261SAndroid Build Coastguard Worker    "Eigen/Core",
19*b6fb3261SAndroid Build Coastguard Worker    "Eigen/LU",
20*b6fb3261SAndroid Build Coastguard Worker    "Eigen/Cholesky",
21*b6fb3261SAndroid Build Coastguard Worker    "Eigen/Eigenvalues",
22*b6fb3261SAndroid Build Coastguard Worker    "Eigen/OrderingMethods",
23*b6fb3261SAndroid Build Coastguard Worker    "Eigen/QR",
24*b6fb3261SAndroid Build Coastguard Worker    "Eigen/SparseCholesky",
25*b6fb3261SAndroid Build Coastguard Worker    "Eigen/SparseCore",
26*b6fb3261SAndroid Build Coastguard Worker    "Eigen/SVD",
27*b6fb3261SAndroid Build Coastguard Worker    "unsupported/Eigen/MatrixFunctions",
28*b6fb3261SAndroid Build Coastguard Worker    "unsupported/Eigen/SpecialFunctions",
29*b6fb3261SAndroid Build Coastguard Worker    "unsupported/Eigen/CXX11/ThreadPool",
30*b6fb3261SAndroid Build Coastguard Worker    "unsupported/Eigen/CXX11/Tensor",
31*b6fb3261SAndroid Build Coastguard Worker    "unsupported/Eigen/CXX11/FixedPoint",
32*b6fb3261SAndroid Build Coastguard Worker] + glob(["unsupported/Eigen/CXX11/src/FixedPoint/*.h"])
33*b6fb3261SAndroid Build Coastguard Worker
34*b6fb3261SAndroid Build Coastguard Workercc_library(
35*b6fb3261SAndroid Build Coastguard Worker    name = "eigen3",
36*b6fb3261SAndroid Build Coastguard Worker    hdrs = EIGEN3_THIRD_PARTY_HEADERS,
37*b6fb3261SAndroid Build Coastguard Worker    includes = if_mkl(["./mkl_include"]),
38*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
39*b6fb3261SAndroid Build Coastguard Worker    deps = [
40*b6fb3261SAndroid Build Coastguard Worker        "@eigen_archive//:eigen3",
41*b6fb3261SAndroid Build Coastguard Worker    ],
42*b6fb3261SAndroid Build Coastguard Worker)
43*b6fb3261SAndroid Build Coastguard Worker
44*b6fb3261SAndroid Build Coastguard Workerfilegroup(
45*b6fb3261SAndroid Build Coastguard Worker    name = "all_files",
46*b6fb3261SAndroid Build Coastguard Worker    srcs = glob(
47*b6fb3261SAndroid Build Coastguard Worker        ["**/*"],
48*b6fb3261SAndroid Build Coastguard Worker        exclude = ["**/OWNERS"],
49*b6fb3261SAndroid Build Coastguard Worker    ),
50*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//tensorflow:__subpackages__"],
51*b6fb3261SAndroid Build Coastguard Worker)
52*b6fb3261SAndroid Build Coastguard Worker
53*b6fb3261SAndroid Build Coastguard Workerfilegroup(
54*b6fb3261SAndroid Build Coastguard Worker    name = "eigen_third_party_header_files",
55*b6fb3261SAndroid Build Coastguard Worker    srcs = EIGEN3_THIRD_PARTY_HEADERS,
56*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
57*b6fb3261SAndroid Build Coastguard Worker)
58*b6fb3261SAndroid Build Coastguard Worker
59*b6fb3261SAndroid Build Coastguard Workergenrule(
60*b6fb3261SAndroid Build Coastguard Worker    name = "install_eigen_headers",
61*b6fb3261SAndroid Build Coastguard Worker    srcs = [
62*b6fb3261SAndroid Build Coastguard Worker        "@eigen_archive//:eigen_header_files",
63*b6fb3261SAndroid Build Coastguard Worker        "@eigen_archive//:eigen_source_files",
64*b6fb3261SAndroid Build Coastguard Worker        ":eigen_third_party_header_files",
65*b6fb3261SAndroid Build Coastguard Worker    ],
66*b6fb3261SAndroid Build Coastguard Worker    outs = ["include"],
67*b6fb3261SAndroid Build Coastguard Worker    cmd = """
68*b6fb3261SAndroid Build Coastguard Worker    mkdir $@
69*b6fb3261SAndroid Build Coastguard Worker    for f in $(SRCS); do
70*b6fb3261SAndroid Build Coastguard Worker      d="$${f%/*}"
71*b6fb3261SAndroid Build Coastguard Worker      d="$${d#*external/eigen_archive/}"
72*b6fb3261SAndroid Build Coastguard Worker
73*b6fb3261SAndroid Build Coastguard Worker      mkdir -p "$@/$${d}"
74*b6fb3261SAndroid Build Coastguard Worker      cp "$${f}" "$@/$${d}/"
75*b6fb3261SAndroid Build Coastguard Worker    done
76*b6fb3261SAndroid Build Coastguard Worker    """,
77*b6fb3261SAndroid Build Coastguard Worker    tags = ["manual"],
78*b6fb3261SAndroid Build Coastguard Worker)
79