+diff -Naur libpng-1.2.29.orig/configure.ac libpng-1.2.29/configure.ac
+--- libpng-1.2.29.orig/configure.ac 2008-05-08 07:58:11.000000000 -0400
++++ libpng-1.2.29/configure.ac 2008-05-31 20:21:12.000000000 -0400
+@@ -63,7 +63,8 @@
+ AC_MSG_CHECKING(
+ [if assembler code in pnggccrd.c can be compiled without PNG_NO_MMX_CODE])
+ AC_TRY_COMPILE(
+- [#include "$srcdir/pnggccrd.c"],
++ [#define PNG_CONFIGURE_LIBPNG
++ #include "$srcdir/pnggccrd.c"],
+ [return 0;],
+ AC_MSG_RESULT(yes)
+ LIBPNG_NO_MMX="",
+diff -Naur libpng-1.2.29.orig/pngconf.h libpng-1.2.29/pngconf.h
+--- libpng-1.2.29.orig/pngconf.h 2008-05-08 07:58:03.000000000 -0400
++++ libpng-1.2.29/pngconf.h 2008-05-31 20:21:12.000000000 -0400
+@@ -35,6 +35,25 @@
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
++#else
++/* pngconf.h is part of the exported API. When a libpng-using application
++ includes us, PNG_CONFIGURE_LIBPNG is of course not defined as we do not have
++ libpng's config.h available in this case. This means that we do not have the
++ defines added to config.h and the commandline by libpng's ./configure .
++
++ For all defines from config.h not having them set is not a problem, however
++ ./configure also adds -DPNG_NO_ASSEMBLER_CODE to the CFLAGS when compiling
++ on a platform on which the MMX and SSE asm code in libpng is not supported.
++
++ We do need this define as this define is used to determine whether or not
++ to define PNG_ASSEMBLER_CODE_SUPPORTED and other assembler related defines
++ and prototypes. PNG_ASSEMBLER_CODE_SUPPORTED in turn is used by applications
++ (ImageMagick for example) to determine whether or not they can use the asm
++ functions. Thus we need to define PNG_NO_ASSEMBLER_CODE here on platforms
++ on which the MMX and SSE asm code in libpng is not supported: */
++#ifndef __i386__ /* change this if MMX/SSE become supported on x86_64! */
++#define PNG_NO_ASSEMBLER_CODE
++#endif
+ #endif
+
+ /*