pytorch
91 строка · 2.9 Кб
1# This is BUILD file is derived from https://github.com/tensorflow/tensorflow/blob/master/third_party/eigen.BUILD
2
3# Description:
4# Eigen is a C++ template library for linear algebra: vectors,
5# matrices, and related algorithms.
6
7load("@rules_cc//cc:defs.bzl", "cc_library")
8
9licenses([
10# Note: Eigen is an MPL2 library that includes GPL v3 and LGPL v2.1+ code.
11# We've taken special care to not reference any restricted code.
12"reciprocal", # MPL2
13"notice", # Portions BSD
14])
15
16exports_files(["COPYING.MPL2"])
17
18# License-restricted (i.e. not reciprocal or notice) files inside Eigen/...
19EIGEN_RESTRICTED_FILES = [
20"Eigen/src/OrderingMethods/Amd.h",
21"Eigen/src/SparseCholesky/**",
22]
23
24# Notable transitive dependencies of restricted files inside Eigen/...
25EIGEN_RESTRICTED_DEPS = [
26"Eigen/Eigen",
27"Eigen/IterativeLinearSolvers",
28"Eigen/MetisSupport",
29"Eigen/Sparse",
30"Eigen/SparseCholesky",
31"Eigen/SparseLU",
32]
33
34EIGEN_FILES = [
35"Eigen/**",
36"unsupported/Eigen/CXX11/**",
37"unsupported/Eigen/FFT",
38"unsupported/Eigen/KroneckerProduct",
39"unsupported/Eigen/src/FFT/**",
40"unsupported/Eigen/src/KroneckerProduct/**",
41"unsupported/Eigen/MatrixFunctions",
42"unsupported/Eigen/SpecialFunctions",
43"unsupported/Eigen/Splines",
44"unsupported/Eigen/src/MatrixFunctions/**",
45"unsupported/Eigen/src/SpecialFunctions/**",
46"unsupported/Eigen/src/Splines/**",
47"unsupported/Eigen/NonLinearOptimization",
48"unsupported/Eigen/NumericalDiff",
49"unsupported/Eigen/src/**",
50"unsupported/Eigen/Polynomials",
51]
52
53# List of files picked up by glob but actually part of another target.
54EIGEN_EXCLUDE_FILES = ["Eigen/src/Core/arch/AVX/PacketMathGoogleTest.cc"]
55
56# Disallowed eigen modules/files in rNA:
57# * Using the custom STL and memory support, it is not needed and should
58# not be used with c++17.
59# * We will only support the EulerAnglesZYX provided by //atg/geometry so
60# just don't allow people to access the unsupported eigen module.
61EIGEN_DISALLOW_FILES = [
62"Eigen/StlSupport/*.h",
63"unsupported/Eigen/EulerAngles",
64"unsupported/Eigen/src/EulerAngles/**",
65]
66
67# Files known to be under MPL2 license.
68EIGEN_MPL2_HEADER_FILES = glob(
69EIGEN_FILES,
70exclude = EIGEN_EXCLUDE_FILES +
71EIGEN_RESTRICTED_FILES +
72EIGEN_DISALLOW_FILES +
73EIGEN_RESTRICTED_DEPS + [
74# Guarantees any file missed by excludes above will not compile.
75"Eigen/src/Core/util/NonMPL2.h",
76"Eigen/**/CMakeLists.txt",
77],
78)
79
80cc_library(
81name = "eigen",
82hdrs = EIGEN_MPL2_HEADER_FILES,
83defines = [
84# This define (mostly) guarantees we don't link any problematic
85# code. We use it, but we do not rely on it, as evidenced above.
86"EIGEN_MPL2_ONLY",
87"EIGEN_MAX_ALIGN_BYTES=64",
88],
89includes = ["."],
90visibility = ["//visibility:public"],
91)
92