# Ceres Solver - A fast non-linear least squares minimizer
# Copyright 2018 Google Inc. All rights reserved.
# http://ceres-solver.org/
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
#   this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
#   this list of conditions and the following disclaimer in the documentation
#   and/or other materials provided with the distribution.
# * Neither the name of Google Inc. nor the names of its contributors may be
#   used to endorse or promote products derived from this software without
#   specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# Author: mierle@gmail.com (Keir Mierle)
#
# 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",
]]

# 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",
    ],
)

cc_library(
    name = "test_util",
    srcs = ["internal/ceres/" + x for x in [
        "evaluator_test_utils.cc",
        "numeric_diff_test_utils.cc",
        "test_util.cc",
        "gmock_gtest_all.cc",
        "gmock_main.cc",
    ]],
    hdrs = [
        "internal/ceres/gmock/gmock.h",
        "internal/ceres/gmock/mock-log.h",
        "internal/ceres/gtest/gtest.h",
    ],
    copts = [
        "-Wno-sign-compare",
        "-DCERES_TEST_SRCDIR_SUFFIX=\\\"data/\\\"",
    ],
    defines = [
        "CERES_GFLAGS_NAMESPACE=gflags",
    ],
    includes = [
        "internal",
        "internal/ceres",
    ],
    deps = [
        "//:ceres",
        "@com_github_gflags_gflags//:gflags",
    ],
)

CERES_TESTS = [
    "array_utils",
    "autodiff_cost_function",
    "autodiff_local_parameterization",
    "autodiff",
    "block_jacobi_preconditioner",
    "block_random_access_dense_matrix",
    "block_random_access_diagonal_matrix",
    "block_random_access_sparse_matrix",
    "block_sparse_matrix",
    "bundle_adjustment",
    "canonical_views_clustering",
    "c_api",
    "compressed_col_sparse_matrix_utils",
    "compressed_row_sparse_matrix",
    "conditioned_cost_function",
    "conjugate_gradients_solver",
    "corrector",
    "cost_function_to_functor",
    "covariance",
    "cubic_interpolation",
    "dense_linear_solver",
    "dense_sparse_matrix",
    "detect_structure",
    "dogleg_strategy",
    "dynamic_autodiff_cost_function",
    "dynamic_compressed_row_sparse_matrix",
    "dynamic_numeric_diff_cost_function",
    "dynamic_sparse_normal_cholesky_solver",
    "dynamic_sparsity",
    "evaluator",
    "gradient_checker",
    "gradient_checking_cost_function",
    "gradient_problem_solver",
    "gradient_problem",
    "graph_algorithms",
    "graph",
    "householder_vector",
    "implicit_schur_complement",
    "inner_product_computer",
    "invert_psd_matrix",
    "is_close",
    "iterative_schur_complement_solver",
    "jet",
    "levenberg_marquardt_strategy",
    "line_search_minimizer",
    "line_search_preprocessor",
    "local_parameterization",
    "loss_function",
    "minimizer",
    "normal_prior",
    "numeric_diff_cost_function",
    "ordered_groups",
    "parameter_block_ordering",
    "parameter_block",
    "partitioned_matrix_view",
    "polynomial",
    "problem",
    "program",
    "reorder_program",
    "residual_block",
    "residual_block_utils",
    "rotation",
    "schur_complement_solver",
    "schur_eliminator",
    "single_linkage_clustering",
    "small_blas",
    "solver",
    "sparse_cholesky",
    "sparse_normal_cholesky_solver",
    "system",
    "tiny_solver_autodiff_function",
    "tiny_solver_cost_function_adapter",
    "tiny_solver",
    "triplet_sparse_matrix",
    "trust_region_minimizer",
    "trust_region_preprocessor",
    "visibility_based_preconditioner",
    "visibility",
]

# Instantiate all the tests with a template.
# TODO(keir): Use a Skylark macro to support tests having unique settings, like
# big or small without duplicating the common components (deps, etc).
# See https://github.com/ceres-solver/ceres-solver/issues/336.
[cc_test(
    name = test_name + "_test",
    timeout = "long",
    srcs = ["internal/ceres/" + test_name + "_test.cc"],
    copts = [
        "-Wno-sign-compare",

        # These two warnings don't work well in conjunction with GMock, and
        # trigger incorrectly on parts of rotation_test. For now, disable them,
        # but in the future disable these warnings only for rotation_test.
        # TODO(keir): When the tests are macro-ified, apply these selectively.
        "-Wno-nonnull-compare",
        "-Wno-address",
    ],

    # Needed for bundle_adjustment_test.
    data = [":data/problem-16-22106-pre.txt"],
    deps = [
        "//:ceres",
        "//:test_util",
        "@com_github_eigen_eigen//:eigen",
        "@com_github_gflags_gflags//:gflags",
    ],
) for test_name in CERES_TESTS]
