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 /*