Create ceres_library() and use to provide :ceres
This doesn't add any configurability to ceres_library() yet, but it
does correctly determine the include path for use with -I, allowing
this to be used as a dependency from other workspaces.
Change-Id: I223b6e63c2ea82ab7f552337f78fffd54f20b0e0
diff --git a/BUILD b/BUILD
index e9468c1..5a2c44a 100644
--- a/BUILD
+++ b/BUILD
@@ -31,197 +31,9 @@
# These are Bazel rules to build Ceres. It's currently in Alpha state, and does
# not support parameterization around threading choice or sparse backends.
-CERES_SRCS = ["internal/ceres/" + filename for filename in [
- "array_utils.cc",
- "blas.cc",
- "block_evaluate_preparer.cc",
- "block_jacobian_writer.cc",
- "block_jacobi_preconditioner.cc",
- "block_random_access_dense_matrix.cc",
- "block_random_access_diagonal_matrix.cc",
- "block_random_access_matrix.cc",
- "block_random_access_sparse_matrix.cc",
- "block_sparse_matrix.cc",
- "block_structure.cc",
- "c_api.cc",
- "callbacks.cc",
- "canonical_views_clustering.cc",
- "cgnr_solver.cc",
- "compressed_col_sparse_matrix_utils.cc",
- "compressed_row_jacobian_writer.cc",
- "compressed_row_sparse_matrix.cc",
- "conditioned_cost_function.cc",
- "conjugate_gradients_solver.cc",
- "coordinate_descent_minimizer.cc",
- "corrector.cc",
- "covariance.cc",
- "covariance_impl.cc",
- "dense_normal_cholesky_solver.cc",
- "dense_qr_solver.cc",
- "dense_sparse_matrix.cc",
- "detect_structure.cc",
- "dogleg_strategy.cc",
- "dynamic_compressed_row_jacobian_writer.cc",
- "dynamic_compressed_row_sparse_matrix.cc",
- "dynamic_sparse_normal_cholesky_solver.cc",
- "eigensparse.cc",
- "evaluator.cc",
- "file.cc",
- "function_sample.cc",
- "gradient_checker.cc",
- "gradient_checking_cost_function.cc",
- "gradient_problem.cc",
- "gradient_problem_solver.cc",
- "is_close.cc",
- "implicit_schur_complement.cc",
- "inner_product_computer.cc",
- "iterative_schur_complement_solver.cc",
- "lapack.cc",
- "levenberg_marquardt_strategy.cc",
- "line_search.cc",
- "line_search_direction.cc",
- "line_search_minimizer.cc",
- "linear_least_squares_problems.cc",
- "linear_operator.cc",
- "line_search_preprocessor.cc",
- "linear_solver.cc",
- "local_parameterization.cc",
- "loss_function.cc",
- "low_rank_inverse_hessian.cc",
- "minimizer.cc",
- "normal_prior.cc",
- "parameter_block_ordering.cc",
- "partitioned_matrix_view.cc",
- "polynomial.cc",
- "preconditioner.cc",
- "preprocessor.cc",
- "problem.cc",
- "problem_impl.cc",
- "program.cc",
- "reorder_program.cc",
- "residual_block.cc",
- "residual_block_utils.cc",
- "schur_complement_solver.cc",
- "schur_eliminator.cc",
- "schur_jacobi_preconditioner.cc",
- "schur_templates.cc",
- "scratch_evaluate_preparer.cc",
- "single_linkage_clustering.cc",
- "solver.cc",
- "solver_utils.cc",
- "sparse_cholesky.cc",
- "sparse_matrix.cc",
- "sparse_normal_cholesky_solver.cc",
- "split.cc",
- "stringprintf.cc",
- "suitesparse.cc",
- "thread_token_provider.cc",
- "triplet_sparse_matrix.cc",
- "trust_region_minimizer.cc",
- "trust_region_preprocessor.cc",
- "trust_region_step_evaluator.cc",
- "trust_region_strategy.cc",
- "types.cc",
- "visibility_based_preconditioner.cc",
- "visibility.cc",
- "wall_time.cc",
- "generated/schur_eliminator_d_d_d.cc",
- "generated/schur_eliminator_2_2_2.cc",
- "generated/schur_eliminator_2_2_3.cc",
- "generated/schur_eliminator_2_2_4.cc",
- "generated/schur_eliminator_2_2_d.cc",
- "generated/schur_eliminator_2_3_3.cc",
- "generated/schur_eliminator_2_3_4.cc",
- "generated/schur_eliminator_2_3_6.cc",
- "generated/schur_eliminator_2_3_9.cc",
- "generated/schur_eliminator_2_3_d.cc",
- "generated/schur_eliminator_2_4_3.cc",
- "generated/schur_eliminator_2_4_4.cc",
- "generated/schur_eliminator_2_4_6.cc",
- "generated/schur_eliminator_2_4_8.cc",
- "generated/schur_eliminator_2_4_9.cc",
- "generated/schur_eliminator_2_4_d.cc",
- "generated/schur_eliminator_2_d_d.cc",
- "generated/schur_eliminator_4_4_2.cc",
- "generated/schur_eliminator_4_4_3.cc",
- "generated/schur_eliminator_4_4_4.cc",
- "generated/schur_eliminator_4_4_d.cc",
- "generated/partitioned_matrix_view_d_d_d.cc",
- "generated/partitioned_matrix_view_2_2_2.cc",
- "generated/partitioned_matrix_view_2_2_3.cc",
- "generated/partitioned_matrix_view_2_2_4.cc",
- "generated/partitioned_matrix_view_2_2_d.cc",
- "generated/partitioned_matrix_view_2_3_3.cc",
- "generated/partitioned_matrix_view_2_3_4.cc",
- "generated/partitioned_matrix_view_2_3_6.cc",
- "generated/partitioned_matrix_view_2_3_9.cc",
- "generated/partitioned_matrix_view_2_3_d.cc",
- "generated/partitioned_matrix_view_2_4_3.cc",
- "generated/partitioned_matrix_view_2_4_4.cc",
- "generated/partitioned_matrix_view_2_4_6.cc",
- "generated/partitioned_matrix_view_2_4_8.cc",
- "generated/partitioned_matrix_view_2_4_9.cc",
- "generated/partitioned_matrix_view_2_4_d.cc",
- "generated/partitioned_matrix_view_2_d_d.cc",
- "generated/partitioned_matrix_view_4_4_2.cc",
- "generated/partitioned_matrix_view_4_4_3.cc",
- "generated/partitioned_matrix_view_4_4_4.cc",
- "generated/partitioned_matrix_view_4_4_d.cc",
-]]
+load("//:bazel/ceres.bzl", "ceres_library")
-# TODO(keir): This should get converted into a Skylark function that can
-# configure Ceres into various permutations, like SuiteSparse or not, threading
-# or not, glog or not, and so on.
-# See https://github.com/ceres-solver/ceres-solver/issues/335.
-cc_library(
- name = "ceres",
-
- # Internal sources, options, and dependencies.
- srcs = CERES_SRCS + glob([
- "include/ceres/internal/*.h",
- ]) + glob([
- "internal/ceres/*.h",
- ]),
-
- # These headers are made available to other targets.
- hdrs =
- glob(["include/ceres/*.h"]) + glob([
- "include/ceres/internal/*.h",
- ]) +
-
- # This is an empty config, since the Bazel-based build does not
- # generate a config.h from config.h.in. This is fine, since Bazel
- # properly handles propagating -D defines to dependent targets.
- glob([
- "config/ceres/internal/config.h",
- ]),
- copts = [
- "-Iinternal",
- "-Wno-sign-compare",
- ],
-
- # These include directories and defines are propagated to other targets
- # depending on Ceres.
- # TODO(keir): These defines are placeholders for now to facilitate getting
- # started with a Bazel build. However, these should become configurable as
- # part of a Skylark Ceres target macro.
- defines = [
- "CERES_NO_SUITESPARSE",
- "CERES_NO_CXSPARSE",
- "CERES_NO_THREADS",
- "CERES_NO_LAPACK",
- "CERES_STD_UNORDERED_MAP",
- ],
- includes = [
- "config",
- "include",
- ],
- visibility = ["//visibility:public"],
- deps = [
- "@com_github_eigen_eigen//:eigen",
- "@com_github_google_glog//:glog",
- ],
-)
+ceres_library(name = "ceres")
cc_library(
name = "test_util",