diff --git a/ANNOUNCE b/ANNOUNCE
index 8170b9d46..86be50ed2 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -94,6 +94,11 @@ Version 1.7.0alpha04 [December 21, 2012]
Added scripts/makefile.msys contributed by Christopher M. Wheeler
Made default Zlib compression settings be configurable. This adds #defines to
pnglibconf.h to control the defaults.
+ Fixed Windows build issues, enabled ARM compilation. Various warnings issued by
+ earlier versions of GCC fixed for Cygwin and Min/GW (which both use old GCCs.)
+ ARM support is enabled by default in zlib.props (unsupported by Microsoft) and
+ ARM compilation is made possible by deleting the check for x86. The test programs
+ cannot be run because they are not signed.
===========================================================================
NOTICE November 17, 2012:
diff --git a/CHANGES b/CHANGES
index 5cfcb8936..02291f822 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4379,6 +4379,11 @@ Version 1.7.0alpha04 [December 21, 2012]
Added scripts/makefile.msys contributed by Christopher M. Wheeler
Made default Zlib compression settings be configurable. This adds #defines to
pnglibconf.h to control the defaults.
+ Fixed Windows build issues, enabled ARM compilation. Various warnings issued by
+ earlier versions of GCC fixed for Cygwin and Min/GW (which both use old GCCs.)
+ ARM support is enabled by default in zlib.props (unsupported by Microsoft) and
+ ARM compilation is made possible by deleting the check for x86. The test programs
+ cannot be run because they are not signed.
===========================================================================
NOTICE November 17, 2012:
diff --git a/png.c b/png.c
index 50fb67f88..108ac697a 100644
--- a/png.c
+++ b/png.c
@@ -691,13 +691,13 @@ png_get_copyright(png_const_structrp png_ptr)
#else
# ifdef __STDC__
return PNG_STRING_NEWLINE \
- "libpng version 1.7.0alpha04 - December 19, 2012" PNG_STRING_NEWLINE \
+ "libpng version 1.7.0alpha04 - December 21, 2012" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2012 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
PNG_STRING_NEWLINE;
# else
- return "libpng version 1.7.0alpha04 - December 19, 2012\
+ return "libpng version 1.7.0alpha04 - December 21, 2012\
Copyright (c) 1998-2012 Glenn Randers-Pehrson\
Copyright (c) 1996-1997 Andreas Dilger\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.";
@@ -3589,7 +3589,7 @@ typedef struct
png_uint_32 mult;
unsigned int add;
unsigned int shift; /* input value is (i * mult + add) >> shift */
- unsigned int output; /* One of the above values */
+ int output; /* One of the above values */
int adjust; /* Divide or multiple output by 257 */
png_voidp table; /* Lookup table */
} gamma_table_data;
@@ -3679,7 +3679,7 @@ write_gamma_table(const gamma_table_data *data, png_uint_32 lo,
static void *
png_build_gamma_table(png_structrp png_ptr, png_fixed_point gamma_val,
- unsigned int output/*as above*/, unsigned int input_depth, int use_shift)
+ int output/*as above*/, int input_depth, int use_shift)
/* Build a gamma lookup table to encode input_depth bit input values.
* The table will have 2^input_depth entries plus an extra one if use_shift
* is specified. With shift the table is accessed:
diff --git a/pngconf.h b/pngconf.h
index 8c5ed5da3..3a0cfacc0 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,7 +1,7 @@
/* pngconf.h - machine configurable file for libpng
*
- * libpng version 1.7.0alpha04 - December 19, 2012
+ * libpng version 1.7.0alpha04 - December 21, 2012
*
* Copyright (c) 1998-2012 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -198,18 +198,16 @@
* ==========================
* This code is used at build time to find PNG_IMPEXP, the API settings
* and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL
- * import processing is possible. On Windows/x86 systems it also sets
+ * import processing is possible. On Windows systems it also sets
* compiler-specific macros to the values required to change the calling
* conventions of the various functions.
*/
-#if ( defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\
- defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) ) &&\
- ( defined(_X86_) || defined(_X64_) || defined(_M_IX86) ||\
- defined(_M_X64) || defined(_M_IA64) )
- /* Windows system (DOS doesn't support DLLs) running on x86/x64. Includes
- * builds under Cygwin or MinGW. Also includes Watcom builds but these need
- * special treatment because they are not compatible with GCC or Visual C
- * because of different calling conventions.
+#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\
+ defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+ /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or
+ * MinGW on any architecture currently supported by Windows. Also includes
+ * Watcom builds but these need special treatment because they are not
+ * compatible with GCC or Visual C because of different calling conventions.
*/
# if PNG_API_RULE == 2
/* If this line results in an error, either because __watcall is not
@@ -223,6 +221,9 @@
# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800))
# define PNGCAPI __cdecl
# if PNG_API_RULE == 1
+ /* If this line results in an error __stdcall is not understood and
+ * PNG_API_RULE should not have been set to '1'.
+ */
# define PNGAPI __stdcall
# endif
# else
@@ -260,7 +261,7 @@
# endif
# endif /* compiler */
-#else /* !Windows/x86 */
+#else /* !Windows */
# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
# define PNGAPI _System
# else /* !Windows/x86 && !OS/2 */
diff --git a/pngrtran.c b/pngrtran.c
index 93a6d5598..8a62fe905 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1289,14 +1289,15 @@ png_init_background_transformations(png_structrp png_ptr)
*/
if (expand && (color_type & PNG_COLOR_MASK_PALETTE) != 0)
{
- unsigned int index = png_ptr->background.index;
+ unsigned int background_index = png_ptr->background.index;
- if (index < png_ptr->num_palette && png_ptr->palette != NULL)
+ if (background_index < png_ptr->num_palette &&
+ png_ptr->palette != NULL)
{
/* In fact 'mult' is always 1 at present in this case */
- CORRECT(png_ptr->palette[index].red, red);
- CORRECT(png_ptr->palette[index].green, green);
- CORRECT(png_ptr->palette[index].blue, blue);
+ CORRECT(png_ptr->palette[background_index].red, red);
+ CORRECT(png_ptr->palette[background_index].green, green);
+ CORRECT(png_ptr->palette[background_index].blue, blue);
}
else
diff --git a/pngset.c b/pngset.c
index c0c2d9664..36f1d6604 100644
--- a/pngset.c
+++ b/pngset.c
@@ -959,7 +959,8 @@ png_set_tRNS(png_structrp png_ptr, png_inforp info_ptr,
PNG_MAX_PALETTE_LENGTH));
info_ptr->free_me |= PNG_FREE_TRNS;
- memcpy(info_ptr->trans_alpha, trans_alpha, num_trans);
+ memcpy(info_ptr->trans_alpha, trans_alpha,
+ (unsigned)/*SAFE*/num_trans);
info_ptr->valid |= PNG_INFO_tRNS;
info_ptr->num_trans = (png_uint_16)num_trans; /* SAFE */
}
diff --git a/pngstruct.h b/pngstruct.h
index 8822ec575..0eee78572 100644
--- a/pngstruct.h
+++ b/pngstruct.h
@@ -148,8 +148,16 @@ struct png_struct_def
* (char), (short), (int) and pointer types are kept separate, however
* associated members under the control of the same #define are still
* together.
- *
- * First the frequently accessed fields. Many processors perform arithmetic
+ */
+#ifdef PNG_SETJMP_SUPPORTED
+ /* jmp_buf can have very high alignment requirements on some systems, so put
+ * it first (the other setjmp members are later as they are infrequently
+ * accesed.)
+ */
+ jmp_buf jmp_buf_local;
+#endif
+
+ /* Next the frequently accessed fields. Many processors perform arithmetic
* in the address pipeline, but frequently the amount of addition or
* subtraction is limited. By putting these fields at the head of png_struct
* the hope is that such processors will generate code that is both smaller
@@ -198,10 +206,6 @@ struct png_struct_def
/* ERROR HANDLING */
#ifdef PNG_SETJMP_SUPPORTED
- /* jmp_buf can have very high alignment requirements on some systems, so put
- * it first.
- */
- jmp_buf jmp_buf_local;
jmp_buf *jmp_buf_ptr; /* passed to longjmp_fn */
png_longjmp_ptr longjmp_fn; /* setjmp non-local goto function. */
size_t jmp_buf_size; /* size of *jmp_buf_ptr, if allocated */
diff --git a/pngwrite.c b/pngwrite.c
index 9c09dd439..77861b29e 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -452,7 +452,6 @@ png_write_end(png_structrp png_ptr, png_inforp info_ptr)
}
#ifdef PNG_CONVERT_tIME_SUPPORTED
-/* "tm" structure is not supported on WindowsCE */
void PNGAPI
png_convert_from_struct_tm(png_timep ptime, PNG_CONST struct tm * ttime)
{
diff --git a/projects/vstudio/libpng/libpng.vcxproj b/projects/vstudio/libpng/libpng.vcxproj
index ffb03e02e..5b8f0bb00 100644
--- a/projects/vstudio/libpng/libpng.vcxproj
+++ b/projects/vstudio/libpng/libpng.vcxproj
@@ -23,8 +23,8 @@
Win32Projlibpng
-
+ DynamicLibraryMultiByte
diff --git a/projects/vstudio/pnglibconf/pnglibconf.vcxproj b/projects/vstudio/pnglibconf/pnglibconf.vcxproj
index 7c691c32d..e2a232cb6 100644
--- a/projects/vstudio/pnglibconf/pnglibconf.vcxproj
+++ b/projects/vstudio/pnglibconf/pnglibconf.vcxproj
@@ -17,6 +17,7 @@
trueMultiByte
+
diff --git a/projects/vstudio/pngstest/pngstest.vcxproj b/projects/vstudio/pngstest/pngstest.vcxproj
index fc2e9d5d8..b3bb27b3e 100644
--- a/projects/vstudio/pngstest/pngstest.vcxproj
+++ b/projects/vstudio/pngstest/pngstest.vcxproj
@@ -23,8 +23,8 @@
Win32Projpngstest
-
+ ApplicationUnicode
@@ -96,7 +96,7 @@
Consoletrue
- libpng16.lib;zlib.lib
+ libpng17.lib$(OutDir)
@@ -129,7 +129,7 @@
Consoletrue
- libpng16.lib;zlib.lib
+ libpng17.lib;zlib.lib$(OutDir)
@@ -163,7 +163,7 @@
truetruetrue
- libpng16.lib;zlib.lib
+ libpng17.lib$(OutDir)UseLinkTimeCodeGeneration
@@ -199,7 +199,7 @@
truetruetrue
- libpng16.lib;zlib.lib
+ libpng17.lib;zlib.lib$(OutDir)UseLinkTimeCodeGeneration
diff --git a/projects/vstudio/pngtest/pngtest.vcxproj b/projects/vstudio/pngtest/pngtest.vcxproj
index e13770c03..536e39a08 100644
--- a/projects/vstudio/pngtest/pngtest.vcxproj
+++ b/projects/vstudio/pngtest/pngtest.vcxproj
@@ -23,8 +23,8 @@
Win32Projpngtest
-
+ ApplicationUnicode
diff --git a/projects/vstudio/pngunknown/pngunknown.vcxproj b/projects/vstudio/pngunknown/pngunknown.vcxproj
index 4eacf7850..2e2a78d28 100644
--- a/projects/vstudio/pngunknown/pngunknown.vcxproj
+++ b/projects/vstudio/pngunknown/pngunknown.vcxproj
@@ -23,8 +23,8 @@
Win32Projpngunknown
-
+ ApplicationUnicode
@@ -96,7 +96,7 @@
Consoletrue
- libpng17.lib;zlib.lib
+ libpng17.lib$(OutDir)
@@ -163,7 +163,7 @@
truetruetrue
- libpng17.lib;zlib.lib
+ libpng17.lib$(OutDir)UseLinkTimeCodeGeneration
diff --git a/projects/vstudio/pngvalid/pngvalid.vcxproj b/projects/vstudio/pngvalid/pngvalid.vcxproj
index 9a962c9a9..a53baf833 100644
--- a/projects/vstudio/pngvalid/pngvalid.vcxproj
+++ b/projects/vstudio/pngvalid/pngvalid.vcxproj
@@ -23,8 +23,8 @@
Win32Projpngvalid
-
+ ApplicationUnicode
diff --git a/projects/vstudio/readme.txt b/projects/vstudio/readme.txt
index b08e411b4..0871f5bca 100644
--- a/projects/vstudio/readme.txt
+++ b/projects/vstudio/readme.txt
@@ -1,7 +1,7 @@
VisualStudio instructions
-libpng version 1.7.0alpha04 - December 19, 2012
+libpng version 1.7.0alpha04 - December 21, 2012
Copyright (c) 1998-2010 Glenn Randers-Pehrson
diff --git a/projects/vstudio/zlib.props b/projects/vstudio/zlib.props
index 8932f698d..553222485 100644
--- a/projects/vstudio/zlib.props
+++ b/projects/vstudio/zlib.props
@@ -2,7 +2,7 @@
..\..\..\..\zlib-1.2.5
+
+
+ true
diff --git a/projects/vstudio/zlib/zlib.vcxproj b/projects/vstudio/zlib/zlib.vcxproj
index 8e271988f..6e5b94a61 100644
--- a/projects/vstudio/zlib/zlib.vcxproj
+++ b/projects/vstudio/zlib/zlib.vcxproj
@@ -36,8 +36,8 @@
Win32Projzlib
-
+ StaticLibrary