diff --git a/include/core/SkPreConfig.h b/include/core/SkPreConfig.h
index a3106e5..0a5170c 100644
--- a/include/core/SkPreConfig.h
+++ b/include/core/SkPreConfig.h
@@ -77,7 +77,7 @@
 
 //////////////////////////////////////////////////////////////////////
 
-#if (defined(__arm__) && !defined(__thumb__)) || defined(SK_BUILD_FOR_BREW) || defined(SK_BUILD_FOR_WINCE) || (defined(SK_BUILD_FOR_SYMBIAN) && !defined(__MARM_THUMB__))
+#if (defined(__arm__) && !defined(__thumb__)) || defined(SK_BUILD_FOR_WINCE) || (defined(SK_BUILD_FOR_SYMBIAN) && !defined(__MARM_THUMB__))
     /* e.g. the ARM instructions have conditional execution, making tiny branches cheap */
     #define SK_CPU_HAS_CONDITIONAL_INSTR
 #endif
diff --git a/src/animator/SkAnimator.cpp b/src/animator/SkAnimator.cpp
index 242398b..830f453 100644
--- a/src/animator/SkAnimator.cpp
+++ b/src/animator/SkAnimator.cpp
@@ -42,24 +42,13 @@
     #define _static static
 #endif
 
-#if !defined SK_BUILD_FOR_BREW || defined SK_DEBUG
-    _static const char gMathPrimerText[] = 
-    "<screenplay>"
-        "<Math id=\"Math\"/>"
-        "<Number id=\"Number\"/>"
-    "</screenplay>";
-#endif
+_static const char gMathPrimerText[] = 
+"<screenplay>"
+    "<Math id=\"Math\"/>"
+    "<Number id=\"Number\"/>"
+"</screenplay>";
 
-#if defined SK_BUILD_FOR_BREW || defined SK_DEBUG
-    _static const char gMathPrimerBinary[] = 
-    "\x0Ascreenplay\x04Mathbid\x04Math@@";  // !!! now out of date -- does not include Number
-#endif
-
-#if defined SK_BUILD_FOR_BREW
-    #define gMathPrimer gMathPrimerBinary
-#else
-    #define gMathPrimer gMathPrimerText
-#endif
+#define gMathPrimer gMathPrimerText
 
 SkAnimator::SkAnimator() : fMaker(NULL) {
     initialize();
diff --git a/src/animator/SkAnimatorScript.cpp b/src/animator/SkAnimatorScript.cpp
index eafe1db..cc111ca 100644
--- a/src/animator/SkAnimatorScript.cpp
+++ b/src/animator/SkAnimatorScript.cpp
@@ -519,8 +519,6 @@
     "</event>\n"
 "</screenplay>";
 
-#if !defined(SK_BUILD_FOR_BREW)
-
 #define DEFAULT_ANSWER   , 0
 
 static const SkScriptNAnswer scriptTests[]  = {
@@ -559,12 +557,11 @@
     {   "0 ? alpha.value.slice(1,2) : 1", SkType_Int, 1 DEFAULT_ANSWER DEFAULT_ANSWER },
     { "idy", SkType_Int, 3 DEFAULT_ANSWER DEFAULT_ANSWER }
 };
-#endif
 
 #define SkScriptNAnswer_testCount   SK_ARRAY_COUNT(scriptTests)
 
 void SkAnimatorScript::UnitTest() {
-#if !defined(SK_BUILD_FOR_BREW) && defined(SK_SUPPORT_UNITTEST)
+#if defined(SK_SUPPORT_UNITTEST)
     SkAnimator animator;
     SkASSERT(animator.decodeMemory(scriptTestSetup, sizeof(scriptTestSetup)-1));
     SkEvent evt;
diff --git a/src/animator/SkAnimatorScript2.cpp b/src/animator/SkAnimatorScript2.cpp
index 08dbf16..3b8ec69 100644
--- a/src/animator/SkAnimatorScript2.cpp
+++ b/src/animator/SkAnimatorScript2.cpp
@@ -543,7 +543,6 @@
 	"</event>"
 "</screenplay>";
 
-#if !defined(SK_BUILD_FOR_BREW)
 static const SkScriptNAnswer scriptTests[]  = {
 	{	"alpha+alpha", SkType_String, 0, 0, "abcabc" },
 	{	"0 ? Math.sin(0) : 1", SkType_Int, 1 },
@@ -572,12 +571,11 @@
 	{	"0 ? alpha.value.slice(1,2) : 1", SkType_Int, 1 },
 	{ "idy", SkType_Int, 3 }
 };
-#endif
 
 #define SkScriptNAnswer_testCount	SK_ARRAY_COUNT(scriptTests)
 
 void SkAnimatorScript2::UnitTest() {
-#if !defined(SK_BUILD_FOR_BREW) && defined(SK_SUPPORT_UNITTEST)
+#if defined(SK_SUPPORT_UNITTEST)
 	SkAnimator animator;
 	SkASSERT(animator.decodeMemory(scriptTestSetup, sizeof(scriptTestSetup)-1));
 	SkEvent evt;
diff --git a/src/animator/SkMemberInfo.h b/src/animator/SkMemberInfo.h
index e45994e..4f25145 100644
--- a/src/animator/SkMemberInfo.h
+++ b/src/animator/SkMemberInfo.h
@@ -20,10 +20,6 @@
 
 #if defined SK_BUILD_CONDENSED
     #define SK_USE_CONDENSED_INFO 0
-#elif defined  SK_BUILD_FOR_BREW
-    #define SK_USE_CONDENSED_INFO 1 /* required by BREW to handle its lack of writable globals */
-#else
-    #define SK_USE_CONDENSED_INFO 0 /* optional, but usually 1 unless Cary is testing something */
 #endif
 
 #include "SkDisplayType.h"
diff --git a/src/animator/SkScript.cpp b/src/animator/SkScript.cpp
index 3b67d7b..f81147d 100644
--- a/src/animator/SkScript.cpp
+++ b/src/animator/SkScript.cpp
@@ -1670,7 +1670,6 @@
 #define testTrue(expression) { #expression, SkType_Int, 1, DEF_SCALAR_ANSWER, DEF_STRING_ANSWER }
 #define testFalse(expression) { #expression, SkType_Int, 0, DEF_SCALAR_ANSWER, DEF_STRING_ANSWER }
 
-#if !defined(SK_BUILD_FOR_BREW)
 static const SkScriptNAnswer scriptTests[]  = {
     testInt(1>1/2),
     testInt((6+7)*8),
@@ -1884,12 +1883,10 @@
     , { "123.5", SkType_Float, 0, SkIntToScalar(123) + SK_Scalar1/2, DEF_STRING_ANSWER }
 #endif
 };
-#endif // build for brew
 
 #define SkScriptNAnswer_testCount   SK_ARRAY_COUNT(scriptTests)
 
 void SkScriptEngine::UnitTest() {
-#if !defined(SK_BUILD_FOR_BREW)
     for (unsigned index = 0; index < SkScriptNAnswer_testCount; index++) {
         SkScriptEngine engine(SkScriptEngine::ToOpType(scriptTests[index].fType));
         SkScriptValue value;
@@ -1912,7 +1909,6 @@
                 SkASSERT(0);
         }
     }
-#endif
 }
 #endif
 
diff --git a/src/animator/SkScriptTokenizer.cpp b/src/animator/SkScriptTokenizer.cpp
index 6be2abd..efd1872 100644
--- a/src/animator/SkScriptTokenizer.cpp
+++ b/src/animator/SkScriptTokenizer.cpp
@@ -1274,7 +1274,6 @@
 #define testTrue(expression) { #expression, SkOperand2::kS32, 1 }
 #define testFalse(expression) { #expression, SkOperand2::kS32, 0 }
 
-#if !defined(SK_BUILD_FOR_BREW)
 static const SkScriptNAnswer2 scriptTests[]  = {
     testInt(1||0&&3),
 #ifdef SK_CAN_USE_FLOAT
@@ -1473,12 +1472,11 @@
     , {    "123.5", SkOperand2::kScalar, 0, SkIntToScalar(123) + SK_Scalar1/2 }
 #endif
 };
-#endif // build for brew
 
 #define SkScriptNAnswer_testCount    SK_ARRAY_COUNT(scriptTests)
 
 void SkScriptEngine2::UnitTest() {
-#if !defined(SK_BUILD_FOR_BREW) && defined(SK_SUPPORT_UNITTEST)
+#if defined(SK_SUPPORT_UNITTEST)
     ValidateDecompileTable();
     for (int index = 0; index < SkScriptNAnswer_testCount; index++) {
         SkScriptEngine2 engine(scriptTests[index].fType);
diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp
index 4def146..6187f81 100644
--- a/src/core/SkStream.cpp
+++ b/src/core/SkStream.cpp
@@ -187,11 +187,6 @@
 
 SkFILEStream::SkFILEStream(const char file[]) : fName(file)
 {
-#ifdef SK_BUILD_FOR_BREW
-    if (SkStrEndsWith(fName.c_str(), ".xml"))
-        fName.writable_str()[fName.size()-3] = 'b';
-#endif
-
     fFILE = file ? sk_fopen(fName.c_str(), kRead_SkFILE_Flag) : NULL;
 }
 
@@ -204,11 +199,6 @@
 void SkFILEStream::setPath(const char path[])
 {
     fName.set(path);
-#ifdef SK_BUILD_FOR_BREW
-    if (SkStrEndsWith(fName.c_str(), ".xml"))
-        fName.writable_str()[fName.size()-3] = 'b';
-#endif
-
     if (fFILE)
     {
         sk_fclose(fFILE);
diff --git a/src/ports/SkOSFile_stdio.cpp b/src/ports/SkOSFile_stdio.cpp
index 7438f7b..f6fa818 100644
--- a/src/ports/SkOSFile_stdio.cpp
+++ b/src/ports/SkOSFile_stdio.cpp
@@ -17,8 +17,6 @@
 
 #include "SkOSFile.h"
 
-#ifndef SK_BUILD_FOR_BREW
-
 #include <stdio.h>
 #include <errno.h>
 
@@ -102,5 +100,3 @@
     ::fclose((FILE*)f);
 }
 
-#endif
-
