Add ability to query available linear algebra backend.

Change-Id: Ide349a04a69b1a377ea789b355e00b210ec792ba
diff --git a/include/ceres/types.h b/include/ceres/types.h
index 2c0b7bd..30dcada 100644
--- a/include/ceres/types.h
+++ b/include/ceres/types.h
@@ -324,7 +324,11 @@
     LinearSolverTerminationType type);
 
 const char* SolverTerminationTypeToString(SolverTerminationType type);
+
 bool IsSchurType(LinearSolverType type);
+bool IsSparseLinearAlgebraLibraryTypeAvailable(
+    SparseLinearAlgebraLibraryType type);
+
 
 }  // namespace ceres
 
diff --git a/internal/ceres/types.cc b/internal/ceres/types.cc
index 9339bc4..74c6af4 100644
--- a/internal/ceres/types.cc
+++ b/internal/ceres/types.cc
@@ -201,4 +201,26 @@
           (type == ITERATIVE_SCHUR));
 }
 
+bool IsSparseLinearAlgebraLibraryTypeAvailable(
+    SparseLinearAlgebraLibraryType type) {
+  if (type == SUITE_SPARSE) {
+#ifdef CERES_NO_SUITESPARSE
+    return false;
+#else
+    return true;
+#endif
+  }
+
+  if (type == CX_SPARSE) {
+#ifdef CERES_NO_CXSPARSE
+    return false;
+#else
+    return true;
+#endif
+  }
+
+  LOG(WARNING) << "Unknown sparse linear algebra library " << type;
+  return false;
+}
+
 }  // namespace ceres