Project import
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..2c55ea9
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,144 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the makefile for an open-source version of Apple's
+#      CoreFoundation library.
+#
+
+BuildConfigSpecialized	:= No
+BuildProductSpecialized	:= No
+
+include pre.mak
+
+PackageName		:= opencflite
+
+PackageExtension	:= tar.gz
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(call GenerateBuildPaths,$(PackageName)$(PackageSeparator)$(PackageVersion))
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+# XXX - CoreFoundation occassionally has a segment fault in
+# CFDictionaryRemoveValue when compiled with -O2 or higher. Until this
+# has been fully-debugged, build with -Os.
+
+PackageOptimizerFlags	:= -g -Os
+
+ICUSearchPath := $(ICUPath)/usr
+UUIDSearchPath := $(UUIDPath)/usr
+TzSearchPath := $(TzPath)/usr
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageSourceDir)/LICENSE: source
+
+$(PackageLicenseFile): $(PackageSourceDir)/LICENSE
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths) | $(BuildDirectory)
+	$(call expand-archive,$(PackageArchive),$(BuildDirectory))
+	$(call patch-directory,$(@),$(PackagePatchArgs),$(PackagePatchPaths))
+	$(Verbose)touch $(@)
+
+# Prepare the sources.
+
+.PHONY: source
+source: | $(PackageSourceDir)
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: source
+
+PackageConfigFlags = --disable-profile
+
+# The host config of OSM requires shared libraries.
+ifneq ($(CONFIG_OSM_HOST),1)
+PackageConfigFlags += --disable-shared
+endif
+
+# Generate the package build makefile.
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)cd $(BuildDirectory) && \
+	$(CURDIR)/$(PackageSourceDir)/configure \
+	CC="$(CC)" CXX="$(CXX)" AR=$(AR) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	CFLAGS="$(PackageOptimizerFlags)" \
+	CXXFLAGS="$(PackageOptimizerFlags)" \
+	--build=$(HostTuple) \
+	--host=$(TargetTuple) \
+	$(PackageConfigFlags) \
+	--with-icu=$(ICUSearchPath) \
+	--with-uuid=$(UUIDSearchPath) \
+	--with-tz-includes=$(TzSearchPath) \
+	--prefix=/usr \
+	--sysconfdir=/etc \
+	--localstatedir=/var
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: source $(PackageBuildMakefile)
+
+# Build the source.
+#
+
+.PHONY: build
+build: configure
+	$(Verbose)$(MAKE) -C $(BuildDirectory) all
+
+# Stage the build to a temporary installation area.
+#
+# We explictly remove 'libfoo.la' because some packages that depend on
+# these libraries use libtool. If libtool finds a 'libfoo.la' file for
+# a library, it uses the value of 'libdir=<dir>' it finds. In our
+# case, since '--prefix=/usr' this value is '/usr/lib'. It then
+# resolves '-lfoo'. In a cross-compilation environment, this is likely
+# to be neither the right architecture nor the right version to link
+# against. In short, we lose.
+#
+# We could also handle this by removing DESTDIR and setting the prefix
+# to $(ResultDirectory); however, that results in libtool hard-coding
+# $(ResultDirectory) as the RPATH in the linked executables which is
+# NOT what we want either. We lose again.
+#
+# By removing the '*.la' file, we win by ensuring neither a misdirected
+# link nor an RPATH.
+
+.PHONY: stage
+stage: build | $(ResultDirectory)
+	$(Verbose)$(MAKE) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
+	$(Verbose)$(RM) $(RMFLAGS) $(call GenerateResultPaths,,usr/lib/libCoreFoundation.la usr/lib/libCoreFoundation_debug.la usr/lib/libCoreFoundation_profile.la)
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)/* $(BuildDirectory)/..?* $(BuildDirectory)/.[!.]*
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)/* $(ResultDirectory)/..?* $(ResultDirectory)/.[!.]*
+
+.PHONY: install
+install: $(PackageSourceDir)
+	$(Verbose)cp $(PackageSourceDir)/CFCharacterSetBitmaps.bitmap /usr/share/CoreFoundation/CharacterSets/
+	$(Verbose)cp $(PackageSourceDir)/CFUnicodeData-B.mapping /usr/share/CoreFoundation/CharacterSets/
+	$(Verbose)cp $(PackageSourceDir)/CFUnicodeData-L.mapping /usr/share/CoreFoundation/CharacterSets/
+	$(Verbose)cp $(PackageSourceDir)/CFUniCharPropertyDatabase.data /usr/share/CoreFoundation/CharacterSets/
+
+include post.mak
diff --git a/opencflite.patches/opencflite-50.description b/opencflite.patches/opencflite-50.description
new file mode 100644
index 0000000..ab89da6
--- /dev/null
+++ b/opencflite.patches/opencflite-50.description
@@ -0,0 +1 @@
+This patch adds ARM support, where necessary.
diff --git a/opencflite.patches/opencflite-50.patch b/opencflite.patches/opencflite-50.patch
new file mode 100644
index 0000000..10013ff
--- /dev/null
+++ b/opencflite.patches/opencflite-50.patch
@@ -0,0 +1,63 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFBase.c	2010-10-01 14:31:38.286830645 -0700
+@@ -1062,4 +1062,20 @@
+ #endif
+ #endif
+ 
+-
++#if defined(__arm__)
++__asm__ (
++".text\n"
++"	.align 2\n"
++#if DEPLOYMENT_TARGET_MACOSX
++".private_extern ___HALT\n"
++"___HALT:\n"
++#elif DEPLOYMENT_TARGET_LINUX
++".globl __HALT\n"
++"__HALT:\n"
++#else
++".globl ___HALT\n"
++"___HALT:\n"
++#endif
++"	bkpt\n"
++);
++#endif /* defined(__arm__) */
+diff -aruN a/CFBase.h b/CFBase.h
+--- a/CFBase.h	2009-02-19 16:25:06.000000000 -0800
++++ b/CFBase.h	2010-10-01 14:30:23.799644073 -0700
+@@ -50,6 +50,10 @@
+     #define __LITTLE_ENDIAN__ 1
+ #endif
+ 
++#if (defined(__ARMEL__) && !defined(__LITTLE_ENDIAN__))
++	#define __LITTLE_ENDIAN__ 1
++#endif
++
+ #if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
+ #error Do not know the endianess of this architecture
+ #endif
+diff -aruN a/CFInternal.h b/CFInternal.h
+--- a/CFInternal.h	2009-02-19 16:25:06.000000000 -0800
++++ b/CFInternal.h	2010-10-01 14:05:48.926799829 -0700
+@@ -121,6 +121,8 @@
+     #else
+         #error Compiler not supported
+     #endif
++#elif defined(__arm__)
++	#define HALT asm __volatile__("bkpt")
+ #endif
+ 
+ #if defined(DEBUG)
+diff -aruN a/include/AvailabilityMacros.h b/include/AvailabilityMacros.h
+--- a/include/AvailabilityMacros.h	2009-02-04 10:42:19.000000000 -0800
++++ b/include/AvailabilityMacros.h	2010-10-01 14:07:14.999780293 -0700
+@@ -84,7 +84,7 @@
+     #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+         #define MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+     #else
+-        #if __ppc64__ || __i386__ || __x86_64__
++        #if __ppc64__ || __i386__ || __x86_64__ || __arm__
+             #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4
+         #else
+             #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_1
diff --git a/opencflite.patches/opencflite-51.description b/opencflite.patches/opencflite-51.description
new file mode 100644
index 0000000..2ed6512
--- /dev/null
+++ b/opencflite.patches/opencflite-51.description
@@ -0,0 +1 @@
+This patch ensures that the right LDFLAGS are passed when testing for the existence of uuid_compare in libuuid.
diff --git a/opencflite.patches/opencflite-51.patch b/opencflite.patches/opencflite-51.patch
new file mode 100644
index 0000000..77d173c
--- /dev/null
+++ b/opencflite.patches/opencflite-51.patch
@@ -0,0 +1,23 @@
+diff -aruN a/configure b/configure
+--- a/configure	2009-03-10 23:44:34.000000000 -0700
++++ b/configure	2010-10-20 13:12:19.000000000 -0700
+@@ -18528,6 +18528,8 @@
+ 	fi
+ 
+ 	UUID_saved_libs="${LIBS}"
++	UUID_saved_ldflags="${LDFLAGS}"
++	LDFLAGS="${UUID_LDFLAGS} ${LDFLAGS}"
+ 	LIBS=""
+ 
+ 
+@@ -18603,8 +18605,10 @@
+ 
+ 
+ 	UUID_LIBS="${UUID_LDFLAGS} ${LIBS}"
++	LDFLAGS="${UUID_saved_ldflags}"
+ 	LIBS="${UUID_saved_libs}"
+ 	unset UUID_saved_libs
++	unset UUID_saved_ldflags
+ 
+ elif test "x${UUID_CONFIG}" != "x"; then
+ 	UUID_CPPFLAGS="`${UUID_CONFIG} --cflags`"
diff --git a/opencflite.patches/opencflite-52.description b/opencflite.patches/opencflite-52.description
new file mode 100644
index 0000000..c2f2b25
--- /dev/null
+++ b/opencflite.patches/opencflite-52.description
@@ -0,0 +1 @@
+This patch upgrades the AssertMacros.h from CarbonHeaders-8A428 to that from CarbonHeaders-18.1 to address rdar://problem/4822326 where executing verify*action with break or continue ends up failing to actually work as expected or intended.
diff --git a/opencflite.patches/opencflite-52.patch b/opencflite.patches/opencflite-52.patch
new file mode 100644
index 0000000..560f4a4
--- /dev/null
+++ b/opencflite.patches/opencflite-52.patch
@@ -0,0 +1,1664 @@
+diff -aruN a/include/AssertMacros.h b/include/AssertMacros.h
+--- a/include/AssertMacros.h	2009-02-03 21:28:26.000000000 -0800
++++ b/include/AssertMacros.h	2009-04-13 10:08:23.000000000 -0700
+@@ -1,26 +1,51 @@
+ /*
+-     File:       AssertMacros.h
+- 
+-     Contains:   This file defines structured error handling and assertion macros for
+-                 programming in C. Originally used in QuickDraw GX and later enhanced.
+-                 These macros are used throughout Apple's software.
+-
+-                 See "Living In an Exceptional World" by Sean Parent
+-                 (develop, The Apple Technical Journal, Issue 11, August/September 1992)
+-                 <http://developer.apple.com/dev/techsupport/develop/issue11toc.shtml>
+-                 for the methodology behind these error handling and assertion macros.
+-
+-     Copyright:  © 2002 by Apple Computer, Inc., all rights reserved.
+-  
+-     Bugs?:      For bug reports, consult the following page on
+-                 the World Wide Web:
++ * Copyright (c) 2002-2008 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ * 
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ * 
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ * 
++ * @APPLE_LICENSE_HEADER_END@
++ */
++
++
++/*
++	File:       AssertMacros.h
+  
+-                     http://developer.apple.com/bugreporter/ 
++	Contains:   This file defines structured error handling and assertion macros for
++				programming in C. Originally used in QuickDraw GX and later enhanced.
++				These macros are used throughout Apple's software.
++	
++				New code may not want to begin adopting these macros and instead use
++				existing language functionality.
++	
++				See "Living In an Exceptional World" by Sean Parent
++				(develop, The Apple Technical Journal, Issue 11, August/September 1992)
++				<http://developer.apple.com/dev/techsupport/develop/issue11toc.shtml> or
++				<http://www.mactech.com/articles/develop/issue_11/Parent_final.html>
++				for the methodology behind these error handling and assertion macros.
++	
++	Bugs?:      For bug reports, consult the following page on
++				the World Wide Web:
++
++	 http://developer.apple.com/bugreporter/ 
+ */
+ #ifndef __ASSERTMACROS__
+ #define __ASSERTMACROS__
+ 
+-
+ /*
+  *  Macro overview:
+  *  
+@@ -60,6 +85,27 @@
+  *      By default, all messages write to stderr.  If you would like to write a custom
+  *      error message formater, defined DEBUG_ASSERT_MESSAGE to your function name.
+  *
++ *      Each individual macro will only be defined if it is not already defined, so
++ *      you can redefine their behavior singly by providing your own definition before
++ *      this file is included.
++ *
++ *      If you define __ASSERTMACROS__ before this file is included, then nothing in
++ *      this file will take effect.
++ *
++ *      Prior to Mac OS X 10.6 the macro names used in this file conflicted with some
++ *      user code, including libraries in boost and the proposed C++ standards efforts,
++ *      and there was no way for a client of this header to resolve this conflict. Because
++ *      of this, most of the macros have been changed so that they are prefixed with 
++ *      __ and contain at least one capital letter, which should alleviate the current
++ *      and future conflicts.  However, to allow current sources to continue to compile,
++ *      compatibility macros are defined at the end with the old names.  A tops script 
++ *      at the end of this file will convert all of the old macro names used in a directory
++ *      to the new names.  Clients are recommended to migrate over to these new macros as
++ *      they update their sources because a future release of Mac OS X will remove the
++ *      old macro definitions ( without the double-underscore prefix ).  Clients who
++ *      want to compile without the old macro definitions can define the macro
++ *      __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES to 0 before this file is
++ *      included.
+  */
+ 
+ 
+@@ -165,9 +211,9 @@
+  */
+ #ifndef DEBUG_ASSERT_MESSAGE
+    #ifdef KERNEL
+-      #include <syslog.h>
++      #include <libkern/libkern.h>
+       #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+-                                  syslog(LOG_ERR, "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
++                                  printf( "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
+    #else
+       #include <stdio.h>
+       #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+@@ -180,7 +226,7 @@
+ 
+ 
+ /*
+- *  debug_string(message)
++ *  __Debug_String(message)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -193,26 +239,27 @@
+  *      The C string to display.
+  *
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define debug_string(message)
+-#else
+-   #define debug_string(message)                                              \
+-      do                                                                      \
+-      {                                                                       \
+-          DEBUG_ASSERT_MESSAGE(                                               \
+-              DEBUG_ASSERT_COMPONENT_NAME_STRING,                             \
+-              "",                                                             \
+-              0,                                                              \
+-              message,                                                        \
+-              __FILE__,                                                       \
+-              __LINE__,                                                       \
+-              0);                                                             \
+-      } while ( 0 )
++#ifndef __Debug_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Debug_String(message)
++	#else
++	   #define __Debug_String(message)                                             \
++		  do                                                                      \
++		  {                                                                       \
++			  DEBUG_ASSERT_MESSAGE(                                               \
++				  DEBUG_ASSERT_COMPONENT_NAME_STRING,                             \
++				  "",                                                             \
++				  0,                                                              \
++				  message,                                                        \
++				  __FILE__,                                                       \
++				  __LINE__,                                                       \
++				  0);                                                             \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  check(assertion)
++ *  __Check(assertion)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -225,32 +272,29 @@
+  *    assertion:
+  *      The assertion expression.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check(assertion)
+-#else
+-   #define check(assertion)                                                   \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check(assertion)
++	#else
++	   #define __Check(assertion)                                                 \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, 0, __FILE__, __LINE__, 0 );                  \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define ncheck(assertion)                                                     \
+-  check(!(assertion))
+-
++#ifndef __nCheck
++	#define __nCheck(assertion)  __Check(!(assertion))
++#endif
+ 
+ /*
+- *  check_string(assertion, message)
++ *  __Check_String(assertion, message)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -266,32 +310,29 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check_string(assertion, message)
+-#else
+-   #define check_string(assertion, message)                                   \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check_String(assertion, message)
++	#else
++	   #define __Check_String(assertion, message)                                 \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, message, __FILE__, __LINE__, 0 );            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define ncheck_string(assertion, message)                                     \
+-  check_string(!(assertion), message)
+-
++#ifndef __nCheck_String
++	#define __nCheck_String(assertion, message)  __Check_String(!(assertion), message)
++#endif
+ 
+ /*
+- *  check_noerr(errorCode)
++ *  __Check_noErr(errorCode)
+  *
+  *  Summary:
+  *    Production builds: does nothing and produces no code.
+@@ -304,30 +345,26 @@
+  *    errorCode:
+  *      The errorCode expression to compare with 0.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check_noerr(errorCode)
+-#else
+-   #define check_noerr(errorCode)                                             \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check_noErr
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check_noErr(errorCode)
++	#else
++	   #define __Check_noErr(errorCode)                                           \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  check_noerr_string(errorCode, message)
++ *  __Check_noErr_String(errorCode, message)
+  *
+  *  Summary:
+  *    Production builds: check_noerr_string() does nothing and produces
+@@ -344,30 +381,26 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define check_noerr_string(errorCode, message)
+-#else
+-   #define check_noerr_string(errorCode, message)                             \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Check_noErr_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Check_noErr_String(errorCode, message)
++	#else
++	   #define __Check_noErr_String(errorCode, message)                           \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, message, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  verify(assertion)
++ *  __Verify(assertion)
+  *
+  *  Summary:
+  *    Production builds: evaluate the assertion expression, but ignore
+@@ -381,38 +414,35 @@
+  *    assertion:
+  *      The assertion expression.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify(assertion)                                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify(assertion)                                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify(assertion)                                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( !(assertion) )                                                 \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify(assertion)                                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, 0, __FILE__, __LINE__, 0 );                  \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define nverify(assertion)                                                    \
+-  verify(!(assertion))
+-
++#ifndef __nVerify
++	#define __nVerify(assertion)	__Verify(!(assertion))
++#endif
+ 
+ /*
+- *  verify_string(assertion, message)
++ *  __Verify_String(assertion, message)
+  *
+  *  Summary:
+  *    Production builds: evaluate the assertion expression, but ignore
+@@ -429,38 +459,35 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_string(assertion, message)                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_string(assertion, message)                                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_String(assertion, message)                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( !(assertion) )                                                 \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify_String(assertion, message)                                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, 0, message, __FILE__, __LINE__, 0 );            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define nverify_string(assertion, message)                                    \
+-  verify_string(!(assertion), message)
+-
++#ifndef __nVerify_String
++	#define __nVerify_String(assertion, message)  __Verify_String(!(assertion), message)
++#endif
+ 
+ /*
+- *  verify_noerr(errorCode)
++ *  __Verify_noErr(errorCode)
+  *
+  *  Summary:
+  *    Production builds: evaluate the errorCode expression, but ignore
+@@ -474,36 +501,32 @@
+  *    errorCode:
+  *      The expression to compare to 0.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_noerr(errorCode)                                            \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_noerr(errorCode)                                            \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify_noErr
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_noErr(errorCode)                                          \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( 0 != (errorCode) )                                             \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify_noErr(errorCode)                                          \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  verify_noerr_string(errorCode, message)
++ *  __Verify_noErr_String(errorCode, message)
+  *
+  *  Summary:
+  *    Production builds: evaluate the errorCode expression, but ignore
+@@ -520,36 +543,71 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_noerr_string(errorCode, message)                            \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_noerr_string(errorCode, message)                            \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  0,                                                          \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Verify_noErr_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_noErr_String(errorCode, message)                          \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( 0 != (errorCode) )                                             \
++			  {                                                                   \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Verify_noErr_String(errorCode, message)                          \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", 0, message, __FILE__, __LINE__, evalOnceErrorCode ); \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
++/*
++ *  __Verify_noErr_Action(errorCode, action)
++ *
++ *  Summary:
++ *    Production builds: if the errorCode expression does not equal 0 (noErr),
++ *    execute the action statement or compound statement (block).
++ *
++ *    Non-production builds: if the errorCode expression does not equal 0 (noErr),
++ *    call DEBUG_ASSERT_MESSAGE and then execute the action statement or compound
++ *    statement (block).
++ *
++ *  Parameters:
++ *
++ *    errorCode:
++ *      The expression to compare to 0.
++ *
++ *    action:
++ *      The statement or compound statement (block).
++ */
++#ifndef __Verify_noErr_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_noErr_Action(errorCode, action)                          \
++		  if ( 0 != (errorCode) ) {                                              \
++			  action;                                                            \
++		  }                                                                      \
++		  else do {} while (0)
++	#else
++	   #define __Verify_noErr_Action(errorCode, action)                          \
++		  long evalOnceErrorCode = (errorCode);                                  \
++		  if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) {                   \
++			  DEBUG_ASSERT_MESSAGE(                                              \
++				  DEBUG_ASSERT_COMPONENT_NAME_STRING,                            \
++				  #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, 0 );            \
++			  action;                                                            \
++		  }                                                                      \
++		  else do {} while (0)
++	#endif
++#endif
+ 
+ /*
+- *  verify_action(assertion, action)
++ *  __Verify_Action(assertion, action)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -567,37 +625,27 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define verify_action(assertion, action)                                   \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              action;                                                         \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define verify_action(assertion, action)                                  \
+-     do                                                                      \
+-      {                                                                      \
+-          if ( !(assertion) )                                                \
+-          {                                                                  \
+-             DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                        \
+-                  #assertion,                                                \
+-                  0,                                                         \
+-                  0,                                                         \
+-                  __FILE__,                                                  \
+-                  __LINE__,                                                  \
+-                  0);                                                        \
+-             { action; }                                                     \
+-         }                                                                   \
+-     } while ( 0 )
++#ifndef __Verify_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Verify_Action(assertion, action)                                \
++		  if ( __builtin_expect(!(assertion), 0) ) {                             \
++			action;                                                              \
++		  }                                                                      \
++		  else do {} while (0)
++	#else
++	   #define __Verify_Action(assertion, action)                                \
++		  if ( __builtin_expect(!(assertion), 0) ) {                             \
++			  DEBUG_ASSERT_MESSAGE(                                              \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                        \
++					  #assertion, 0, 0, __FILE__, __LINE__, 0 );                 \
++			  action;                                                            \
++		  }                                                                      \
++		  else do {} while (0)
++	#endif
+ #endif
+ 
+-
+ /*
+- *  require(assertion, exceptionLabel)
++ *  __Require(assertion, exceptionLabel)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -614,40 +662,36 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require(assertion, exceptionLabel)                                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require(assertion, exceptionLabel)                                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require(assertion, exceptionLabel)                               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require(assertion, exceptionLabel)                               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) ) {                          \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel, 0, __FILE__, __LINE__,  0);    \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-#define nrequire(assertion, exceptionLabel)                                   \
+-  require(!(assertion), exceptionLabel)
+-
++#ifndef __nRequire
++	#define __nRequire(assertion, exceptionLabel)  __Require(!(assertion), exceptionLabel)
++#endif
+ 
+ /*
+- *  require_action(assertion, exceptionLabel, action)
++ *  __Require_Action(assertion, exceptionLabel, action)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -669,46 +713,44 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_action(assertion, exceptionLabel, action)                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_action(assertion, exceptionLabel, action)                  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_Action(assertion, exceptionLabel, action)                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_Action(assertion, exceptionLabel, action)                \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel, 0,   __FILE__, __LINE__, 0);   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++#ifndef __nRequire_Action
++	#define __nRequire_Action(assertion, exceptionLabel, action)                  \
++	__Require_Action(!(assertion), exceptionLabel, action)
+ #endif
+ 
+-#define nrequire_action(assertion, exceptionLabel, action)                    \
+-  require_action(!(assertion), exceptionLabel, action)
+-
+-
+ /*
+- *  require_quiet(assertion, exceptionLabel)
++ *  __Require_Quiet(assertion, exceptionLabel)
+  *
+  *  Summary:
+  *    If the assertion expression evaluates to false, goto exceptionLabel.
+@@ -721,21 +763,23 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#define require_quiet(assertion, exceptionLabel)                              \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( !(assertion) )                                                     \
+-      {                                                                       \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
+-#define nrequire_quiet(assertion, exceptionLabel)                             \
+-  require_quiet(!(assertion), exceptionLabel)
++#ifndef __Require_Quiet
++	#define __Require_Quiet(assertion, exceptionLabel)                            \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(!(assertion), 0) )                                \
++		  {                                                                       \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
+ 
++#ifndef __nRequire_Quiet
++	#define __nRequire_Quiet(assertion, exceptionLabel)  __Require_Quiet(!(assertion), exceptionLabel)
++#endif
+ 
+ /*
+- *  require_action_quiet(assertion, exceptionLabel, action)
++ *  __Require_Action_Quiet(assertion, exceptionLabel, action)
+  *
+  *  Summary:
+  *    If the assertion expression evaluates to false, execute the action
+@@ -752,24 +796,27 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#define require_action_quiet(assertion, exceptionLabel, action)               \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( !(assertion) )                                                     \
+-      {                                                                       \
+-          {                                                                   \
+-              action;                                                         \
+-          }                                                                   \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
+-#define nrequire_action_quiet(assertion, exceptionLabel, action)              \
+-  require_action_quiet(!(assertion), exceptionLabel, action)
+-
++#ifndef __Require_Action_Quiet
++	#define __Require_Action_Quiet(assertion, exceptionLabel, action)             \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(!(assertion), 0) )                                \
++		  {                                                                       \
++			  {                                                                   \
++				  action;                                                         \
++			  }                                                                   \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
++
++#ifndef __nRequire_Action_Quiet
++	#define __nRequire_Action_Quiet(assertion, exceptionLabel, action)              \
++		__Require_Action_Quiet(!(assertion), exceptionLabel, action)
++#endif
+ 
+ /*
+- *  require_string(assertion, exceptionLabel, message)
++ *  __Require_String(assertion, exceptionLabel, message)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -789,40 +836,38 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_string(assertion, exceptionLabel, message)                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_string(assertion, exceptionLabel, message)                 \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_String(assertion, exceptionLabel, message)               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_String(assertion, exceptionLabel, message)               \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel,  message,  __FILE__, __LINE__, 0); \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++#ifndef __nRequire_String
++	#define __nRequire_String(assertion, exceptionLabel, string)                  \
++		__Require_String(!(assertion), exceptionLabel, string)
+ #endif
+ 
+-#define nrequire_string(assertion, exceptionLabel, string)                    \
+-  require_string(!(assertion), exceptionLabel, string)
+-
+-
+ /*
+- *  require_action_string(assertion, exceptionLabel, action, message)
++ *  __Require_Action_String(assertion, exceptionLabel, action, message)
+  *
+  *  Summary:
+  *    Production builds: if the assertion expression evaluates to false,
+@@ -847,46 +892,44 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_action_string(assertion, exceptionLabel, action, message)  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_action_string(assertion, exceptionLabel, action, message)  \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( !(assertion) )                                                 \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #assertion,                                                 \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  0);                                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_Action_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_Action_String(assertion, exceptionLabel, action, message)  \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_Action_String(assertion, exceptionLabel, action, message)  \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(!(assertion), 0) )                            \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #assertion, #exceptionLabel,  message,  __FILE__,  __LINE__, 0); \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++#ifndef __nRequire_Action_String
++	#define __nRequire_Action_String(assertion, exceptionLabel, action, message)    \
++		__Require_Action_String(!(assertion), exceptionLabel, action, message)
+ #endif
+ 
+-#define nrequire_action_string(assertion, exceptionLabel, action, message)    \
+-  require_action_string(!(assertion), exceptionLabel, action, message)
+-
+-
+ /*
+- *  require_noerr(errorCode, exceptionLabel)
++ *  __Require_noErr(errorCode, exceptionLabel)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -903,37 +946,34 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr(errorCode, exceptionLabel)                           \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr(errorCode, exceptionLabel)                           \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_noErr
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr(errorCode, exceptionLabel)                         \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr(errorCode, exceptionLabel)                         \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ",  #exceptionLabel,  0,  __FILE__, __LINE__, evalOnceErrorCode); \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+ /*
+- *  require_noerr_action(errorCode, exceptionLabel, action)
++ *  __Require_noErr_Action(errorCode, exceptionLabel, action)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -955,44 +995,40 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr_action(errorCode, exceptionLabel, action)            \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr_action(errorCode, exceptionLabel, action)            \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  0,                                                          \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_noErr_Action
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr_Action(errorCode, exceptionLabel, action)          \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr_Action(errorCode, exceptionLabel, action)          \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", #exceptionLabel,  0,  __FILE__, __LINE__,  evalOnceErrorCode); \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  require_noerr_quiet(errorCode, exceptionLabel)
++ *  __Require_noErr_Quiet(errorCode, exceptionLabel)
+  *
+  *  Summary:
+  *    If the errorCode expression does not equal 0 (noErr),
+@@ -1006,18 +1042,19 @@
+  *    exceptionLabel:
+  *      The label.
+  */
+-#define require_noerr_quiet(errorCode, exceptionLabel)                        \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( 0 != (errorCode) )                                                 \
+-      {                                                                       \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
++#ifndef __Require_noErr_Quiet
++	#define __Require_noErr_Quiet(errorCode, exceptionLabel)                      \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(0 != (errorCode), 0) )                            \
++		  {                                                                       \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
+ 
+ /*
+- *  require_noerr_action_quiet(errorCode, exceptionLabel, action)
++ *  __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)
+  *
+  *  Summary:
+  *    If the errorCode expression does not equal 0 (noErr),
+@@ -1035,21 +1072,22 @@
+  *    action:
+  *      The statement or compound statement (block).
+  */
+-#define require_noerr_action_quiet(errorCode, exceptionLabel, action)         \
+-  do                                                                          \
+-  {                                                                           \
+-      if ( 0 != (errorCode) )                                                 \
+-      {                                                                       \
+-          {                                                                   \
+-              action;                                                         \
+-          }                                                                   \
+-          goto exceptionLabel;                                                \
+-      }                                                                       \
+-  } while ( 0 )
+-
++#ifndef __Require_noErr_Action_Quiet
++	#define __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)       \
++	  do                                                                          \
++	  {                                                                           \
++		  if ( __builtin_expect(0 != (errorCode), 0) )                            \
++		  {                                                                       \
++			  {                                                                   \
++				  action;                                                         \
++			  }                                                                   \
++			  goto exceptionLabel;                                                \
++		  }                                                                       \
++	  } while ( 0 )
++#endif
+ 
+ /*
+- *  require_noerr_string(errorCode, exceptionLabel, message)
++ *  __Require_noErr_String(errorCode, exceptionLabel, message)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -1069,38 +1107,34 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr_string(errorCode, exceptionLabel, message)           \
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr_string(errorCode, exceptionLabel, message)           \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
++#ifndef __Require_noErr_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr_String(errorCode, exceptionLabel, message)         \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr_String(errorCode, exceptionLabel, message)         \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ",  #exceptionLabel, message, __FILE__,  __LINE__,  evalOnceErrorCode); \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
+ #endif
+ 
+-
+ /*
+- *  require_noerr_action_string(errorCode, exceptionLabel, action, message)
++ *  __Require_noErr_Action_String(errorCode, exceptionLabel, action, message)
+  *
+  *  Summary:
+  *    Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -1125,41 +1159,270 @@
+  *    message:
+  *      The C string to display.
+  */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+-   #define require_noerr_action_string(errorCode, exceptionLabel, action, message)\
+-      do                                                                      \
+-      {                                                                       \
+-          if ( 0 != (errorCode) )                                             \
+-          {                                                                   \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#else
+-   #define require_noerr_action_string(errorCode, exceptionLabel, action, message) \
+-      do                                                                      \
+-      {                                                                       \
+-          int evalOnceErrorCode = (errorCode);                                \
+-          if ( 0 != evalOnceErrorCode )                                       \
+-          {                                                                   \
+-              DEBUG_ASSERT_MESSAGE(                                           \
+-                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
+-                  #errorCode " == 0 ",                                        \
+-                  #exceptionLabel,                                            \
+-                  message,                                                    \
+-                  __FILE__,                                                   \
+-                  __LINE__,                                                   \
+-                  evalOnceErrorCode);                                         \
+-              {                                                               \
+-                  action;                                                     \
+-              }                                                               \
+-              goto exceptionLabel;                                            \
+-          }                                                                   \
+-      } while ( 0 )
+-#endif
++#ifndef __Require_noErr_Action_String
++	#if DEBUG_ASSERT_PRODUCTION_CODE
++	   #define __Require_noErr_Action_String(errorCode, exceptionLabel, action, message) \
++		  do                                                                      \
++		  {                                                                       \
++			  if ( __builtin_expect(0 != (errorCode), 0) )                        \
++			  {                                                                   \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#else
++	   #define __Require_noErr_Action_String(errorCode, exceptionLabel, action, message) \
++		  do                                                                      \
++		  {                                                                       \
++			  long evalOnceErrorCode = (errorCode);                               \
++			  if ( __builtin_expect(0 != evalOnceErrorCode, 0) )                  \
++			  {                                                                   \
++				  DEBUG_ASSERT_MESSAGE(                                           \
++					  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
++					  #errorCode " == 0 ", #exceptionLabel, message, __FILE__, __LINE__, evalOnceErrorCode); \
++				  {                                                               \
++					  action;                                                     \
++				  }                                                               \
++				  goto exceptionLabel;                                            \
++			  }                                                                   \
++		  } while ( 0 )
++	#endif
++#endif
++
++/*
++ *  __Check_Compile_Time(expr)
++ *
++ *  Summary:
++ *    any build: if the expression is not true, generated a compile time error.
++ *
++ *  Parameters:
++ *
++ *    expr:
++ *      The compile time expression that should evaluate to non-zero.
++ *
++ *  Discussion:
++ *     This declares an array with a size that is determined by a compile-time expression.
++ *     If false, it declares a negatively sized array, which generates a compile-time error.
++ *
++ * Examples:
++ *     __Check_Compile_Time( sizeof( int ) == 4 );
++ *     __Check_Compile_Time( offsetof( MyStruct, myField ) == 4 );
++ *     __Check_Compile_Time( ( kMyBufferSize % 512 ) == 0 );
++ *
++ *  Note: This only works with compile-time expressions.
++ *  Note: This only works in places where extern declarations are allowed (e.g. global scope).
++ */
++#ifndef __Check_Compile_Time
++    #ifdef __GNUC__ 
++        #define __Check_Compile_Time( expr )    \
++            extern int compile_time_assert_failed[ ( expr ) ? 1 : -1 ] __attribute__( ( unused ) )
++    #else
++        #define __Check_Compile_Time( expr )    \
++            extern int compile_time_assert_failed[ ( expr ) ? 1 : -1 ]
++    #endif
++#endif
++
++/*
++ *	For time immemorial, Mac OS X has defined version of most of these macros without the __ prefix, which
++ *	could collide with similarly named functions or macros in user code, including new functionality in
++ *	Boost and the C++ standard library.
++ *
++ *	A future release of Mac OS X will no longer do this, and will require that clients move to the
++ *  new macros as defined above.  However, in the interim both the new and old macros will work, unless
++ *  clients define a macro __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES before this file is included
++ *  in their compilations.  Clients who do not want the older macros defined can accomplish this by adding
++ *    #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
++ *  at the top of their sources, or my adding -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 to the
++ *  gcc compilation options.
++ *
++ *  To aid users of these macros in converting their sources, the following tops script will convert usages
++ *  of the old macros into the new equivalents.  To do so, in Terminal go into the directory containing the
++ *  sources to be converted and run this command.
++ *
++    find . -name '*.[c|cc|cp|cpp|m|mm|h]' -print0 |  xargs -0 tops -verbose \
++      replace "check(<b args>)" with "__Check(<args>)" \
++      replace "check_noerr(<b args>)" with "__Check_noErr(<args>)" \
++      replace "check_noerr_string(<b args>)" with "__Check_noErr_String(<args>)" \
++      replace "check_string(<b args>)" with "__Check_String(<args>)" \
++      replace "require(<b args>)" with "__Require(<args>)" \
++      replace "require_action(<b args>)" with "__Require_Action(<args>)" \
++      replace "require_action_string(<b args>)" with "__Require_Action_String(<args>)" \
++      replace "require_noerr(<b args>)" with "__Require_noErr(<args>)" \
++      replace "require_noerr_action(<b args>)" with "__Require_noErr_Action(<args>)" \
++      replace "require_noerr_action_string(<b args>)" with "__Require_noErr_Action_String(<args>)" \
++      replace "require_noerr_string(<b args>)" with "__Require_noErr_String(<args>)" \
++      replace "require_string(<b args>)" with "__Require_String(<args>)" \
++      replace "verify(<b args>)" with "__Verify(<args>)" \
++      replace "verify_action(<b args>)" with "__Verify_Action(<args>)" \
++      replace "verify_noerr(<b args>)" with "__Verify_noErr(<args>)" \
++      replace "verify_noerr_action(<b args>)" with "__Verify_noErr_Action(<args>)" \
++      replace "verify_noerr_string(<b args>)" with "__Verify_noErr_String(<args>)" \
++      replace "verify_string(<b args>)" with "__Verify_String(<args>)" \
++      replace "ncheck(<b args>)" with "__nCheck(<args>)" \
++      replace "ncheck_string(<b args>)" with "__nCheck_String(<args>)" \
++      replace "nrequire(<b args>)" with "__nRequire(<args>)" \
++      replace "nrequire_action(<b args>)" with "__nRequire_Action(<args>)" \
++      replace "nrequire_action_quiet(<b args>)" with "__nRequire_Action_Quiet(<args>)" \
++      replace "nrequire_action_string(<b args>)" with "__nRequire_Action_String(<args>)" \
++      replace "nrequire_quiet(<b args>)" with "__nRequire_Quiet(<args>)" \
++      replace "nrequire_string(<b args>)" with "__nRequire_String(<args>)" \
++      replace "nverify(<b args>)" with "__nVerify(<args>)" \
++      replace "nverify_string(<b args>)" with "__nVerify_String(<args>)" \
++      replace "require_action_quiet(<b args>)" with "__Require_Action_Quiet(<args>)" \
++      replace "require_noerr_action_quiet(<b args>)" with "__Require_noErr_Action_Quiet(<args>)" \
++      replace "require_noerr_quiet(<b args>)" with "__Require_noErr_Quiet(<args>)" \
++      replace "require_quiet(<b args>)" with "__Require_Quiet(<args>)" \
++      replace "check_compile_time(<b args>)" with "__Check_Compile_Time(<args>)" \
++      replace "debug_string(<b args>)" with "__Debug_String(<args>)"
++ *
++ */
++
++#ifndef __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
++	/* If we haven't set this yet, it defaults to on.  In the next release, this will default to off. */
++	#define	__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES	1
++#endif
++
++#if	__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
++
++	#ifndef check
++	#define check(assertion)  __Check(assertion)
++	#endif
++
++	#ifndef check_noerr
++	#define check_noerr(errorCode)  __Check_noErr(errorCode)
++	#endif
++
++	#ifndef check_noerr_string
++		#define check_noerr_string(errorCode, message)  __Check_noErr_String(errorCode, message)
++	#endif
++
++	#ifndef check_string
++		#define check_string(assertion, message)  __Check_String(assertion, message)
++	#endif
++
++	#ifndef require
++		#define require(assertion, exceptionLabel)  __Require(assertion, exceptionLabel)
++	#endif
++
++	#ifndef require_action
++		#define require_action(assertion, exceptionLabel, action)  __Require_Action(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef require_action_string
++		#define require_action_string(assertion, exceptionLabel, action, message)  __Require_Action_String(assertion, exceptionLabel, action, message)
++	#endif
++
++	#ifndef require_noerr
++		#define require_noerr(errorCode, exceptionLabel)  __Require_noErr(errorCode, exceptionLabel)
++	#endif
++
++	#ifndef require_noerr_action
++		#define require_noerr_action(errorCode, exceptionLabel, action)  __Require_noErr_Action(errorCode, exceptionLabel, action)
++	#endif
++
++	#ifndef require_noerr_action_string
++		#define require_noerr_action_string(errorCode, exceptionLabel, action, message)  __Require_noErr_Action_String(errorCode, exceptionLabel, action, message)
++	#endif
++
++	#ifndef require_noerr_string
++		#define require_noerr_string(errorCode, exceptionLabel, message)  __Require_noErr_String(errorCode, exceptionLabel, message)
++	#endif
++
++	#ifndef require_string
++		#define require_string(assertion, exceptionLabel, message)  __Require_String(assertion, exceptionLabel, message)
++	#endif
++
++	#ifndef verify
++		#define verify(assertion) __Verify(assertion)
++	#endif
++
++	#ifndef verify_action
++		#define verify_action(assertion, action)  __Verify_Action(assertion, action)
++	#endif
++
++	#ifndef verify_noerr
++		#define verify_noerr(errorCode)  __Verify_noErr(errorCode)
++	#endif
++
++	#ifndef verify_noerr_action
++		#define verify_noerr_action(errorCode, action)  __Verify_noErr_Action(errorCode, action)
++	#endif
++
++	#ifndef verify_noerr_string
++		#define verify_noerr_string(errorCode, message)  __Verify_noErr_String(errorCode, message)
++	#endif
++
++	#ifndef verify_string
++		#define verify_string(assertion, message)  __Verify_String(assertion, message)
++	#endif
++
++	#ifndef ncheck
++		#define ncheck(assertion)  __nCheck(assertion)
++	#endif
++
++	#ifndef ncheck_string
++		#define ncheck_string(assertion, message)  __nCheck_String(assertion, message)
++	#endif
++
++	#ifndef nrequire
++		#define nrequire(assertion, exceptionLabel)  __nRequire(assertion, exceptionLabel)
++	#endif
++
++	#ifndef nrequire_action
++		#define nrequire_action(assertion, exceptionLabel, action)  __nRequire_Action(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef nrequire_action_quiet
++		#define nrequire_action_quiet(assertion, exceptionLabel, action)  __nRequire_Action_Quiet(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef nrequire_action_string
++		#define nrequire_action_string(assertion, exceptionLabel, action, message)  __nRequire_Action_String(assertion, exceptionLabel, action, message)
++	#endif
++
++	#ifndef nrequire_quiet
++		#define nrequire_quiet(assertion, exceptionLabel)  __nRequire_Quiet(assertion, exceptionLabel)
++	#endif
++
++	#ifndef nrequire_string
++		#define nrequire_string(assertion, exceptionLabel, string)  __nRequire_String(assertion, exceptionLabel, string)
++	#endif
++
++	#ifndef nverify
++		#define nverify(assertion)  __nVerify(assertion)
++	#endif
++
++	#ifndef nverify_string
++		#define nverify_string(assertion, message)  __nVerify_String(assertion, message)
++	#endif
++
++	#ifndef require_action_quiet
++		#define require_action_quiet(assertion, exceptionLabel, action)  __Require_Action_Quiet(assertion, exceptionLabel, action)
++	#endif
++
++	#ifndef require_noerr_action_quiet
++		#define require_noerr_action_quiet(errorCode, exceptionLabel, action)  __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)
++	#endif
++
++	#ifndef require_noerr_quiet
++		#define require_noerr_quiet(errorCode, exceptionLabel)  __Require_noErr_Quiet(errorCode, exceptionLabel)
++	#endif
++
++	#ifndef require_quiet
++		#define require_quiet(assertion, exceptionLabel)  __Require_Quiet(assertion, exceptionLabel)
++	#endif
++
++	#ifndef check_compile_time
++		#define check_compile_time( expr )  __Check_Compile_Time( expr )
++	#endif
++
++	#ifndef debug_string
++		#define debug_string(message)  __Debug_String(message)
++	#endif
++	
++#endif	/* ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES */
+ 
+ 
+ #endif /* __ASSERTMACROS__ */
+-
diff --git a/opencflite.patches/opencflite-53.description b/opencflite.patches/opencflite-53.description
new file mode 100644
index 0000000..f8bfc4d
--- /dev/null
+++ b/opencflite.patches/opencflite-53.description
@@ -0,0 +1,2 @@
+This patch adds support for performing debug consistency checks on
+memory deallocated by the system allocator.
diff --git a/opencflite.patches/opencflite-53.patch b/opencflite.patches/opencflite-53.patch
new file mode 100644
index 0000000..ef6c37f
--- /dev/null
+++ b/opencflite.patches/opencflite-53.patch
@@ -0,0 +1,26 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c	2011-08-10 16:29:04.841083602 -0700
++++ b/CFBase.c	2011-08-10 15:46:44.000000000 -0700
+@@ -44,6 +44,7 @@
+ #include <mach/mach.h>
+ #include <dlfcn.h>
+ #elif DEPLOYMENT_TARGET_LINUX
++#include <mcheck.h>
+ #include <pthread.h>
+ #elif DEPLOYMENT_TARGET_WINDOWS
+ #include <windows.h>
+@@ -281,6 +282,14 @@
+ }
+ 
+ static void __CFAllocatorSystemDeallocate(void *ptr, void *info) {
++#if defined(DEBUG)
++    const enum mcheck_status status = mprobe(ptr);
++
++    CFAssert3(status == MCHECK_OK || status == MCHECK_DISABLED,
++              __kCFLogAssertion, "%s: ptr %p status %d",
++              __PRETTY_FUNCTION__, ptr, status);
++#endif
++
+     free(ptr);
+ }
+ #endif
diff --git a/opencflite.patches/opencflite-54.description b/opencflite.patches/opencflite-54.description
new file mode 100644
index 0000000..d718069
--- /dev/null
+++ b/opencflite.patches/opencflite-54.description
@@ -0,0 +1,2 @@
+This patch adds preprocessor comment labels at the end of several long
+conditional blocks.
diff --git a/opencflite.patches/opencflite-54.patch b/opencflite.patches/opencflite-54.patch
new file mode 100644
index 0000000..f65ab05
--- /dev/null
+++ b/opencflite.patches/opencflite-54.patch
@@ -0,0 +1,30 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c	2011-08-10 16:29:35.458178493 -0700
++++ b/CFBase.c	2011-08-10 16:31:27.000000000 -0700
+@@ -270,7 +270,7 @@
+     malloc_zone_free((malloc_zone_t*)info, ptr);
+ }
+ 
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+ 
+ #if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
+ static void *__CFAllocatorSystemAllocate(CFIndex size, CFOptionFlags hint, void *info) {
+@@ -685,7 +685,7 @@
+ 	    malloc_zone_free((malloc_zone_t *)allocator, ptr);
+ 	    return NULL;
+ 	}
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+ 	deallocateFunc = __CFAllocatorGetDeallocateFunction(&allocator->_context);
+ 	if (NULL != deallocateFunc) {
+ 	    INVOKE_CALLBACK2(deallocateFunc, ptr, allocator->_context.info);
+@@ -722,7 +722,7 @@
+ #endif
+ 	return malloc_zone_free((malloc_zone_t *)allocator, ptr);
+     }
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+     deallocateFunc = __CFAllocatorGetDeallocateFunction(&allocator->_context);
+     if (NULL != ptr && NULL != deallocateFunc) {
+ 	INVOKE_CALLBACK2(deallocateFunc, ptr, allocator->_context.info);
diff --git a/opencflite.patches/opencflite-55.description b/opencflite.patches/opencflite-55.description
new file mode 100644
index 0000000..be7c340
--- /dev/null
+++ b/opencflite.patches/opencflite-55.description
@@ -0,0 +1,11 @@
+This patch removes support, on Linux, for using the malloc_usable_size
+introspection method when instantiating CoreFoundation runtime
+instances.
+
+On Linux, across various architectures and versions of the GNU C
+Library, malloc_usable_size has been observed to at times return
+incorrect values. Since the introspection value-add it provides to
+CoreFoundation seems to be of limited utility in this context, we
+eliminate it and simpy use the caller-requested size. In addition,
+memsetting this small tail block has also been found to cause heap
+consistency problems.
diff --git a/opencflite.patches/opencflite-55.patch b/opencflite.patches/opencflite-55.patch
new file mode 100644
index 0000000..36cd340
--- /dev/null
+++ b/opencflite.patches/opencflite-55.patch
@@ -0,0 +1,54 @@
+diff -aruN a/CFRuntime.c b/CFRuntime.c
+--- a/CFRuntime.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFRuntime.c	2011-08-10 16:32:44.000000000 -0700
+@@ -73,11 +73,6 @@
+ CF_INLINE size_t malloc_size(void* memblock) {
+     return _msize(memblock);
+ }
+-#elif DEPLOYMENT_TARGET_LINUX
+-#include <malloc.h>
+-CF_INLINE size_t malloc_size(const void *memblock) {
+-    return malloc_usable_size((void *)memblock);
+-}
+ #endif
+ 
+ extern void __HALT(void);
+@@ -264,12 +259,21 @@
+     if (NULL == memory) {
+ 	return NULL;
+     }
+-#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
++#if DEPLOYMENT_TARGET_WINDOWS
+     // malloc_size won't work if the memory address has been moved
+     // (such as a custom allocator that adds its own metadata
+     // (e.g. under/overflow guard data), so don't attempt to call it
+     // on the allocation return.
+     size_t msize = (usesSystemDefaultAllocator) ? malloc_size(memory) : size;
++#elif DEPLOYMENT_TARGET_LINUX
++    // On Linux, across various architectures and versions of the GNU
++    // C Library, malloc_usable_size has been observed to at times return
++    // incorrect values. Since the introspection value-add it provides to
++    // CoreFoundation seems to be of limited utility, we eliminate it and
++    // simpy use the caller-requested size. In addition, memsetting this
++    // small tail block has also been found to cause heap consistency
++    // problems.
++    size_t msize = size;
+ #else
+     size_t msize = malloc_size(memory);
+ #endif
+@@ -1098,6 +1100,7 @@
+ 	usesSystemDefaultAllocator = (allocator == kCFAllocatorSystemDefault);
+ 
+ 	if (__CFZombieLevel & (1 << 0)) {
++#if !DEPLOYMENT_TARGET_LINUX
+ 	    uint8_t *ptr = (uint8_t *)cf - (usesSystemDefaultAllocator ? 0 : sizeof(CFAllocatorRef));
+ 	    size_t size = malloc_size(ptr);
+ 	    uint8_t byte = 0xFC;
+@@ -1109,6 +1112,7 @@
+ 		byte = (__CFZombieLevel >> 8) & 0xFF;
+ 	    }
+ 	    memset(ptr, byte, size);
++#endif /* !DEPLOYMENT_TARGET_LINUX */
+ 	}
+ 	if (!(__CFZombieLevel & (1 << 4))) {
+ 	    CFAllocatorDeallocate(allocator, (uint8_t *)cf - (usesSystemDefaultAllocator ? 0 : sizeof(CFAllocatorRef)));
diff --git a/opencflite.patches/opencflite-56.description b/opencflite.patches/opencflite-56.description
new file mode 100644
index 0000000..657993f
--- /dev/null
+++ b/opencflite.patches/opencflite-56.description
@@ -0,0 +1,2 @@
+This patch addresses a bug in CFSetApplyFunction that can result in it accessing and modifying deallocated key memory when iterating over a mutable 
+set while simultaneously mutating it where those mutations might lead to the growth or shrinkage of the set.
diff --git a/opencflite.patches/opencflite-56.patch b/opencflite.patches/opencflite-56.patch
new file mode 100644
index 0000000..b403a63
--- /dev/null
+++ b/opencflite.patches/opencflite-56.patch
@@ -0,0 +1,22 @@
+diff -aruN a/CFSet.c b/CFSet.c
+--- a/CFSet.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFSet.c	2011-09-06 17:05:25.000000000 -0700
+@@ -1089,15 +1089,14 @@
+     if (CFDictionary) CF_OBJC_FUNCDISPATCH2(__kCFHashTypeID, void, hc, "_apply:context:", applier, context);
+     if (CFSet) CF_OBJC_FUNCDISPATCH2(__kCFHashTypeID, void, hc, "_applyValues:context:", applier, context);
+     __CFGenericValidateType(hc, __kCFHashTypeID);
+-    any_t *keys = hc->_keys;
+     for (CFIndex idx = 0, nbuckets = hc->_bucketsNum; idx < nbuckets; idx++) {
+-        if (__CFHashKeyIsValue(hc, keys[idx])) {
++        if (__CFHashKeyIsValue(hc, hc->_keys[idx])) {
+             for (CFIndex cnt = __CFHashGetOccurrenceCount(hc, idx); cnt--;) {
+ #if CFDictionary
+-                INVOKE_CALLBACK3(applier, (const_any_pointer_t)keys[idx], (const_any_pointer_t)hc->_values[idx], context);
++                INVOKE_CALLBACK3(applier, (const_any_pointer_t)hc->_keys[idx], (const_any_pointer_t)hc->_values[idx], context);
+ #endif
+ #if CFSet || CFBag
+-                INVOKE_CALLBACK2(applier, (const_any_pointer_t)keys[idx], context);
++                INVOKE_CALLBACK2(applier, (const_any_pointer_t)hc->_keys[idx], context);
+ #endif
+             }
+         }
diff --git a/opencflite.patches/opencflite-57.description b/opencflite.patches/opencflite-57.description
new file mode 100644
index 0000000..8cba9fd
--- /dev/null
+++ b/opencflite.patches/opencflite-57.description
@@ -0,0 +1 @@
+This patch ensures that, for Linux systems, that CFLocaleCopyCurrent returns the locale corresponding to the identifier set by the environment variables LC_ALL (if present) or LANG (if present).
diff --git a/opencflite.patches/opencflite-57.patch b/opencflite.patches/opencflite-57.patch
new file mode 100644
index 0000000..184f57c
--- /dev/null
+++ b/opencflite.patches/opencflite-57.patch
@@ -0,0 +1,32 @@
+diff -aruN a/CFLocale.c b/CFLocale.c
+--- a/CFLocale.c	2009-02-22 21:56:00.000000000 -0800
++++ b/CFLocale.c	2012-04-20 12:14:07.061605103 -0700
+@@ -223,6 +223,19 @@
+     WindowsLocales = CFArrayCreate(kCFAllocatorSystemDefault, (const void**)s_WindowsInstalledLocales, s_num_installed_localesI, &kCFTypeArrayCallBacks);
+     return (WindowsLocales);
+ }
++#elif DEPLOYMENT_TARGET_LINUX
++static CFStringRef __CFLocaleCopyPOSIXLocaleName(void)
++{
++    const char *p = NULL;
++    CFStringRef identifier = NULL;
++
++    p = getenv("LC_ALL");
++
++    if (NULL == p) p = getenv("LANG");
++    if (NULL != p) identifier = CFStringCreateWithCString(kCFAllocatorDefault, p, kCFStringEncodingASCII);
++
++    return (identifier);
++}
+ #endif // DEPLOYMENT_TARGET_WINDOWS
+ 
+ static Boolean __CFLocaleEqual(CFTypeRef cf1, CFTypeRef cf2) {
+@@ -335,6 +348,8 @@
+ 
+ #ifdef DEPLOYMENT_TARGET_WINDOWS
+     identifier = __CFLocaleWindowsLCIDToISOLocaleName(LOCALE_USER_DEFAULT);
++#elif DEPLOYMENT_TARGET_LINUX
++    identifier = __CFLocaleCopyPOSIXLocaleName();
+ #endif 
+ 
+     struct __CFLocale *locale;
diff --git a/opencflite.patches/opencflite-58.description b/opencflite.patches/opencflite-58.description
new file mode 100644
index 0000000..a2ec24d
--- /dev/null
+++ b/opencflite.patches/opencflite-58.description
@@ -0,0 +1 @@
+This patch enabled __CFWriteBytesToFileWithAtomicity on Linux and specifies a mkstemp template format compatible with both BSD and Linux.
diff --git a/opencflite.patches/opencflite-58.patch b/opencflite.patches/opencflite-58.patch
new file mode 100644
index 0000000..db1f9ce
--- /dev/null
+++ b/opencflite.patches/opencflite-58.patch
@@ -0,0 +1,38 @@
+diff -aruN a/CFXMLPreferencesDomain.c b/CFXMLPreferencesDomain.c
+--- a/CFXMLPreferencesDomain.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFXMLPreferencesDomain.c	2012-04-25 10:35:53.000000000 -0700
+@@ -238,9 +238,10 @@
+ }
+ 
+ 
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
++#include <stdio.h>
+ #include <sys/fcntl.h>
+ 
+ /* __CFWriteBytesToFileWithAtomicity is a "safe save" facility. Write the bytes using the specified mode on the file to the provided URL. If the atomic flag is true, try to do it in a fashion that will enable a safe save.
+  */
+ static Boolean __CFWriteBytesToFileWithAtomicity(CFURLRef url, const void *bytes, int length, SInt32 mode, Boolean atomic) {
+@@ -264,6 +269,6 @@
+     if (atomic) {
+         CFURLRef dir = CFURLCreateCopyDeletingLastPathComponent(kCFAllocatorSystemDefault, url);
+-        CFURLRef tempFile = CFURLCreateCopyAppendingPathComponent(kCFAllocatorSystemDefault, dir, CFSTR("cf#XXXXX"), false);
++        CFURLRef tempFile = CFURLCreateCopyAppendingPathComponent(kCFAllocatorSystemDefault, dir, CFSTR("cf#XXXXXX"), false);
+         CFRelease(dir);
+         if (!CFURLGetFileSystemRepresentation(tempFile, true, (uint8_t *)auxPath, CFMaxPathSize)) {
+             CFRelease(tempFile);
+@@ -339,12 +346,12 @@
+         CFRelease(binStream);
+         if (data) {
+             SInt32 mode;
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
+             mode = isWorldReadable ? S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH : S_IRUSR|S_IWUSR;
+ #else
+ 	    mode = 0666;
+ #endif
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
+             {	// Try quick atomic way first, then fallback to slower ways and error cases
+                 CFStringRef scheme = CFURLCopyScheme(url);
+                 if (!scheme) {
diff --git a/opencflite.patches/opencflite-59.description b/opencflite.patches/opencflite-59.description
new file mode 100644
index 0000000..0e9237d
--- /dev/null
+++ b/opencflite.patches/opencflite-59.description
@@ -0,0 +1 @@
+This patch first attempts to look up the group ID associated with the group name "admin" to ensure it works on platforms where the ID may not be '80' is it is on Mac OS X. Only if the group name "admin" is not fond does it now fallback to using 80.
diff --git a/opencflite.patches/opencflite-59.patch b/opencflite.patches/opencflite-59.patch
new file mode 100644
index 0000000..cc73877
--- /dev/null
+++ b/opencflite.patches/opencflite-59.patch
@@ -0,0 +1,29 @@
+diff -aruN a/CFXMLPreferencesDomain.c b/CFXMLPreferencesDomain.c
+--- a/CFXMLPreferencesDomain.c	2009-02-19 08:32:54.000000000 -0800
++++ b/CFXMLPreferencesDomain.c	2012-04-25 10:35:53.000000000 -0700
+@@ -239,9 +239,13 @@
+ 
+ 
+ #if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
++#include <grp.h>
+ #include <stdio.h>
+ #include <sys/fcntl.h>
+ 
++#define __kCFAdminGroupName       "admin"
++#define __kCFAdminFallbackGroupID 80
++
+ /* __CFWriteBytesToFileWithAtomicity is a "safe save" facility. Write the bytes using the specified mode on the file to the provided URL. If the atomic flag is true, try to do it in a fashion that will enable a safe save.
+  */
+ static Boolean __CFWriteBytesToFileWithAtomicity(CFURLRef url, const void *bytes, int length, SInt32 mode, Boolean atomic) {
+@@ -265,8 +270,10 @@
+         } else {
+             mode = 0664;
+             if (writingFileAsRoot && (0 == strncmp(cpath, "/Library/Preferences", 20))) {
++                const struct group *grent;
+                 owner = geteuid();
+-                group = 80;
++                grent = getgrnam(__kCFAdminGroupName);
++                group = grent ? grent->gr_gid : __kCFAdminFallbackGroupID;
+             }
+         }
+     }
diff --git a/opencflite.patches/opencflite-60.description b/opencflite.patches/opencflite-60.description
new file mode 100644
index 0000000..d455eae
--- /dev/null
+++ b/opencflite.patches/opencflite-60.description
@@ -0,0 +1 @@
+This patch ensures that both the CoreFoundation code and the package installation are consistent in their location and placement of Unicode character set data files.
diff --git a/opencflite.patches/opencflite-60.patch b/opencflite.patches/opencflite-60.patch
new file mode 100644
index 0000000..269caf8
--- /dev/null
+++ b/opencflite.patches/opencflite-60.patch
@@ -0,0 +1,53 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/Makefile.am	2009-03-10 16:31:21.000000000 -0700
++++ b/Makefile.am	2012-04-25 22:35:17.521378952 -0700
+@@ -25,7 +25,7 @@
+ # Unicode character mappings.
+ #
+ 
+-libCoreFoundation_la_datadir	= ${datadir}/CoreServices
++libCoreFoundation_la_datadir	= ${datadir}/CoreFoundation/CharacterSets
+ 
+ libCoreFoundation_la_data_DATA	= CFCharacterSetBitmaps.bitmap		\
+ 				  CFUniCharPropertyDatabase.data	\
+@@ -35,7 +35,7 @@
+ CF_COMMON_CPPFLAGS		= $(AM_CPPFLAGS)			\
+ 				  -DU_SHOW_DRAFT_API=1			\
+ 				  -DCF_BUILDING_CF=1			\
+-				  -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \
++				  -D__kCFDataDir=\"${datadir}\" \
+ 				  -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5	\
+ 				  -I$(top_srcdir)/include		\
+ 				  -I$(top_srcdir)/include/mach_support
+diff -aruN a/Makefile.in b/Makefile.in
+--- a/Makefile.in	2009-03-10 23:44:36.000000000 -0700
++++ b/Makefile.in	2012-04-25 22:38:23.269381165 -0700
+@@ -535,7 +535,7 @@
+ # Define where we will install and where CoreFoundation can find its
+ # Unicode character mappings.
+ #
+-libCoreFoundation_la_datadir = ${datadir}/CoreServices
++libCoreFoundation_la_datadir = ${datadir}/CoreFoundation/CharacterSets
+ libCoreFoundation_la_data_DATA = CFCharacterSetBitmaps.bitmap		\
+ 				  CFUniCharPropertyDatabase.data	\
+ 				  CFUnicodeData-B.mapping		\
+@@ -544,7 +544,7 @@
+ CF_COMMON_CPPFLAGS = $(AM_CPPFLAGS)			\
+ 				  -DU_SHOW_DRAFT_API=1			\
+ 				  -DCF_BUILDING_CF=1			\
+-				  -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \
++				  -D__kCFDataDir=\"${datadir}\" \
+ 				  -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5	\
+ 				  -I$(top_srcdir)/include		\
+ 				  -I$(top_srcdir)/include/mach_support
+--- a/CFUniChar.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c	2012-04-25 22:58:38.968005637 -0700
+@@ -67,7 +67,7 @@
+ #if DEPLOYMENT_TARGET_MACOSX
+ #define __kCFCharacterSetDir "/System/Library/CoreServices"
+ #elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
+-#define __kCFCharacterSetDir "/usr/local/share/CoreFoundation"
++#define __kCFCharacterSetDir __kCFDataDir "/CoreFoundation"
+ #elif DEPLOYMENT_TARGET_WINDOWS
+ #define __kCFCharacterSetDir "\\Windows\\CoreFoundation"
+ #define MAXPATHLEN MAX_PATH
diff --git a/opencflite.patches/opencflite-61.description b/opencflite.patches/opencflite-61.description
new file mode 100644
index 0000000..ac499cd
--- /dev/null
+++ b/opencflite.patches/opencflite-61.description
@@ -0,0 +1 @@
+This patch ensures that regardless of target byte-order that CoreFoundation sources a single data file name, leaving it up to the distribution to rename or symbolic link the data file with the appropriate byte ordering.
diff --git a/opencflite.patches/opencflite-61.patch b/opencflite.patches/opencflite-61.patch
new file mode 100644
index 0000000..b724c34
--- /dev/null
+++ b/opencflite.patches/opencflite-61.patch
@@ -0,0 +1,24 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c	2012-04-25 22:58:38.968005637 -0700
+@@ -574,18 +576,10 @@
+ 
+ static CFSpinLock_t __CFUniCharMappingTableLock = CFSpinLockInit;
+ 
+-#if __CF_BIG_ENDIAN__
+ #if USE_MACHO_SEGMENT
+ #define MAPPING_TABLE_FILE "__data"
+ #else
+-#define MAPPING_TABLE_FILE "CFUnicodeData-B.mapping"
+-#endif
+-#else
+-#if USE_MACHO_SEGMENT
+-#define MAPPING_TABLE_FILE "__data"
+-#else
+-#define MAPPING_TABLE_FILE "CFUnicodeData-L.mapping"
+-#endif
++#define MAPPING_TABLE_FILE "CFUnicodeData.mapping"
+ #endif
+ 
+ __private_extern__ const void *CFUniCharGetMappingData(uint32_t type) {
+diff -aruN a/Makefile.am b/Makefile.am
diff --git a/opencflite.patches/opencflite-62.description b/opencflite.patches/opencflite-62.description
new file mode 100644
index 0000000..c1d5bf1
--- /dev/null
+++ b/opencflite.patches/opencflite-62.description
@@ -0,0 +1 @@
+This patch adds two assertions to ensure that Unicode data files are successfully opened and mapped.
diff --git a/opencflite.patches/opencflite-62.patch b/opencflite.patches/opencflite-62.patch
new file mode 100644
index 0000000..e58f77a
--- /dev/null
+++ b/opencflite.patches/opencflite-62.patch
@@ -0,0 +1,16 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c	2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c	2012-04-25 22:58:38.968005637 -0700
+@@ -221,10 +221,12 @@
+ 
+     int no_hang_fd = open("/dev/autofs_nowait", 0);
+     if ((fd = open(fileName, O_RDONLY, 0)) < 0) {
++    CFLog(__kCFLogAssertion, CFSTR("%s(): could not open %s for read-only access."), __PRETTY_FUNCTION__, fileName);
+ 	close(no_hang_fd);
+ 	return false;
+     }
+     if (fstat(fd, &statBuf) < 0 || (*bytes = mmap(0, statBuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)-1) {
++        CFLog(__kCFLogAssertion, CFSTR("%s(): could not map %s for read-only access."), __PRETTY_FUNCTION__, fileName);
+         close(fd);
+         return false;
+     }
diff --git a/opencflite.tar.gz b/opencflite.tar.gz
new file mode 100644
index 0000000..cff4fd0
--- /dev/null
+++ b/opencflite.tar.gz
Binary files differ
diff --git a/opencflite.url b/opencflite.url
new file mode 100644
index 0000000..90a49dc
--- /dev/null
+++ b/opencflite.url
@@ -0,0 +1 @@
+http://download.sourceforge.net/opencflite/opencflite-476.17.2.tar.gz
diff --git a/opencflite.version b/opencflite.version
new file mode 100644
index 0000000..7b60178
--- /dev/null
+++ b/opencflite.version
@@ -0,0 +1 @@
+476.17.2