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 @@ Win32Proj libpng - + DynamicLibrary MultiByte 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 @@ true MultiByte + 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 @@ Win32Proj pngstest - + Application Unicode @@ -96,7 +96,7 @@ Console true - libpng16.lib;zlib.lib + libpng17.lib $(OutDir) @@ -129,7 +129,7 @@ Console true - libpng16.lib;zlib.lib + libpng17.lib;zlib.lib $(OutDir) @@ -163,7 +163,7 @@ true true true - libpng16.lib;zlib.lib + libpng17.lib $(OutDir) UseLinkTimeCodeGeneration @@ -199,7 +199,7 @@ true true true - 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 @@ Win32Proj pngtest - + Application Unicode 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 @@ Win32Proj pngunknown - + Application Unicode @@ -96,7 +96,7 @@ Console true - libpng17.lib;zlib.lib + libpng17.lib $(OutDir) @@ -163,7 +163,7 @@ true true true - 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 @@ Win32Proj pngvalid - + Application Unicode 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 @@ Win32Proj zlib - + StaticLibrary