diff --git a/gtk/patches/glib-2.12.13.macports.diff b/gtk/patches/glib-2.12.13.macports.diff
new file mode 100755
index 0000000000000000000000000000000000000000..a094b9a0682bfc7529a16006c7300673fc7952f6
--- /dev/null
+++ b/gtk/patches/glib-2.12.13.macports.diff
@@ -0,0 +1,142 @@
+--- configure.original	2008-07-14 14:57:48.000000000 +0200
++++ configure	2008-07-14 15:00:04.000000000 +0200
+@@ -31818,23 +31818,11 @@
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+ $as_echo "$ac_cv_c_bigendian" >&6; }
+- case $ac_cv_c_bigendian in #(
+-   yes)
+      cat >>confdefs.h <<\_ACEOF
++#ifdef __ppc__
+ #define WORDS_BIGENDIAN 1
++#endif
+ _ACEOF
+-;; #(
+-   no)
+-      ;; #(
+-   universal)
+-      ;; #(
+-   *)
+-     { { $as_echo "$as_me:$LINENO: error: unknown endianness
+- presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+-$as_echo "$as_me: error: unknown endianness
+- presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+-   { (exit 1); exit 1; }; } ;;
+- esac
+ 
+ 
+ # check for header files
+@@ -42770,7 +42758,11 @@
+ $as_echo "$glib_cv_byte_contents_gmutex" >&6; }
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define GLIB_BYTE_CONTENTS_GMUTEX $glib_cv_byte_contents_gmutex
++#ifdef __ppc__
++#define GLIB_BYTE_CONTENTS_GMUTEX 50,-86,-85,-89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
++#else
++#define GLIB_BYTE_CONTENTS_GMUTEX -89,-85,-86,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
++#endif
+ _ACEOF
+ 
+ 
+@@ -48265,10 +48257,13 @@
+ _______EOF
+ 	fi
+ 
+-	case x$g_stack_grows in
+-	xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
+-	*)    echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
+-	esac
++	cat >>$outfile <<_______EOF
++#ifdef __ppc__
++#define G_HAVE_GROWING_STACK 1
++#else
++#define G_HAVE_GROWING_STACK 0
++#endif
++_______EOF
+ 
+ 
+ 	echo >>$outfile
+@@ -48317,7 +48312,12 @@
+     long   dummy_long;
+   } static_mutex;
+ };
+-#define	G_STATIC_MUTEX_INIT	{ NULL, { { $g_mutex_contents} } }
++#ifdef __ppc__
++#define G_STATIC_MUTEX_INIT     { NULL, { { 50,-86,-85,-89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
++#else           
++#define G_STATIC_MUTEX_INIT     { NULL, { { -89,-85,-86,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
++#endif
++
+ #define	g_static_mutex_get_mutex(mutex) \\
+   (g_thread_use_default_impl ? ((GMutex*) ((mutex)->static_mutex.pad)) : \\
+    g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
+@@ -48346,24 +48346,39 @@
+   void  *dummy_pointer;
+   long   dummy_long;
+ };
+-_______EOF
+-	if test x"$g_memory_barrier_needed" != xno; then
+-	  echo >>$outfile
+-	  echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
+-	fi
++#ifdef __ppc__
++#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1
++#define GINT16_TO_BE(val)	((gint16) (val))
++#define GUINT16_TO_BE(val)	((guint16) (val))
++#define GINT16_TO_LE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
++#define GUINT16_TO_LE(val)	(GUINT16_SWAP_LE_BE (val))
++#define GINT32_TO_BE(val)	((gint32) (val))
++#define GUINT32_TO_BE(val)	((guint32) (val))
++#define GINT32_TO_LE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
++#define GUINT32_TO_LE(val)	(GUINT32_SWAP_LE_BE (val))
++#define GINT64_TO_BE(val)	((gint64) (val))
++#define GUINT64_TO_BE(val)	((guint64) (val))
++#define GINT64_TO_LE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
++#define GUINT64_TO_LE(val)	(GUINT64_SWAP_LE_BE (val))
++
++#else
++
++#define GINT16_TO_LE(val)	((gint16) (val))
++#define GUINT16_TO_LE(val)	((guint16) (val))
++#define GINT16_TO_BE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
++#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
++#define GINT32_TO_LE(val)	((gint32) (val))
++#define GUINT32_TO_LE(val)	((guint32) (val))
++#define GINT32_TO_BE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
++#define GUINT32_TO_BE(val)	(GUINT32_SWAP_LE_BE (val))
++#define GINT64_TO_LE(val)	((gint64) (val))
++#define GUINT64_TO_LE(val)	((guint64) (val))
++#define GINT64_TO_BE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
++#define GUINT64_TO_BE(val)	(GUINT64_SWAP_LE_BE (val))
++
++#endif
+ 
+-	echo >>$outfile
+-	g_bit_sizes="16 32 64"
+-	for bits in $g_bit_sizes; do
+-	  cat >>$outfile <<_______EOF
+-#define GINT${bits}_TO_${g_bs_native}(val)	((gint${bits}) (val))
+-#define GUINT${bits}_TO_${g_bs_native}(val)	((guint${bits}) (val))
+-#define GINT${bits}_TO_${g_bs_alien}(val)	((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
+-#define GUINT${bits}_TO_${g_bs_alien}(val)	(GUINT${bits}_SWAP_LE_BE (val))
+-_______EOF
+-	done
+ 
+-	cat >>$outfile <<_______EOF
+ #define GLONG_TO_LE(val)	((glong) GINT${glongbits}_TO_LE (val))
+ #define GULONG_TO_LE(val)	((gulong) GUINT${glongbits}_TO_LE (val))
+ #define GLONG_TO_BE(val)	((glong) GINT${glongbits}_TO_BE (val))
+@@ -48372,7 +48387,11 @@
+ #define GUINT_TO_LE(val)	((guint) GUINT${gintbits}_TO_LE (val))
+ #define GINT_TO_BE(val)		((gint) GINT${gintbits}_TO_BE (val))
+ #define GUINT_TO_BE(val)	((guint) GUINT${gintbits}_TO_BE (val))
+-#define G_BYTE_ORDER $g_byte_order
++#ifdef __ppc__
++#define G_BYTE_ORDER G_BIG_ENDIAN
++#else
++#define G_BYTE_ORDER G_LITTLE_ENDIAN
++#endif
+ 
+ #define GLIB_SYSDEF_POLLIN =$g_pollin
+ #define GLIB_SYSDEF_POLLOUT =$g_pollout
diff --git a/gtk/patches/glib-2.12.13.macports.patch b/gtk/patches/glib-2.12.13.macports.patch
new file mode 100755
index 0000000000000000000000000000000000000000..f8a20f1b6e03a066806e080460461b2c1a8c5035
--- /dev/null
+++ b/gtk/patches/glib-2.12.13.macports.patch
@@ -0,0 +1,116 @@
+--- configure.original	2008-07-14 14:57:48.000000000 +0200
++++ configure	2008-07-14 15:00:04.000000000 +0200
+@@ -42770,7 +42758,11 @@
+ $as_echo "$glib_cv_byte_contents_gmutex" >&6; }
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define GLIB_BYTE_CONTENTS_GMUTEX $glib_cv_byte_contents_gmutex
++#ifdef __ppc__
++#define GLIB_BYTE_CONTENTS_GMUTEX 50,-86,-85,-89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
++#else
++#define GLIB_BYTE_CONTENTS_GMUTEX -89,-85,-86,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
++#endif
+ _ACEOF
+ 
+ 
+@@ -48265,10 +48257,13 @@
+ _______EOF
+ 	fi
+ 
+-	case x$g_stack_grows in
+-	xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
+-	*)    echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
+-	esac
++	cat >>$outfile <<_______EOF
++#ifdef __ppc__
++#define G_HAVE_GROWING_STACK 1
++#else
++#define G_HAVE_GROWING_STACK 0
++#endif
++_______EOF
+ 
+ 
+ 	echo >>$outfile
+@@ -48317,7 +48312,12 @@
+     long   dummy_long;
+   } static_mutex;
+ };
+-#define	G_STATIC_MUTEX_INIT	{ NULL, { { $g_mutex_contents} } }
++#ifdef __ppc__
++#define G_STATIC_MUTEX_INIT     { NULL, { { 50,-86,-85,-89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
++#else           
++#define G_STATIC_MUTEX_INIT     { NULL, { { -89,-85,-86,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
++#endif
++
+ #define	g_static_mutex_get_mutex(mutex) \\
+   (g_thread_use_default_impl ? ((GMutex*) ((mutex)->static_mutex.pad)) : \\
+    g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
+@@ -48346,24 +48346,39 @@
+   void  *dummy_pointer;
+   long   dummy_long;
+ };
+-_______EOF
+-	if test x"$g_memory_barrier_needed" != xno; then
+-	  echo >>$outfile
+-	  echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
+-	fi
++#ifdef __ppc__
++#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1
++#define GINT16_TO_BE(val)	((gint16) (val))
++#define GUINT16_TO_BE(val)	((guint16) (val))
++#define GINT16_TO_LE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
++#define GUINT16_TO_LE(val)	(GUINT16_SWAP_LE_BE (val))
++#define GINT32_TO_BE(val)	((gint32) (val))
++#define GUINT32_TO_BE(val)	((guint32) (val))
++#define GINT32_TO_LE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
++#define GUINT32_TO_LE(val)	(GUINT32_SWAP_LE_BE (val))
++#define GINT64_TO_BE(val)	((gint64) (val))
++#define GUINT64_TO_BE(val)	((guint64) (val))
++#define GINT64_TO_LE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
++#define GUINT64_TO_LE(val)	(GUINT64_SWAP_LE_BE (val))
++
++#else
++
++#define GINT16_TO_LE(val)	((gint16) (val))
++#define GUINT16_TO_LE(val)	((guint16) (val))
++#define GINT16_TO_BE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
++#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
++#define GINT32_TO_LE(val)	((gint32) (val))
++#define GUINT32_TO_LE(val)	((guint32) (val))
++#define GINT32_TO_BE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
++#define GUINT32_TO_BE(val)	(GUINT32_SWAP_LE_BE (val))
++#define GINT64_TO_LE(val)	((gint64) (val))
++#define GUINT64_TO_LE(val)	((guint64) (val))
++#define GINT64_TO_BE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
++#define GUINT64_TO_BE(val)	(GUINT64_SWAP_LE_BE (val))
++
++#endif
+ 
+-	echo >>$outfile
+-	g_bit_sizes="16 32 64"
+-	for bits in $g_bit_sizes; do
+-	  cat >>$outfile <<_______EOF
+-#define GINT${bits}_TO_${g_bs_native}(val)	((gint${bits}) (val))
+-#define GUINT${bits}_TO_${g_bs_native}(val)	((guint${bits}) (val))
+-#define GINT${bits}_TO_${g_bs_alien}(val)	((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
+-#define GUINT${bits}_TO_${g_bs_alien}(val)	(GUINT${bits}_SWAP_LE_BE (val))
+-_______EOF
+-	done
+ 
+-	cat >>$outfile <<_______EOF
+ #define GLONG_TO_LE(val)	((glong) GINT${glongbits}_TO_LE (val))
+ #define GULONG_TO_LE(val)	((gulong) GUINT${glongbits}_TO_LE (val))
+ #define GLONG_TO_BE(val)	((glong) GINT${glongbits}_TO_BE (val))
+@@ -48372,7 +48387,11 @@
+ #define GUINT_TO_LE(val)	((guint) GUINT${gintbits}_TO_LE (val))
+ #define GINT_TO_BE(val)		((gint) GINT${gintbits}_TO_BE (val))
+ #define GUINT_TO_BE(val)	((guint) GUINT${gintbits}_TO_BE (val))
+-#define G_BYTE_ORDER $g_byte_order
++#ifdef __ppc__
++#define G_BYTE_ORDER G_BIG_ENDIAN
++#else
++#define G_BYTE_ORDER G_LITTLE_ENDIAN
++#endif
+ 
+ #define GLIB_SYSDEF_POLLIN =$g_pollin
+ #define GLIB_SYSDEF_POLLOUT =$g_pollout
diff --git a/gtk/patches/glib-2.12.13.patch b/gtk/patches/glib-2.12.13.patch
new file mode 100755
index 0000000000000000000000000000000000000000..aaaf0dfb8360a68e46f445a8f52bde05944969f4
--- /dev/null
+++ b/gtk/patches/glib-2.12.13.patch
@@ -0,0 +1,126 @@
+--- configure.original	2008-11-04 09:14:48.000000000 +0000
++++ configure	2008-11-04 09:16:11.000000000 +0000
+@@ -31219,7 +31219,9 @@
+   yes)
+ 
+ cat >>confdefs.h <<\_ACEOF
++#ifdef __ppc__
+ #define WORDS_BIGENDIAN 1
++#endif
+ _ACEOF
+  ;;
+   no)
+@@ -39989,7 +39991,11 @@
+ echo "${ECHO_T}$glib_cv_byte_contents_gmutex" >&6; }
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define GLIB_BYTE_CONTENTS_GMUTEX $glib_cv_byte_contents_gmutex
++#ifdef __ppc__
++#define GLIB_BYTE_CONTENTS_GMUTEX 50,-86,-85,-89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
++#else
++#define GLIB_BYTE_CONTENTS_GMUTEX -89,-85,-86,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
++#endif
+ _ACEOF
+ 
+ 
+@@ -45512,10 +45518,13 @@
+ _______EOF
+ 	fi
+ 
+-	case x$g_stack_grows in
+-	xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
+-	*)    echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
+-	esac
++	cat >>$outfile <<_______EOF
++#ifdef __ppc__
++#define G_HAVE_GROWING_STACK 1
++#else
++#define G_HAVE_GROWING_STACK 0
++#endif
++_______EOF
+ 
+ 
+ 	echo >>$outfile
+@@ -45564,7 +45573,12 @@
+     long   dummy_long;
+   } static_mutex;
+ };
+-#define	G_STATIC_MUTEX_INIT	{ NULL, { { $g_mutex_contents} } }
++#ifdef __ppc__
++#define G_STATIC_MUTEX_INIT     { NULL, { { 50,-86,-85,-89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
++#else           
++#define G_STATIC_MUTEX_INIT     { NULL, { { -89,-85,-86,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
++#endif
++
+ #define	g_static_mutex_get_mutex(mutex) \\
+   (g_thread_use_default_impl ? ((GMutex*) ((mutex)->static_mutex.pad)) : \\
+    g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
+@@ -45593,24 +45607,39 @@
+   void  *dummy_pointer;
+   long   dummy_long;
+ };
+-_______EOF
+-	if test x"$g_memory_barrier_needed" != xno; then
+-	  echo >>$outfile
+-	  echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
+-	fi
++#ifdef __ppc__
++#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1
++#define GINT16_TO_BE(val)	((gint16) (val))
++#define GUINT16_TO_BE(val)	((guint16) (val))
++#define GINT16_TO_LE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
++#define GUINT16_TO_LE(val)	(GUINT16_SWAP_LE_BE (val))
++#define GINT32_TO_BE(val)	((gint32) (val))
++#define GUINT32_TO_BE(val)	((guint32) (val))
++#define GINT32_TO_LE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
++#define GUINT32_TO_LE(val)	(GUINT32_SWAP_LE_BE (val))
++#define GINT64_TO_BE(val)	((gint64) (val))
++#define GUINT64_TO_BE(val)	((guint64) (val))
++#define GINT64_TO_LE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
++#define GUINT64_TO_LE(val)	(GUINT64_SWAP_LE_BE (val))
++
++#else
++
++#define GINT16_TO_LE(val)	((gint16) (val))
++#define GUINT16_TO_LE(val)	((guint16) (val))
++#define GINT16_TO_BE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
++#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
++#define GINT32_TO_LE(val)	((gint32) (val))
++#define GUINT32_TO_LE(val)	((guint32) (val))
++#define GINT32_TO_BE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
++#define GUINT32_TO_BE(val)	(GUINT32_SWAP_LE_BE (val))
++#define GINT64_TO_LE(val)	((gint64) (val))
++#define GUINT64_TO_LE(val)	((guint64) (val))
++#define GINT64_TO_BE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
++#define GUINT64_TO_BE(val)	(GUINT64_SWAP_LE_BE (val))
++
++#endif
+ 
+-	echo >>$outfile
+-	g_bit_sizes="16 32 64"
+-	for bits in $g_bit_sizes; do
+-	  cat >>$outfile <<_______EOF
+-#define GINT${bits}_TO_${g_bs_native}(val)	((gint${bits}) (val))
+-#define GUINT${bits}_TO_${g_bs_native}(val)	((guint${bits}) (val))
+-#define GINT${bits}_TO_${g_bs_alien}(val)	((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
+-#define GUINT${bits}_TO_${g_bs_alien}(val)	(GUINT${bits}_SWAP_LE_BE (val))
+-_______EOF
+-	done
+ 
+-	cat >>$outfile <<_______EOF
+ #define GLONG_TO_LE(val)	((glong) GINT${glongbits}_TO_LE (val))
+ #define GULONG_TO_LE(val)	((gulong) GUINT${glongbits}_TO_LE (val))
+ #define GLONG_TO_BE(val)	((glong) GINT${glongbits}_TO_BE (val))
+@@ -45619,7 +45648,11 @@
+ #define GUINT_TO_LE(val)	((guint) GUINT${gintbits}_TO_LE (val))
+ #define GINT_TO_BE(val)		((gint) GINT${gintbits}_TO_BE (val))
+ #define GUINT_TO_BE(val)	((guint) GUINT${gintbits}_TO_BE (val))
+-#define G_BYTE_ORDER $g_byte_order
++#ifdef __ppc__
++#define G_BYTE_ORDER G_BIG_ENDIAN
++#else
++#define G_BYTE_ORDER G_LITTLE_ENDIAN
++#endif
+ 
+ #define GLIB_SYSDEF_POLLIN =$g_pollin
+ #define GLIB_SYSDEF_POLLOUT =$g_pollout
diff --git a/gtk/patches/glib-2.12.13_post.sh b/gtk/patches/glib-2.12.13_post.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c501b426de7e0906053c2f919bd4d5171965c736
--- /dev/null
+++ b/gtk/patches/glib-2.12.13_post.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+# This fix is all about compiling universal version of glib2 on powerpc.
+
+# The problem is G_ATOMIC_POWERPC is defined in config.h during the
+# configure process.  When it comes to compile the i386 version of
+# gatomic.c the powerpc assembler code is used and this is clearly
+# wrong. The result is the following error:
+# error: unknown register name 'cr0' in 'asm'
+
+# Protecting the G_ATOMIC_POWERPC with the builtin __ppc__ seemed
+# like the best thing to do. config.h should end up with the following
+# block when G_ATOMIC_POWERPC is defined...
+
+#ifdef __ppc__
+#define G_ATOMIC_POWERPC
+#endif
+
+# I've also incorporated macports' configure.patch
+# http://trac.macports.org/ticket/15816
+# N.B. this has been altered to fit this version of glib!
+
+# There's still some worrying warnings about g_atomic_int functions
+# having differing signedness...
+# Possibly due to bigendian test returning no @ configure time???
+
+BASE_DIR=$1
+PACKAGE=$2
+
+# load the global config 
+. $BASE_DIR/build_config.sh
+
+# and the functions
+. $BASE_DIR/build_functions.sh
+
+build_cd $BASE_DIR/$BUILD_DIR/$PACKAGE
+
+# copy a working copy
+cp config.h config.h.w
+# protect the G_ATOMIC_POWERPC
+sed -e 's/\(#define G_ATOMIC_POWERPC\)/#ifdef __ppc__\n\1\n#endif/' > config.h < config.h.w
+
+exit 0;