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",
