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