diff --git a/internal/ceres/block_sparse_matrix.cc b/internal/ceres/block_sparse_matrix.cc
index 9c737b5..dbe5ec9 100644
--- a/internal/ceres/block_sparse_matrix.cc
+++ b/internal/ceres/block_sparse_matrix.cc
@@ -81,7 +81,7 @@
   CHECK_NOTNULL(values_.get());
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 BlockSparseMatrix::BlockSparseMatrix(const SparseMatrixProto& outer_proto) {
   CHECK(outer_proto.has_block_matrix());
 
@@ -244,7 +244,7 @@
   return block_structure_.get();
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 void BlockSparseMatrix::ToProto(SparseMatrixProto* outer_proto) const {
   outer_proto->Clear();
 
diff --git a/internal/ceres/block_sparse_matrix.h b/internal/ceres/block_sparse_matrix.h
index f0be335..513d398 100644
--- a/internal/ceres/block_sparse_matrix.h
+++ b/internal/ceres/block_sparse_matrix.h
@@ -96,7 +96,7 @@
   explicit BlockSparseMatrix(CompressedRowBlockStructure* block_structure);
 
   // Construct a block sparse matrix from a protocol buffer.
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   explicit BlockSparseMatrix(const SparseMatrixProto& proto);
 #endif
 
@@ -110,7 +110,7 @@
   virtual void SquaredColumnNorm(double* x) const;
   virtual void ScaleColumns(const double* scale);
   virtual void ToDenseMatrix(Matrix* dense_matrix) const;
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   virtual void ToProto(SparseMatrixProto* proto) const;
 #endif
   virtual void ToTextFile(FILE* file) const;
diff --git a/internal/ceres/block_sparse_matrix_test.cc b/internal/ceres/block_sparse_matrix_test.cc
index 5497365..457a2fb 100644
--- a/internal/ceres/block_sparse_matrix_test.cc
+++ b/internal/ceres/block_sparse_matrix_test.cc
@@ -109,7 +109,7 @@
   EXPECT_LT((m_a - m_b).norm(), 1e-12);
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TEST_F(BlockSparseMatrixTest, Serialization) {
   // Roundtrip through serialization and check for equality.
   SparseMatrixProto proto;
diff --git a/internal/ceres/block_structure.cc b/internal/ceres/block_structure.cc
index 5add4f3..e611311 100644
--- a/internal/ceres/block_structure.cc
+++ b/internal/ceres/block_structure.cc
@@ -38,7 +38,7 @@
   return (lhs.block_id < rhs.block_id);
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 void ProtoToBlockStructure(const BlockStructureProto &proto,
                            CompressedRowBlockStructure *block_structure) {
   // Decode the column blocks.
diff --git a/internal/ceres/compressed_row_sparse_matrix.cc b/internal/ceres/compressed_row_sparse_matrix.cc
index 00feda8..1b61468 100644
--- a/internal/ceres/compressed_row_sparse_matrix.cc
+++ b/internal/ceres/compressed_row_sparse_matrix.cc
@@ -135,7 +135,7 @@
   CHECK_EQ(num_nonzeros(), m.num_nonzeros());
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 CompressedRowSparseMatrix::CompressedRowSparseMatrix(
     const SparseMatrixProto& outer_proto) {
   CHECK(outer_proto.has_compressed_row_matrix());
@@ -248,7 +248,7 @@
   }
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 void CompressedRowSparseMatrix::ToProto(SparseMatrixProto* outer_proto) const {
   CHECK_NOTNULL(outer_proto);
 
diff --git a/internal/ceres/compressed_row_sparse_matrix.h b/internal/ceres/compressed_row_sparse_matrix.h
index 04b5542..6a9d828 100644
--- a/internal/ceres/compressed_row_sparse_matrix.h
+++ b/internal/ceres/compressed_row_sparse_matrix.h
@@ -57,7 +57,7 @@
   //
   // We assume that m does not have any repeated entries.
   explicit CompressedRowSparseMatrix(const TripletSparseMatrix& m);
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   explicit CompressedRowSparseMatrix(const SparseMatrixProto& proto);
 #endif
 
@@ -90,7 +90,7 @@
   virtual void ScaleColumns(const double* scale);
 
   virtual void ToDenseMatrix(Matrix* dense_matrix) const;
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   virtual void ToProto(SparseMatrixProto* proto) const;
 #endif
   virtual void ToTextFile(FILE* file) const;
diff --git a/internal/ceres/compressed_row_sparse_matrix_test.cc b/internal/ceres/compressed_row_sparse_matrix_test.cc
index 8a01ea8..c9c3f14 100644
--- a/internal/ceres/compressed_row_sparse_matrix_test.cc
+++ b/internal/ceres/compressed_row_sparse_matrix_test.cc
@@ -146,7 +146,7 @@
   }
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TEST_F(CompressedRowSparseMatrixTest, Serialization) {
   SparseMatrixProto proto;
   crsm->ToProto(&proto);
diff --git a/internal/ceres/dense_sparse_matrix.cc b/internal/ceres/dense_sparse_matrix.cc
index 5d392ba..86730cc 100644
--- a/internal/ceres/dense_sparse_matrix.cc
+++ b/internal/ceres/dense_sparse_matrix.cc
@@ -67,7 +67,7 @@
       has_diagonal_reserved_(false) {
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 DenseSparseMatrix::DenseSparseMatrix(const SparseMatrixProto& outer_proto)
     : m_(Eigen::MatrixXd::Zero(
         outer_proto.dense_matrix().num_rows(),
@@ -108,7 +108,7 @@
   *dense_matrix = m_;
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 void DenseSparseMatrix::ToProto(SparseMatrixProto* outer_proto) const {
   CHECK(!has_diagonal_appended_) << "Not supported.";
   outer_proto->Clear();
@@ -183,7 +183,7 @@
   CHECK_NOTNULL(file);
   const int active_rows =
       (has_diagonal_reserved_ && !has_diagonal_appended_)
-      ? (m_.rows() - m_.cols()) 
+      ? (m_.rows() - m_.cols())
       : m_.rows();
 
   for (int r = 0; r < active_rows; ++r) {
diff --git a/internal/ceres/dense_sparse_matrix.h b/internal/ceres/dense_sparse_matrix.h
index 416c214..e7ad14d 100644
--- a/internal/ceres/dense_sparse_matrix.h
+++ b/internal/ceres/dense_sparse_matrix.h
@@ -52,7 +52,7 @@
   // m. This assumes that m does not have any repeated entries.
   explicit DenseSparseMatrix(const TripletSparseMatrix& m);
   explicit DenseSparseMatrix(const Matrix& m);
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   explicit DenseSparseMatrix(const SparseMatrixProto& proto);
 #endif
 
@@ -67,7 +67,7 @@
   virtual void SquaredColumnNorm(double* x) const;
   virtual void ScaleColumns(const double* scale);
   virtual void ToDenseMatrix(Matrix* dense_matrix) const;
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   virtual void ToProto(SparseMatrixProto* proto) const;
 #endif
   virtual void ToTextFile(FILE* file) const;
diff --git a/internal/ceres/dense_sparse_matrix_test.cc b/internal/ceres/dense_sparse_matrix_test.cc
index d7d64e3..354357f 100644
--- a/internal/ceres/dense_sparse_matrix_test.cc
+++ b/internal/ceres/dense_sparse_matrix_test.cc
@@ -155,7 +155,7 @@
   CompareMatrices(tsm.get(), dsm.get());
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TEST_F(DenseSparseMatrixTest, Serialization) {
   SparseMatrixProto proto;
   dsm->ToProto(&proto);
@@ -182,7 +182,7 @@
 }
 
 // TODO(keir): Make this work without protocol buffers.
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TEST_F(DenseSparseMatrixTest, AppendDiagonal) {
   DenseSparseMatrixProto proto;
   proto.set_num_rows(3);
diff --git a/internal/ceres/linear_least_squares_problems.cc b/internal/ceres/linear_least_squares_problems.cc
index 234fc5e..3e3bcd0 100644
--- a/internal/ceres/linear_least_squares_problems.cc
+++ b/internal/ceres/linear_least_squares_problems.cc
@@ -64,7 +64,7 @@
   return NULL;
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 LinearLeastSquaresProblem* CreateLinearLeastSquaresProblemFromFile(
     const string& filename) {
   LinearLeastSquaresProblemProto problem_proto;
@@ -130,7 +130,7 @@
       << "Ceres to be built with Protocol Buffers support.";
   return NULL;
 }
-#endif  // CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#endif  // CERES_NO_PROTOCOL_BUFFERS
 
 /*
 A = [1   2]
@@ -600,7 +600,7 @@
   return true;
 };
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 bool DumpLinearLeastSquaresProblemToProtocolBuffer(const string& directory,
                                                    int iteration,
                                                    const SparseMatrix* A,
diff --git a/internal/ceres/matrix_proto.h b/internal/ceres/matrix_proto.h
index b8a3a1a..94b3076 100644
--- a/internal/ceres/matrix_proto.h
+++ b/internal/ceres/matrix_proto.h
@@ -33,7 +33,7 @@
 #ifndef CERES_INTERNAL_MATRIX_PROTO_H_
 #define CERES_INTERNAL_MATRIX_PROTO_H_
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 #include "ceres/matrix.pb.h"
 #endif
 
diff --git a/internal/ceres/schur_eliminator_test.cc b/internal/ceres/schur_eliminator_test.cc
index c14901f..0b55a14 100644
--- a/internal/ceres/schur_eliminator_test.cc
+++ b/internal/ceres/schur_eliminator_test.cc
@@ -214,7 +214,7 @@
   EliminateSolveAndCompare(VectorRef(D.get(), A->num_cols()), false, 1e-14);
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TEST_F(SchurEliminatorTest, BlockProblem) {
   const string input_file = TestFileAbsolutePath("problem-6-1384-000.lsqp");
 
@@ -223,7 +223,7 @@
   EliminateSolveAndCompare(VectorRef(D.get(), A->num_cols()), true, 1e-10);
   EliminateSolveAndCompare(VectorRef(D.get(), A->num_cols()), false, 1e-10);
 }
-#endif  // CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#endif  // CERES_NO_PROTOCOL_BUFFERS
 
 }  // namespace internal
 }  // namespace ceres
diff --git a/internal/ceres/sparse_matrix.h b/internal/ceres/sparse_matrix.h
index 562210d..1b19f88 100644
--- a/internal/ceres/sparse_matrix.h
+++ b/internal/ceres/sparse_matrix.h
@@ -86,7 +86,7 @@
   // sparse matrix.
   virtual void ToDenseMatrix(Matrix* dense_matrix) const = 0;
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   // Dump the sparse matrix to a proto. Destroys the contents of proto.
   virtual void ToProto(SparseMatrixProto* proto) const = 0;
 #endif
diff --git a/internal/ceres/triplet_sparse_matrix.cc b/internal/ceres/triplet_sparse_matrix.cc
index 4060907..ed8677e 100644
--- a/internal/ceres/triplet_sparse_matrix.cc
+++ b/internal/ceres/triplet_sparse_matrix.cc
@@ -82,7 +82,7 @@
   CopyData(orig);
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TripletSparseMatrix::TripletSparseMatrix(const SparseMatrixProto& outer_proto) {
   CHECK(outer_proto.has_triplet_matrix());
 
@@ -214,7 +214,7 @@
   }
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 void TripletSparseMatrix::ToProto(SparseMatrixProto *proto) const {
   proto->Clear();
 
diff --git a/internal/ceres/triplet_sparse_matrix.h b/internal/ceres/triplet_sparse_matrix.h
index 300e74d..89a645b 100644
--- a/internal/ceres/triplet_sparse_matrix.h
+++ b/internal/ceres/triplet_sparse_matrix.h
@@ -50,7 +50,7 @@
   TripletSparseMatrix();
   TripletSparseMatrix(int num_rows, int num_cols, int max_num_nonzeros);
   explicit TripletSparseMatrix(const TripletSparseMatrix& orig);
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   explicit TripletSparseMatrix(const SparseMatrixProto& proto);
 #endif
 
@@ -65,7 +65,7 @@
   virtual void SquaredColumnNorm(double* x) const;
   virtual void ScaleColumns(const double* scale);
   virtual void ToDenseMatrix(Matrix* dense_matrix) const;
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
   virtual void ToProto(SparseMatrixProto *proto) const;
 #endif
   virtual void ToTextFile(FILE* file) const;
diff --git a/internal/ceres/triplet_sparse_matrix_test.cc b/internal/ceres/triplet_sparse_matrix_test.cc
index 4c94658..6bdd2bd 100644
--- a/internal/ceres/triplet_sparse_matrix_test.cc
+++ b/internal/ceres/triplet_sparse_matrix_test.cc
@@ -318,7 +318,7 @@
   }
 }
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TEST(TripletSparseMatrix, Serialization) {
   TripletSparseMatrix m(2, 5, 4);
 
diff --git a/internal/ceres/visibility_based_preconditioner_test.cc b/internal/ceres/visibility_based_preconditioner_test.cc
index bf01acb..9973d69 100644
--- a/internal/ceres/visibility_based_preconditioner_test.cc
+++ b/internal/ceres/visibility_based_preconditioner_test.cc
@@ -232,7 +232,7 @@
   scoped_ptr<BlockRandomAccessDenseMatrix> schur_complement_;
 };
 
-#ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#ifndef CERES_NO_PROTOCOL_BUFFERS
 TEST_F(VisibilityBasedPreconditionerTest, SchurJacobiStructure) {
   options_.preconditioner_type = SCHUR_JACOBI;
   preconditioner_.reset(
@@ -352,7 +352,7 @@
   EXPECT_TRUE(IsSparsityStructureValid());
   EXPECT_TRUE(PreconditionerValuesMatch());
 }
-#endif  // CERES_DONT_HAVE_PROTOCOL_BUFFERS
+#endif  // CERES_NO_PROTOCOL_BUFFERS
 
 }  // namespace internal
 }  // namespace ceres
