diff --git a/include/core/Sk64.h b/include/core/Sk64.h
index c4ae41e..538ae7e 100644
--- a/include/core/Sk64.h
+++ b/include/core/Sk64.h
@@ -84,7 +84,7 @@
     SkBool  isPos() const { return ~(fHi >> 31) & (fHi | fLo); }
 
     /** Returns -1,0,+1 based on the sign of the number */
-    int     sign() const { return (fHi >> 31) | Sk32ToBool(fHi | fLo); }
+    int     getSign() const { return (fHi >> 31) | Sk32ToBool(fHi | fLo); }
 
     /** Negate the number */
     void    negate();
diff --git a/include/core/SkColorPriv.h b/include/core/SkColorPriv.h
index 4d41374..88028cb 100644
--- a/include/core/SkColorPriv.h
+++ b/include/core/SkColorPriv.h
@@ -142,7 +142,7 @@
 }
 
 #ifdef SK_DEBUG
-    static U16CPU SkRGB16Add(U16CPU a, U16CPU b) {
+    static inline U16CPU SkRGB16Add(U16CPU a, U16CPU b) {
         SkASSERT(SkGetPackedR16(a) + SkGetPackedR16(b) <= SK_R16_MASK);
         SkASSERT(SkGetPackedG16(a) + SkGetPackedG16(b) <= SK_G16_MASK);
         SkASSERT(SkGetPackedB16(a) + SkGetPackedB16(b) <= SK_B16_MASK);
diff --git a/include/core/SkFloatingPoint.h b/include/core/SkFloatingPoint.h
index d3a6fc5..68bf6ef 100644
--- a/include/core/SkFloatingPoint.h
+++ b/include/core/SkFloatingPoint.h
@@ -47,8 +47,8 @@
     #define sk_float_floor(x)       floorf(x)
     #define sk_float_ceil(x)        ceilf(x)
 #ifdef SK_BUILD_FOR_MAC
-    #define sk_float_acos(x)        acos(x)
-    #define sk_float_asin(x)        asin(x)
+    #define sk_float_acos(x)        static_cast<float>(acos(x))
+    #define sk_float_asin(x)        static_cast<float>(asin(x))
 #else
     #define sk_float_acos(x)        acosf(x)
     #define sk_float_asin(x)        asinf(x)
diff --git a/include/core/SkPoint.h b/include/core/SkPoint.h
index f038afb..d23f696 100644
--- a/include/core/SkPoint.h
+++ b/include/core/SkPoint.h
@@ -178,7 +178,7 @@
     /** Scale the point's coordinates by scale, writing the answer back into
         the point.
     */
-    void scale(SkScalar scale) { this->scale(scale, this); }
+    void scale(SkScalar value) { this->scale(value, this); }
 
     /** Rotate the point clockwise by 90 degrees, writing the answer into dst.
         It is legal for dst == this.
diff --git a/include/core/SkScan.h b/include/core/SkScan.h
index 379c016..037dc09 100644
--- a/include/core/SkScan.h
+++ b/include/core/SkScan.h
@@ -83,7 +83,7 @@
     from int to SkFixed. Does not check for overflow if the src coordinates
     exceed 32K
 */
-static void XRect_set(SkXRect* xr, const SkIRect& src) {
+static inline void XRect_set(SkXRect* xr, const SkIRect& src) {
     xr->fLeft = SkIntToFixed(src.fLeft);
     xr->fTop = SkIntToFixed(src.fTop);
     xr->fRight = SkIntToFixed(src.fRight);
@@ -94,7 +94,7 @@
     from SkScalar to SkFixed. Does not check for overflow if the src coordinates
     exceed 32K
 */
-static void XRect_set(SkXRect* xr, const SkRect& src) {
+static inline void XRect_set(SkXRect* xr, const SkRect& src) {
     xr->fLeft = SkScalarToFixed(src.fLeft);
     xr->fTop = SkScalarToFixed(src.fTop);
     xr->fRight = SkScalarToFixed(src.fRight);
@@ -103,7 +103,7 @@
 
 /** Round the SkXRect coordinates, and store the result in the SkIRect.
 */
-static void XRect_round(const SkXRect& xr, SkIRect* dst) {
+static inline void XRect_round(const SkXRect& xr, SkIRect* dst) {
     dst->fLeft = SkFixedRound(xr.fLeft);
     dst->fTop = SkFixedRound(xr.fTop);
     dst->fRight = SkFixedRound(xr.fRight);
@@ -113,7 +113,7 @@
 /** Round the SkXRect coordinates out (i.e. use floor for left/top, and ceiling
     for right/bottom), and store the result in the SkIRect.
 */
-static void XRect_roundOut(const SkXRect& xr, SkIRect* dst) {
+static inline void XRect_roundOut(const SkXRect& xr, SkIRect* dst) {
     dst->fLeft = SkFixedFloor(xr.fLeft);
     dst->fTop = SkFixedFloor(xr.fTop);
     dst->fRight = SkFixedCeil(xr.fRight);
diff --git a/src/core/Sk64.cpp b/src/core/Sk64.cpp
index 6013bd7..2715d23 100644
--- a/src/core/Sk64.cpp
+++ b/src/core/Sk64.cpp
@@ -387,7 +387,7 @@
     SkASSERT(!a.isZero() == !table.zero);
     SkASSERT(!a.isPos() == !table.pos);
     SkASSERT(!a.isNeg() == !table.neg);
-    SkASSERT(a.sign() == table.sign);
+    SkASSERT(a.getSign() == table.sign);
 }
 
 #ifdef SkLONGLONG
diff --git a/src/core/SkFP.h b/src/core/SkFP.h
index 6c0c526..5e25d22 100644
--- a/src/core/SkFP.h
+++ b/src/core/SkFP.h
@@ -41,7 +41,7 @@
     #define SkFPDivInt(a, n)        ((a) / (n))
     #define SkFPInvert(x)           SkScalarInvert(x)
     #define SkFPSqrt(x)             SkScalarSqrt(x)
-    #define SkFPCubeRoot(x)         pow(x, 1.0f/3)
+    #define SkFPCubeRoot(x)         static_cast<float>(pow(x, 0.33333333333))
 
     #define SkFPLT(a, b)            ((a) < (b))
     #define SkFPLE(a, b)            ((a) <= (b))
diff --git a/src/core/SkGeometry.cpp b/src/core/SkGeometry.cpp
index 4f22e92..7e2d424 100644
--- a/src/core/SkGeometry.cpp
+++ b/src/core/SkGeometry.cpp
@@ -255,12 +255,12 @@
 #endif
 }
 
-static void flatten_double_quad_extrema(SkScalar coords[14])
+static inline void flatten_double_quad_extrema(SkScalar coords[14])
 {
     coords[2] = coords[6] = coords[4];
 }
 
-static void force_quad_monotonic_in_y(SkPoint pts[3])
+static inline void force_quad_monotonic_in_y(SkPoint pts[3])
 {
     // zap pts[1].fY to the nearest value
     SkScalar ab = SkScalarAbs(pts[0].fY - pts[1].fY);
diff --git a/src/core/SkGraphics.cpp b/src/core/SkGraphics.cpp
index 64fbab9..2ad44cd 100644
--- a/src/core/SkGraphics.cpp
+++ b/src/core/SkGraphics.cpp
@@ -228,6 +228,7 @@
     return sum;
 }
 
+#if 0
 static float time_intToFloat() {
     const int repeat = 1000000;
     int i, n;
@@ -266,6 +267,7 @@
 
     return sum;
 }
+#endif
 
 void SkGraphics::Init(bool runUnitTests)
 {
diff --git a/src/core/SkMMapStream.cpp b/src/core/SkMMapStream.cpp
index 017bcaf..78cb3f3 100644
--- a/src/core/SkMMapStream.cpp
+++ b/src/core/SkMMapStream.cpp
@@ -16,8 +16,8 @@
         return;
     }
 
-    off_t size = lseek(fildes, 0, SEEK_END);    // find the file size
-    if (size == -1)
+    off_t offset = lseek(fildes, 0, SEEK_END);    // find the file size
+    if (offset == -1)
     {
         SkDEBUGF(("---- failed to lseek(%s) for mmap stream error=%d\n", filename, errno));
         close(fildes);
@@ -25,6 +25,9 @@
     }
     (void)lseek(fildes, 0, SEEK_SET);   // restore file offset to beginning
 
+    // to avoid a 64bit->32bit warning, I explicitly create a size_t size
+    size_t size = static_cast<size_t>(offset);
+
     void* addr = mmap(NULL, size, PROT_READ, MAP_SHARED, fildes, 0);
     if (MAP_FAILED == addr)
     {
diff --git a/src/core/SkMath.cpp b/src/core/SkMath.cpp
index c627d9b..2655586 100644
--- a/src/core/SkMath.cpp
+++ b/src/core/SkMath.cpp
@@ -140,7 +140,7 @@
     tmp.shiftRight(16);
     return tmp.fLo;
 #elif defined(SkLONGLONG)
-    return (SkLONGLONG)a * b >> 16;
+    return static_cast<SkFixed>((SkLONGLONG)a * b >> 16);
 #else
     int sa = SkExtractSign(a);
     int sb = SkExtractSign(b);
@@ -165,7 +165,7 @@
     tmp.setMul(a, b);
     return tmp.getFract();
 #elif defined(SkLONGLONG)
-    return (SkLONGLONG)a * b >> 30;
+    return static_cast<SkFract>((SkLONGLONG)a * b >> 30);
 #else
     int sa = SkExtractSign(a);
     int sb = SkExtractSign(b);
@@ -550,7 +550,7 @@
 
 #include "SkRandom.h"
 
-#ifdef SkLONGLONG
+#if defined(SkLONGLONG) && defined(SK_SUPPORT_UNITTEST)
 static int symmetric_fixmul(int a, int b) {
     int sa = SkExtractSign(a);
     int sb = SkExtractSign(b);
@@ -586,7 +586,7 @@
 }
 #endif
 
-#ifdef SK_CAN_USE_FLOAT
+#if defined(SK_CAN_USE_FLOAT) && defined(SK_SUPPORT_UNITTEST)
 
 static float nextFloat(SkRandom& rand) {
     SkFloatIntUnion data;
@@ -696,6 +696,7 @@
 
 #endif
 
+#ifdef SK_SUPPORT_UNITTEST
 static void test_muldiv255() {
     for (int a = 0; a <= 255; a++) {
         for (int b = 0; b <= 255; b++) {
@@ -716,6 +717,7 @@
         }
     }
 }
+#endif
 
 void SkMath::UnitTest() {    
 #ifdef SK_SUPPORT_UNITTEST
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index bb6b31e..691da41 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -367,26 +367,6 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-static uint32_t sk_glyphID_next(const char** text)
-{
-    const uint16_t* glyph = (const uint16_t*)text;
-    int32_t value = *glyph;
-    glyph += 1;
-    *text = (const char*)glyph;
-    return value;
-}
-
-static uint32_t sk_glyphID_prev(const char** text)
-{
-    const uint16_t* glyph = (const uint16_t*)text;
-    glyph -= 1;
-    int32_t value = *glyph;
-    *text = (const char*)glyph;
-    return value;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
 static const SkGlyph& sk_getMetrics_utf8_next(SkGlyphCache* cache, const char** text)
 {
     SkASSERT(cache != NULL);
diff --git a/src/core/SkScalerContext.cpp b/src/core/SkScalerContext.cpp
index 854c4de..f63e729 100644
--- a/src/core/SkScalerContext.cpp
+++ b/src/core/SkScalerContext.cpp
@@ -182,17 +182,6 @@
     return ctx;
 }
 
-static int plus_minus_pin(int value, int max) {
-    SkASSERT(max >= 0);
-    
-    if (value > max) {
-        value = max;
-    } else if (value < -max) {
-        value = -max;
-    }
-    return value;
-}    
-
 void SkScalerContext::getAdvance(SkGlyph* glyph) {
     // mark us as just having a valid advance
     glyph->fMaskFormat = MASK_FORMAT_JUST_ADVANCE;
diff --git a/src/core/SkScan_Path.cpp b/src/core/SkScan_Path.cpp
index 8b58991..d8f779a 100644
--- a/src/core/SkScan_Path.cpp
+++ b/src/core/SkScan_Path.cpp
@@ -387,6 +387,7 @@
     return list[0];
 }
 
+#ifdef SK_DEBUG
 /* 'quick' computation of the max sized needed to allocated for
     our edgelist.
 */
@@ -422,6 +423,7 @@
     *storage = size;
     return edgeCount;
 }
+#endif
 
 /* Much faster than worst_case_edge_count, but over estimates even more
 */
diff --git a/src/core/SkUtils.cpp b/src/core/SkUtils.cpp
index 20f7ddc..a4c6c16 100644
--- a/src/core/SkUtils.cpp
+++ b/src/core/SkUtils.cpp
@@ -427,10 +427,12 @@
 
 #include <stdlib.h>
 
+#if 0
 static int round_to_K(size_t bytes)
 {
     return (bytes + 512) >> 10;
 }
+#endif
 
 SkAutoMemoryUsageProbe::SkAutoMemoryUsageProbe(const char label[])
     : fLabel(label)
diff --git a/src/core/SkWriter32.cpp b/src/core/SkWriter32.cpp
index 61d0051..819803f 100644
--- a/src/core/SkWriter32.cpp
+++ b/src/core/SkWriter32.cpp
@@ -37,15 +37,6 @@
     }
 };
 
-static size_t compute_block_size(size_t currSize, size_t minSize)
-{
-    if (currSize < minSize)
-        currSize = minSize;
-    
-    currSize += (currSize >> 1);
-    return SkAlign4(currSize);
-}
-
 ///////////////////////////////////////////////////////////////////////////////
 
 SkWriter32::~SkWriter32()
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index e8a202d..80bafce 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -30,6 +30,7 @@
     return SkPackARGB32(a, r, g, b);
 }
 
+#if 0
 // idea for higher precision blends in xfer procs (and slightly faster)
 // see DstATop as a probable caller
 static U8CPU mulmuldiv255round(U8CPU a, U8CPU b, U8CPU c, U8CPU d) {
@@ -42,6 +43,7 @@
     SkASSERT(result <= 255);
     return result;
 }
+#endif
 
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -778,7 +780,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifdef SK_DEBUG
+#ifdef SK_DEBUGx
 static void unit_test() {
     for (unsigned a = 0; a <= 255; a++) {
         for (unsigned c = 0; c <= a; c++) {
diff --git a/src/effects/SkGradientShader.cpp b/src/effects/SkGradientShader.cpp
index b0d91ee..9b5d922 100644
--- a/src/effects/SkGradientShader.cpp
+++ b/src/effects/SkGradientShader.cpp
@@ -608,7 +608,7 @@
 };
 
 //  Return true if fx, fx+dx, fx+2*dx, ... is always in range
-static bool no_need_for_clamp(int fx, int dx, int count)
+static inline bool no_need_for_clamp(int fx, int dx, int count)
 {
     SkASSERT(count > 0);
     return (unsigned)((fx | (fx + (count - 1) * dx)) >> 8) <= 0xFF;
diff --git a/xcode/core/core.xcodeproj/project.pbxproj b/xcode/core/core.xcodeproj/project.pbxproj
index d86eab8..2e8b069 100644
--- a/xcode/core/core.xcodeproj/project.pbxproj
+++ b/xcode/core/core.xcodeproj/project.pbxproj
@@ -619,7 +619,29 @@
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = SK_DEBUG;
 				GCC_THREADSAFE_STATICS = NO;
+				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+				GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
+				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
+				GCC_WARN_INHIBIT_ALL_WARNINGS = NO;
+				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
+				GCC_WARN_MISSING_PARENTHESES = YES;
+				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
+				GCC_WARN_PEDANTIC = NO;
+				GCC_WARN_PROTOTYPE_CONVERSION = YES;
+				GCC_WARN_SHADOW = NO;
+				GCC_WARN_SIGN_COMPARE = YES;
+				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = NO;
+				GCC_WARN_UNKNOWN_PRAGMAS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_LABEL = YES;
+				GCC_WARN_UNUSED_VALUE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
 				USER_HEADER_SEARCH_PATHS = ../../include/core;
@@ -637,7 +659,29 @@
 				GCC_ENABLE_CPP_RTTI = NO;
 				GCC_PREPROCESSOR_DEFINITIONS = SK_RELEASE;
 				GCC_THREADSAFE_STATICS = NO;
+				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+				GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
+				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
+				GCC_WARN_INHIBIT_ALL_WARNINGS = NO;
+				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
+				GCC_WARN_MISSING_PARENTHESES = YES;
+				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
+				GCC_WARN_PEDANTIC = NO;
+				GCC_WARN_PROTOTYPE_CONVERSION = YES;
+				GCC_WARN_SHADOW = NO;
+				GCC_WARN_SIGN_COMPARE = YES;
+				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = NO;
+				GCC_WARN_UNKNOWN_PRAGMAS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_LABEL = YES;
+				GCC_WARN_UNUSED_VALUE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
 				USER_HEADER_SEARCH_PATHS = ../../include/core;
diff --git a/xcode/effects/effects.xcodeproj/project.pbxproj b/xcode/effects/effects.xcodeproj/project.pbxproj
index eb1b803..7c19d00 100644
--- a/xcode/effects/effects.xcodeproj/project.pbxproj
+++ b/xcode/effects/effects.xcodeproj/project.pbxproj
@@ -200,6 +200,7 @@
 		08FB7793FE84155DC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "effects" */;
+			compatibilityVersion = "Xcode 2.4";
 			hasScannedForEncodings = 1;
 			mainGroup = 08FB7794FE84155DC02AAC07 /* effects */;
 			projectDirPath = "";
@@ -282,11 +283,41 @@
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = SK_DEBUG;
 				GCC_THREADSAFE_STATICS = NO;
+				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+				GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = NO;
+				GCC_TREAT_WARNINGS_AS_ERRORS = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
+				GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES;
+				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES;
+				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+				GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
+				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
+				GCC_WARN_INHIBIT_ALL_WARNINGS = NO;
+				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
+				GCC_WARN_MISSING_PARENTHESES = YES;
+				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
+				GCC_WARN_PEDANTIC = NO;
+				GCC_WARN_PROTOTYPE_CONVERSION = YES;
+				GCC_WARN_SHADOW = NO;
+				GCC_WARN_SIGN_COMPARE = YES;
+				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = NO;
+				GCC_WARN_UNKNOWN_PRAGMAS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_LABEL = YES;
+				GCC_WARN_UNUSED_PARAMETER = NO;
+				GCC_WARN_UNUSED_VALUE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
 				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
 				USER_HEADER_SEARCH_PATHS = "../../include/**";
+				WARNING_CFLAGS = "";
 			};
 			name = Debug;
 		};
@@ -301,11 +332,41 @@
 				GCC_ENABLE_CPP_RTTI = NO;
 				GCC_PREPROCESSOR_DEFINITIONS = SK_RELEASE;
 				GCC_THREADSAFE_STATICS = NO;
+				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+				GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = NO;
+				GCC_TREAT_WARNINGS_AS_ERRORS = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
+				GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES;
+				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES;
+				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+				GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
+				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
+				GCC_WARN_INHIBIT_ALL_WARNINGS = NO;
+				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
+				GCC_WARN_MISSING_PARENTHESES = YES;
+				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
+				GCC_WARN_PEDANTIC = NO;
+				GCC_WARN_PROTOTYPE_CONVERSION = YES;
+				GCC_WARN_SHADOW = NO;
+				GCC_WARN_SIGN_COMPARE = YES;
+				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = NO;
+				GCC_WARN_UNKNOWN_PRAGMAS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_LABEL = YES;
+				GCC_WARN_UNUSED_PARAMETER = NO;
+				GCC_WARN_UNUSED_VALUE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
 				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
 				USER_HEADER_SEARCH_PATHS = "../../include/**";
+				WARNING_CFLAGS = "";
 			};
 			name = Release;
 		};
