diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/README.txt | 12 | ||||
-rwxr-xr-x | scripts/checksym.awk | 10 | ||||
-rw-r--r-- | scripts/def.dfn | 37 | ||||
-rw-r--r-- | scripts/dfn.awk | 203 | ||||
-rw-r--r-- | scripts/intprefix.dfn | 4 | ||||
-rwxr-xr-x | scripts/libpng-config-head.in | 2 | ||||
-rw-r--r-- | scripts/libpng.pc.in | 2 | ||||
-rw-r--r-- | scripts/makefile.cegcc | 2 | ||||
-rw-r--r-- | scripts/makefile.freebsd | 13 | ||||
-rw-r--r-- | scripts/makefile.linux | 2 | ||||
-rw-r--r-- | scripts/makefile.msys | 4 | ||||
-rw-r--r-- | scripts/makefile.ne12bsd | 2 | ||||
-rw-r--r-- | scripts/makefile.netbsd | 2 | ||||
-rw-r--r-- | scripts/makefile.openbsd | 2 | ||||
-rw-r--r-- | scripts/makefile.std | 35 | ||||
-rwxr-xr-x | scripts/options.awk | 374 | ||||
-rwxr-xr-x[-rw-r--r--] | scripts/pnglibconf.dfa | 110 | ||||
-rw-r--r-- | scripts/pnglibconf.h.prebuilt | 163 | ||||
-rwxr-xr-x | scripts/pnglibconf.mak | 41 | ||||
-rw-r--r-- | scripts/prefix.dfn | 6 | ||||
-rw-r--r-- | scripts/sym.dfn | 2 | ||||
-rw-r--r-- | scripts/symbols.def | 3 | ||||
-rw-r--r-- | scripts/symbols.dfn | 9 | ||||
-rw-r--r-- | scripts/vers.dfn | 15 |
24 files changed, 706 insertions, 349 deletions
diff --git a/scripts/README.txt b/scripts/README.txt index 907292fed..27b5e52f8 100644 --- a/scripts/README.txt +++ b/scripts/README.txt @@ -1,9 +1,9 @@ -Makefiles for libpng version 1.6.0 - February 14, 2013 +Makefiles for libpng version 1.6.1 - March 28, 2013 pnglibconf.h.prebuilt => Stores configuration settings makefile.linux => Linux/ELF makefile - (gcc, creates libpng16.so.16.1.6.0) + (gcc, creates libpng16.so.16.1.6.1) makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.knr => Archaic UNIX Makefile that converts files with ansi2knr (Requires ansi2knr.c from @@ -20,7 +20,7 @@ pnglibconf.h.prebuilt => Stores configuration settings makefile.dec => DEC Alpha UNIX makefile makefile.dj2 => DJGPP 2 makefile makefile.elf => Linux/ELF makefile symbol versioning, - (gcc, creates libpng16.so.16.1.6.0) + (gcc, creates libpng16.so.16.1.6.1) makefile.freebsd => FreeBSD makefile makefile.gcc => Generic gcc makefile makefile.hpgcc => HPUX makefile using gcc @@ -35,12 +35,12 @@ pnglibconf.h.prebuilt => Stores configuration settings makefile.os2 => OS/2 Makefile (gcc and emx, requires libpng.def) makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc makefile.sggcc => Silicon Graphics (gcc, - creates libpng16.so.16.1.6.0) + creates libpng16.so.16.1.6.1) makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) makefile.solaris => Solaris 2.X makefile (gcc, - creates libpng16.so.16.1.6.0) + creates libpng16.so.16.1.6.1) makefile.so9 => Solaris 9 makefile (gcc, - creates libpng16.so.16.1.6.0) + creates libpng16.so.16.1.6.1) makefile.std => Generic UNIX makefile (cc, creates static libpng.a) makefile.sunos => Sun makefile makefile.32sunu => Sun Ultra 32-bit makefile diff --git a/scripts/checksym.awk b/scripts/checksym.awk index 6857dff1c..fe3af55e0 100755 --- a/scripts/checksym.awk +++ b/scripts/checksym.awk @@ -113,6 +113,16 @@ END{ err = 1 } unexported=0 + # Add a standard header to symbols.new: + print ";Version INSERT-VERSION-HERE" >of + print ";--------------------------------------------------------------" >of + print "; LIBPNG symbol list as a Win32 DEF file" >of + print "; Contains all the symbols that can be exported from libpng" >of + print ";--------------------------------------------------------------" >of + print "LIBRARY" >of + print "" >of + print "EXPORTS" >of + for (o=1; o<=lasto; ++o) { if (symbol[o] == "" && removed[o] == "") { if (unexported == 0) unexported = o diff --git a/scripts/def.dfn b/scripts/def.dfn index cac3cd856..5e1dc6869 100644 --- a/scripts/def.dfn +++ b/scripts/def.dfn @@ -8,31 +8,22 @@ * and license in png.h */ -/* These macros exist to make the header and trailer shorter below: */ -#define S PNG_DEFN_MAGIC -#define E PNG_DEFN_END - /* Write the export file header: */ -S-;---------------------------------------------------------------E -S-; LIBPNG module definition file for OS/2-E -S-;---------------------------------------------------------------E -S--E -S-; If you give the library an explicit name one or other files-E -S-; may need modifying to support the new name on one or more-E -S-; systems.-E -S-LIBRARY-E -S-OS2 DESCRIPTION "PNG image compression library"-E -S-OS2 CODE PRELOAD MOVEABLE DISCARDABLE-E -S--E -S-EXPORTS-E -S-;Version 1.6.0-E +PNG_DFN ";--------------------------------------------------------------" +PNG_DFN "; LIBPNG module definition file for OS/2" +PNG_DFN ";--------------------------------------------------------------" +PNG_DFN "" +PNG_DFN "; If you give the library an explicit name one or other files" +PNG_DFN "; may need modifying to support the new name on one or more" +PNG_DFN "; systems." +PNG_DFN "LIBRARY" +PNG_DFN "OS2 DESCRIPTION "PNG image compression library"" +PNG_DFN "OS2 CODE PRELOAD MOVEABLE DISCARDABLE" +PNG_DFN "" +PNG_DFN "EXPORTS" +PNG_DFN ";Version 1.6.1" -/* NOTE: PNG_JOIN is interpreted by the calling script as a signal to - * join the two things on either side, so we can do symbol - * substitution within the name, regular C ## joins the pp-tokens, - * not their final values. - */ #define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_DEFN_MAGIC- SYMBOL_PREFIX PNG_JOIN name-PNG_DEFN_END + PNG_DFN "@" SYMBOL_PREFIX "@@" name "@" #include "../png.h" diff --git a/scripts/dfn.awk b/scripts/dfn.awk new file mode 100644 index 000000000..89b92d5d9 --- /dev/null +++ b/scripts/dfn.awk @@ -0,0 +1,203 @@ +#!/bin/awk -f +# scripts/dfn.awk - process a .dfn file +# +# last changed in libpng version 1.5.14 - February 4, 2013 +# +# Copyright (c) 2013-2013 Glenn Randers-Pehrson +# +# This code is released under the libpng license. +# For conditions of distribution and use, see the disclaimer +# and license in png.h + +# The output of this script is written to the file given by +# the variable 'out', which should be set on the command line. +# Error messages are printed to stdout and if any are printed +# the script will exit with error code 1. + +BEGIN{ + out="/dev/null" # as a flag + out_count=0 # count of output lines + err=0 # set if an error occured + sort=0 # sort the output + array[""]="" +} + +# The output file must be specified before any input: +NR==1 && out == "/dev/null" { + print "out=output.file must be given on the command line" + # but continue without setting the error code, this allows the + # script to be checked easily +} + +# Output can be sorted; two lines are recognized +$1 == "PNG_DFN_START_SORT"{ + sort=0+$2 + next +} + +$1 ~ /^PNG_DFN_END_SORT/{ + # Do a very simple, slow, sort; notice that blank lines won't be + # output by this + for (entry in array) { + while (array[entry] != "") { + key = entry + value = array[key] + array[key] = "" + + for (alt in array) { + if (array[alt] != "" && alt < key) { + array[key] = value + value = array[alt] + key = alt + array[alt] = "" + } + } + + print value >out + } + } + sort=0 + next +} + +/^[^"]*PNG_DFN *".*"[^"]*$/{ + # A definition line, apparently correctly formated, extract the + # definition then replace any doubled "" that remain with a single + # double quote. Notice that the original doubled double quotes + # may have been split by tokenization + # + # Sometimes GCC splits the PNG_DFN lines, we know this has happened + # if the quotes aren't closed and must read another line. In this + # case it is essential to reject lines that start '#' because those + # are introduced #line directives. + orig=$0 + line=$0 + lineno=FNR + if (lineno == "") lineno=NR + + if (sub(/^[^"]*PNG_DFN *"/,"",line) != 1) { + print "line", lineno ": processing failed:" + print orig + err=1 + next + } else { + ++out_count + } + + # Now examine quotes within the value: + # + # @" - delete this and any following spaces + # "@ - delete this and any preceding spaces + # @' - replace this by a double quote + # + # This allows macro substitution by the C compiler thus: + # + # #define first_name John + # #define last_name Smith + # + # PNG_DFN"#define name @'@" first_name "@ @" last_name "@@'" + # + # Might get C preprocessed to: + # + # PNG_DFN "#define foo @'@" John "@ @" Smith "@@'" + # + # Which this script reduces to: + # + # #define name "John Smith" + # + while (1) { + # While there is an @" remove it and the next "@ + if (line ~ /@"/) { + if (line ~ /@".*"@/) { + # Do this special case first to avoid swallowing extra spaces + # before or after the @ stuff: + if (!sub(/@" *"@/, "", line)) { + # Ok, do it in pieces - there has to be a non-space between the + # two. NOTE: really weird things happen if a leading @" is + # lost - the code will error out below (I believe). + if (!sub(/@" */, "", line) || !sub(/ *"@/, "", line)) { + print "line", lineno, ": internal error:", orig + exit 1 + } + } + } + + # There is no matching "@. Assume a split line + else while (1) { + if (getline nextline) { + # If the line starts with '#' it is a preprocesor line directive + # from cc -E, skip it: + if (nextline !~ /^#/) { + line = line " " nextline + break + } + } else { + # This is end-of-input - probably a missig "@ on the first line: + print "line", lineno ": unbalanced @\" ... \"@ pair" + err=1 + next + } + } + + # Keep going until all the @" have gone + continue + } + + # Attempt to remove a trailing " (not preceded by '@') - if this can + # be done stop now, if not assume a split line again + if (sub(/"[^"]*$/, "", line)) + break + + # Read another line + while (1) { + if (getline nextline) { + if (nextline !~ /^#/) { + line = line " " nextline + # Go back to stripping @" "@ pairs + break + } + } else { + print "line", lineno ": unterminated PNG_DFN string" + err=1 + next + } + } + } + + # Put any needed double quotes in (at the end, because these would otherwise + # interfere with the processing above.) + gsub(/@'/,"\"", line) + + # Remove any trailing spaces (not really required, but for + # editorial consistency + sub(/ *$/, "", line) + + # Remove trailing CR + sub(/
$/, "", line) + + if (sort) { + if (split(line, parts) < sort) { + print "line", lineno ": missing sort field:", line + err=1 + } else + array[parts[sort]] = line + } + + else + print line >out + next +} + +/PNG_DFN/{ + print "line", NR, "incorrectly formated PNG_DFN line:" + print $0 + err = 1 +} + +END{ + if (out_count > 0 || err > 0) + exit err + + print "no definition lines found" + exit 1 +} diff --git a/scripts/intprefix.dfn b/scripts/intprefix.dfn index d48d54060..790bdfee9 100644 --- a/scripts/intprefix.dfn +++ b/scripts/intprefix.dfn @@ -10,10 +10,10 @@ */ #define PNG_INTERNAL_DATA(type, name, array)\ - PNG_DEFN_MAGIC-name-PNG_DEFN_END + PNG_DFN "@" name "@" #define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\ - PNG_DEFN_MAGIC-name-PNG_DEFN_END + PNG_DFN "@" name "@" #define PNGPREFIX_H /* self generation */ #include "../pngpriv.h" diff --git a/scripts/libpng-config-head.in b/scripts/libpng-config-head.in index 02d74009b..9803d2e68 100755 --- a/scripts/libpng-config-head.in +++ b/scripts/libpng-config-head.in @@ -11,7 +11,7 @@ # Modeled after libxml-config. -version=1.6.0 +version=1.6.1 prefix="" libdir="" libs="" diff --git a/scripts/libpng.pc.in b/scripts/libpng.pc.in index 367b38c9f..9bdfd73f6 100644 --- a/scripts/libpng.pc.in +++ b/scripts/libpng.pc.in @@ -5,6 +5,6 @@ includedir=@includedir@/libpng16 Name: libpng Description: Loads and saves PNG files -Version: 1.6.0 +Version: 1.6.1 Libs: -L${libdir} -lpng16 Cflags: -I${includedir} diff --git a/scripts/makefile.cegcc b/scripts/makefile.cegcc index 820518aec..3912afe58 100644 --- a/scripts/makefile.cegcc +++ b/scripts/makefile.cegcc @@ -23,7 +23,7 @@ VERMAJ = 1 VERMIN = 6 -VERMIC = 0 +VERMIC = 1 VER = $(VERMAJ).$(VERMIN).$(VERMIC) NAME = libpng PACKAGE = $(NAME)-$(VER) diff --git a/scripts/makefile.freebsd b/scripts/makefile.freebsd index bc033934b..0ddf4ae4a 100644 --- a/scripts/makefile.freebsd +++ b/scripts/makefile.freebsd @@ -26,19 +26,24 @@ SYMLINKS= libpng/png.h ${INCSDIR}/../png.h \ libpng/pngconf.h ${INCSDIR}/../pngconf.h \ libpng/pnglibconf.h ${INCSDIR}/../pnglibconf.h -LDADD+= -lm -lz -#LDADD+= -lm -lz -lssp_nonshared # for OSVERSION < 800000 ? +# where make install finds libz.a and zlib.h +ZLIBLIB= /usr/lib +ZLIBINC= /usr/include + +LDADD+= -lm -lz +#LDADD+= -lm -lz -lssp_nonshared # for OSVERSION < 800000 ? DPADD+= ${LIBM} ${LIBZ} -CFLAGS+= -I. +CFLAGS+= -I. -I${ZLIBINC} SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ pngwtran.c pngmem.c pngerror.c pngpread.c pngtest: pngtest.o libpng.a - ${CC} ${CFLAGS} -L. -static -o pngtest pngtest.o -lpng -lz -lm + ${CC} ${CFLAGS} -L. -static -o pngtest pngtest.o -L${ZLIBLIB} \ + -lpng ${LDADD} CLEANFILES= pngtest pngtest.o pngout.png diff --git a/scripts/makefile.linux b/scripts/makefile.linux index 6e95c878c..4e94ce909 100644 --- a/scripts/makefile.linux +++ b/scripts/makefile.linux @@ -10,7 +10,7 @@ # Library name: LIBNAME = libpng16 PNGMAJ = 16 -RELEASE = 0 +RELEASE = 1 # Shared library names: LIBSO=$(LIBNAME).so diff --git a/scripts/makefile.msys b/scripts/makefile.msys index 074fb5811..342c91242 100644 --- a/scripts/makefile.msys +++ b/scripts/makefile.msys @@ -18,7 +18,7 @@ exec_prefix=$(prefix) # Library name: LIBNAME = libpng16 PNGMAJ = 16 -RELEASE = 0 +RELEASE = 1 # Shared library names: LIBSO=$(LIBNAME).dll @@ -43,7 +43,7 @@ LN_SF=ln -sf #ARCH = -march=pentium3 #ARCH = -march=i686 -ARCH = +ARCH = CDEBUG = -g -DPNG_DEBUG=5 LDDEBUG = CRELEASE = -O2 diff --git a/scripts/makefile.ne12bsd b/scripts/makefile.ne12bsd index a20bc4e6e..2313dd333 100644 --- a/scripts/makefile.ne12bsd +++ b/scripts/makefile.ne12bsd @@ -17,7 +17,7 @@ INCSDIR=${LOCALBASE}/include/libpng16 LIB= png16 SHLIB_MAJOR= 0 -SHLIB_MINOR= 1.6.0 +SHLIB_MINOR= 1.6.1 SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ pngwtran.c pngmem.c pngerror.c pngpread.c diff --git a/scripts/makefile.netbsd b/scripts/makefile.netbsd index 719e8c347..41a2e9d0b 100644 --- a/scripts/makefile.netbsd +++ b/scripts/makefile.netbsd @@ -17,7 +17,7 @@ INCSDIR=${LOCALBASE}/include LIB= png SHLIB_MAJOR= 16 -SHLIB_MINOR= 1.6.0 +SHLIB_MINOR= 1.6.1 SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ pngwtran.c pngmem.c pngerror.c pngpread.c diff --git a/scripts/makefile.openbsd b/scripts/makefile.openbsd index 447b38bd4..2d633743f 100644 --- a/scripts/makefile.openbsd +++ b/scripts/makefile.openbsd @@ -11,7 +11,7 @@ LIBDIR= ${PREFIX}/lib MANDIR= ${PREFIX}/man/cat SHLIB_MAJOR= 16 -SHLIB_MINOR= 1.6.0 +SHLIB_MINOR= 1.6.1 LIB= png SRCS= png.c pngerror.c pngget.c pngmem.c pngpread.c \ diff --git a/scripts/makefile.std b/scripts/makefile.std index af7032800..419eeedf2 100644 --- a/scripts/makefile.std +++ b/scripts/makefile.std @@ -39,6 +39,7 @@ CPP = $(CC) -E ECHO = echo DFNFLAGS = # DFNFLAGS contains -D options to use in the libpng build +DFA_EXTRA = # extra files that can be used to control configuration CFLAGS=-I$(ZLIBINC) -O # -g -DPNG_DEBUG=5 LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm @@ -50,23 +51,23 @@ all: libpng.a pngtest # The standard pnglibconf.h exists as scripts/pnglibconf.h.prebuilt, # copy this if the following doesn't work. -pnglibconf.dfn: scripts/pnglibconf.dfa scripts/options.awk pngconf.h - $(RM_F) $@ dfn?.out - $(AWK) -f scripts/options.awk out=dfn1.out version=search pngconf.h\ - scripts/pnglibconf.dfa $(DFA_XTRA) 1>&2 - $(AWK) -f scripts/options.awk out=dfn2.out dfn1.out 1>&2 - cp dfn2.out $@ - $(RM_F) dfn?.out - pnglibconf.h: pnglibconf.dfn - $(RM_F) $@ dfn.c dfn?.out - $(ECHO) '#include "pnglibconf.dfn"' >dfn.c - $(CPP) $(DFNFLAGS) dfn.c >dfn1.out - $(SED) -n -e 's|^.*PNG_DEFN_MAGIC *-\(.*\)- *PNG_DEFN_END.*$$|\1|p'\ - dfn1.out >dfn2.out - $(SED) -e 's| *PNG_JOIN *||g' -e 's| *$$||' dfn2.out >dfn3.out - cp dfn3.out $@ - $(RM_F) dfn.c dfn?.out + $(RM_F) $@ pnglibconf.c pnglibconf.out pnglibconf.tmp + $(ECHO) '#include "pnglibconf.dfn"' >pnglibconf.c + $(ECHO) "If '$(CC) -E' crashes try /lib/cpp (e.g. CPP='/lib/cpp')" >&2 + $(CPP) $(DFNFLAGS) pnglibconf.c >pnglibconf.out + $(AWK) -f "scripts/dfn.awk" out="pnglibconf.tmp" pnglibconf.out 1>&2 + mv pnglibconf.tmp $@ + +pnglibconf.dfn: scripts/pnglibconf.dfa scripts/options.awk pngconf.h pngusr.dfa $(DFA_XTRA) + $(RM_F) $@ pnglibconf.pre pnglibconf.tmp + $(ECHO) "Calling $(AWK) from scripts/pnglibconf.mak" >&2 + $(ECHO) "If 'awk' crashes try a better awk (e.g. AWK='nawk')" >&2 + $(AWK) -f scripts/options.awk out="pnglibconf.pre"\ + version=search pngconf.h scripts/pnglibconf.dfa\ + pngusr.dfa $(DFA_XTRA) 1>&2 + $(AWK) -f scripts/options.awk out="pnglibconf.tmp" pnglibconf.pre 1>&2 + mv pnglibconf.tmp $@ libpng.a: $(OBJS) $(AR_RC) $@ $(OBJS) @@ -96,7 +97,7 @@ install: libpng.a pnglibconf.h chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a clean: - $(RM_F) *.o libpng.a pngtest pngout.png pnglibconf.* dfn.c dfn?.out + $(RM_F) *.o libpng.a pngtest pngout.png pnglibconf.* DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO writelock: diff --git a/scripts/options.awk b/scripts/options.awk index cb8cd1845..c3a850173 100755 --- a/scripts/options.awk +++ b/scripts/options.awk @@ -30,22 +30,33 @@ # are copied to the preprocessed file). BEGIN{ - out="/dev/null" # intermediate, preprocessed, file + out="" # intermediate, preprocessed, file pre=-1 # preprocess (first line) version="libpng version unknown" # version information version_file="" # where to find the version err=0 # in-line exit sets this - start="PNG_DEFN_MAGIC-" # Arbitrary start - end="-PNG_DEFN_END" # Arbitrary end - ct="PNG_JOIN" # Join two tokens - cx= "/" ct "*" # Open C comment for output file - comment=start cx # Comment start + # The following definitions prevent the C preprocessor noticing the lines + # that will be in the final output file. Some C preprocessors tokenise + # the lines, for example by inserting spaces around operators, and all + # C preprocessors notice lines that start with '#', most remove comments. + # The technique adopted here is to make the final output lines into + # C strings (enclosed in double quotes), preceeded by PNG_DFN. As a + # consequence the output cannot contain a 'raw' double quote - instead put + # @' in, this will be replaced by a single " afterward. See the parser + # script dfn.awk for more capabilities (not required here). Note that if + # you need a " in a 'setting' in pnglibconf.dfa it must also be @'! + dq="@'" # For a single double quote + start=" PNG_DFN \"" # Start stuff to output (can't contain a "!) + end="\" " # End stuff to output + subs="@\" " # Substitute start (substitute a C macro) + sube=" \"@" # Substitute end + comment=start "/*" # Comment start cend="*/" end # Comment end - def=start "#define PNG_" ct # Arbitrary define - sup=ct "_SUPPORTED" end # end supported option - und=comment "#undef PNG_" ct # Unsupported option - une=ct "_SUPPORTED" cend # end unsupported option - error=start "ERROR:" # error message + def=start "#define PNG_" # Arbitrary define + sup="_SUPPORTED" end # end supported option + und=comment "#undef PNG_" # Unsupported option + une="_SUPPORTED" cend # end unsupported option + error=start "ERROR:" # error message, terminate with 'end' # Variables deb=0 # debug - set on command line @@ -53,11 +64,15 @@ BEGIN{ logunsupported=0 # write unsupported options too # Precreate arrays + # for each option: option[""] = "" # list of all options: default enabled/disabled done[""] = 1 # marks option as having been output requires[""] = "" # requires by option iffs[""] = "" # if by option enabledby[""] = "" # options that enable it by option + sets[""] = "" # settings set by each option + setval[""] = "" # value to set (indexed: 'option sets[option]') + # for each setting: setting[""] = "" # requires by setting defaults[""] = "" # used for a defaulted value doneset[""] = 1 # marks setting as having been output @@ -68,7 +83,7 @@ BEGIN{ } # The output file must be specified before any input: -out == "/dev/null" { +out == "" { print "out=output.file must be given on the command line" err = 1 exit 1 @@ -102,7 +117,6 @@ pre && version == "search" && version_file != FILENAME{ pre && version == "search" && $0 ~ /^ \* libpng version/{ version = substr($0, 4) - gsub(/\./, " PNG_JOIN . PNG_JOIN", version) print "version =", version >out next } @@ -190,7 +204,7 @@ $1 == "com"{ if (NF > 1) { # sub(/^[ ]*com[ ]*/, "") $1 = "" - print comment, $0, cend >out + print comment $0, cend >out } else print start end >out next @@ -227,7 +241,9 @@ $1 == "file" && NF >= 2{ next } -# option NAME ( (requires|enables|if) NAME* | on | off | disabled )* +# option NAME ( (requires|enables|if) NAME* | on | off | disabled | +# sets SETTING VALUE+ )* +# # Declares an option 'NAME' and describes its default setting (disabled) # and its relationship to other options. The option is disabled # unless *all* the options listed after 'requires' are set and at @@ -242,46 +258,77 @@ $1 == "file" && NF >= 2{ # be later) entry may turn an option on or off explicitly. $1 == "option" && NF >= 2{ - onoff = option[$2] # records current (and the default is "", enabled) + opt = $2 + sub(/,$/,"",opt) + onoff = option[opt] # records current (and the default is "", enabled) key = "" - for (i=3; i<=NF; ++i) { - if ($(i) == "on" || $(i) == "off" || $(i) == "disabled") { - key = "" - if (onoff != $(i)) { - # on or off can zap disabled or enabled: - if (onoff == "" || (onoff == "disabled" || onoff == "enabled") && ($(i) == "on" || $(i) == "off")) { - # It's easy to mis-spell the option when turning it - # on or off, so warn about it here: - if (onoff == "" && ($(i) == "on" || $(i) == "off")) { - print $2 ": ERROR: turning unrecognized option", $(i) - # For the moment error out - it is safer - err = 1 # prevent END{} running - exit 1 + istart = 3 + do { + if (istart == 1) { # continuation line + val = getline + + if (val != 1) { # error reading it + if (val == 0) + print "option", opt ": ERROR: missing contination line" + else + print "option", opt ": ERROR: error reading continuation line" + + # This is a hard error + err = 1 # prevent END{} running + exit 1 + } + } + + for (i=istart; i<=NF; ++i) { + val=$(i) + sub(/,$/,"",val) + if (val == "on" || val == "off" || val == "disabled") { + key = "" + if (onoff != val) { + # on or off can zap disabled or enabled: + if (onoff == "" || (onoff == "disabled" || onoff == "enabled") && + (val == "on" || val == "off")) { + # It's easy to mis-spell the option when turning it + # on or off, so warn about it here: + if (onoff == "" && (val == "on" || val == "off")) { + print "option", opt ": ERROR: turning unrecognized option", val + # For the moment error out - it is safer + err = 1 # prevent END{} running + exit 1 + } + onoff = val + } else { + # Print a message, otherwise the error + # below is incomprehensible + print "option", opt ": currently", onoff ": attempt to turn", val + break } - onoff = $(i) - } else { - # Print a message, otherwise the error - # below is incomprehensible - print $2 ": currently", onoff ": attempt to turn", $(i) - break } - } - } else if ($(i) == "requires" || $(i) == "if" || $(i) == "enables") { - key = $(i) - } else if (key == "requires") { - requires[$2] = requires[$2] " " $(i) - } else if (key == "if") { - iffs[$2] = iffs[$2] " " $(i) - } else if (key == "enables") { - enabledby[$(i)] = enabledby[$(i)] " " $2 - } else - break # bad line format - } + } else if (val == "requires" || val == "if" || val == "enables" || val =="sets") { + key = val + } else if (key == "requires") { + requires[opt] = requires[opt] " " val + } else if (key == "if") { + iffs[opt] = iffs[opt] " " val + } else if (key == "enables") { + enabledby[val] = enabledby[val] " " opt + } else if (key == "sets") { + sets[opt] = sets[opt] " " val + key = "setval" + set = val + } else if (key == "setval") { + setval[opt " " set] = setval[opt " " set] " " val + } else + break # bad line format + } + + istart = 1 + } while (i > NF && $0 ~ /,$/) if (i > NF) { # Set the option, defaulting to 'enabled' if (onoff == "") onoff = "enabled" - option[$2] = onoff + option[opt] = onoff next } # Else fall through to the error handler @@ -301,41 +348,62 @@ $1 == "option" && NF >= 2{ pre != 0 && $1 == "chunk" && NF >= 2{ # 'chunk' is handled on the first pass by writing appropriate # 'option' lines into the intermediate file. + opt = $2 + sub(/,$/,"",opt) onoff = "" reqread = "" reqwrite = "" enables = "" - i = 3 # indicates format error - if (NF > 2) { + req = 0 + istart = 3 + do { + if (istart == 1) { # continuation line + val = getline + + if (val != 1) { # error reading it + if (val == 0) + print "chunk", opt ": ERROR: missing contination line" + else + print "chunk", opt ": ERROR: error reading continuation line" + + # This is a hard error + err = 1 # prevent END{} running + exit 1 + } + } + # read the keywords/additional OPTS - req = 0 - for (i=3; i<=NF; ++i) { - if ($(i) == "on" || $(i) == "off" || $(i) == "disabled") { - if (onoff != $(i)) { + for (i=istart; i<=NF; ++i) { + val = $(i) + sub(/,$/,"",val) + if (val == "on" || val == "off" || val == "disabled") { + if (onoff != val) { if (onoff == "") - onoff = $(i) + onoff = val else break # on/off conflict } req = 0 - } else if ($(i) == "requires") + } else if (val == "requires") req = 1 - else if ($(i) == "enables") + else if (val == "enables") req = 2 else if (req == 1){ - reqread = reqread " READ_" $(i) - reqwrite = reqwrite " WRITE_" $(i) + reqread = reqread " READ_" val + reqwrite = reqwrite " WRITE_" val } else if (req == 2) - enables = enables " " $(i) + enables = enables " " val else break # bad line: handled below } - } + + istart = 1 + } while (i > NF && $0 ~ /,$/) if (i > NF) { # Output new 'option' lines to the intermediate file (out) - print "option READ_" $2, "requires READ_ANCILLARY_CHUNKS" reqread, "enables", $2 enables , onoff >out - print "option WRITE_" $2, "requires WRITE_ANCILLARY_CHUNKS" reqwrite, "enables", $2 enables, onoff >out + print "option READ_" opt, "requires READ_ANCILLARY_CHUNKS" reqread, "enables", opt enables , onoff >out + print "option WRITE_" opt, "requires WRITE_ANCILLARY_CHUNKS" reqwrite, "enables", opt enables, onoff >out next } # Else hit the error handler below - bad line format! @@ -466,72 +534,7 @@ END{ exit 0 } - # Do the 'setting' values first, the algorithm the standard - # tree walk (O(1)) done in an O(2) while/for loop; interations - # settings x depth, outputing the deepest required macros - # first. - print "" >out - print "/* SETTINGS */" >out - print comment, "settings", cend >out - finished = 0 - while (!finished) { - finished = 1 - movement = 0 # done nothing - for (i in setting) if (!doneset[i]) { - nreqs = split(setting[i], r) - if (nreqs > 0) { - for (j=1; j<=nreqs; ++j) if (!doneset[r[j]]) { - break - } - if (j<=nreqs) { - finished = 0 - continue # try a different setting - } - } - - # All the requirements have been processed, output - # this setting. - if (deb) print "setting", i - print "" >out - print "/* setting: ", i >out - print " * requires:" setting[i] >out - print " * default: ", defaults[i], "*/" >out - if (defaults[i] == "") { # no default, only check if defined - print "#ifdef PNG_" i >out - } - for (j=1; j<=nreqs; ++j) { - print "# ifndef PNG_" r[j] >out - print error, i, "requires", r[j] end >out - print "# endif" >out - } - if (defaults[i] != "") { # default handling - print "#ifdef PNG_" i >out - } - print def i, "PNG_" i end >out - if (defaults[i] != "") { - print "#else /*default*/" >out - # And add the default definition for the benefit - # of later settings an options test: - print "# define PNG_" i defaults[i] >out - print def i defaults[i] end >out - } - print "#endif" >out - - doneset[i] = 1 - ++movement - } - - if (!finished && !movement) { - print "setting: loop or missing setting in 'requires', cannot process:" - for (i in setting) if (!doneset[i]) { - print " setting", i, "requires" setting[i] - } - exit 1 - } - } - print comment, "end of settings", cend >out - - # Now do the options - somewhat more complex. The dependency + # Do the options first (allowing options to set settings). The dependency # tree is thus: # # name > name @@ -623,6 +626,9 @@ END{ } if (err) exit 1 + # Sort options: + print "PNG_DFN_START_SORT 2" >out + # option[i] is now the complete list of all the tokens we may # need to output, go through it as above, depth first. finished = 0 @@ -660,8 +666,9 @@ END{ print "" >out print "/* option:", i, option[i] >out print " * requires: " requires[i] >out - print " * if: " iffs[i] >out - print " * enabled-by:" enabledby[i], "*/" >out + print " * if: " iffs[i] >out + print " * enabled-by:" enabledby[i] >out + print " * sets: " sets[i], "*/" >out print "#undef PNG_on" >out print "#define PNG_on 1" >out @@ -744,6 +751,21 @@ END{ print error, i, "is on: enabled by:" iffs[i] enabledby[i] ", requires" requires[i] end >out } else if (i !~ /^ok_/) { print def i sup >out + # Supported option, set required settings + nreqs = split(sets[i], r) + for (j=1; j<=nreqs; ++j) { + print "# ifdef PNG_set_" r[j] >out + # Some other option has already set a value: + print error, i, "sets", r[j] ": duplicate setting" end >out + print error, " previous value: " end "PNG_set_" r[j] >out + print "# else" >out + # Else set the default: note that this won't accept arbitrary + # values, the setval string must be acceptable to all the C + # compilers we use. That means it must be VERY simple; a number, + # a name or a string. + print "# define PNG_set_" r[j], setval[i " " r[j]] >out + print "# endif" >out + } } print "# endif /* definition */" >out print "#endif /*requires, if*/" >out @@ -774,10 +796,98 @@ END{ exit 1 } } + print "PNG_DFN_END_SORT" >out print comment, "end of options", cend >out + # Do the 'setting' values second, the algorithm the standard + # tree walk (O(1)) done in an O(2) while/for loop; interations + # settings x depth, outputing the deepest required macros + # first. + print "" >out + print "/* SETTINGS */" >out + print comment, "settings", cend >out + # Sort (in dfn.awk) on field 2, the setting name + print "PNG_DFN_START_SORT 2" >out + finished = 0 + while (!finished) { + finished = 1 + movement = 0 # done nothing + for (i in setting) if (!doneset[i]) { + nreqs = split(setting[i], r) + if (nreqs > 0) { + # By default assume the requires values are options, but if there + # is no option with that name check for a setting + for (j=1; j<=nreqs; ++j) if (option[r[j]] == "" && !doneset[r[j]]) { + break + } + if (j<=nreqs) { + finished = 0 + continue # try a different setting + } + } + + # All the requirements have been processed, output + # this setting. + if (deb) print "setting", i + deflt = defaults[i] + # Remove any spurious trailing spaces + sub(/ *$/,"",deflt) + # A leading @ means leave it unquoted so the preprocessor + # can substitute the build time value + if (deflt ~ /^ @/) + deflt = " " subs substr(deflt, 3) sube + print "" >out + print "/* setting: ", i >out + print " * requires:" setting[i] >out + print " * default: ", defaults[i] deflt, "*/" >out + for (j=1; j<=nreqs; ++j) { + if (option[r[j]] != "") + print "#ifndef PNG_" r[j] "_SUPPORTED" >out + else + print "#ifndef PNG_" r[j] >out + print error, i, "requires", r[j] end >out + print "# endif" >out + } + # The precedence is: + # + # 1) External definition; trumps: + # 2) Option 'sets' value; trumps: + # 3) Setting 'default' + # + print "#ifdef PNG_" i >out + # PNG_<i> is defined, so substitute the value: + print def i, subs "PNG_" i sube end >out + print "#else /* use default */" >out + print "# ifdef PNG_set_" i >out + # Value from an option 'sets' argument + print def i, subs "PNG_set_" i sube end >out + # This is so that subsequent tests on the setting work: + print "# define PNG_" i, "1" >out + if (defaults[i] != "") { + print "# else /*default*/" >out + print def i deflt end >out + print "# define PNG_" i, "1" >out + } + print "# endif /* defaults */" >out + print "#endif /* setting", i, "*/" >out + + doneset[i] = 1 + ++movement + } + + if (!finished && !movement) { + print "setting: loop or missing setting in 'requires', cannot process:" + for (i in setting) if (!doneset[i]) { + print " setting", i, "requires" setting[i] + } + exit 1 + } + } + print "PNG_DFN_END_SORT" >out + print comment, "end of settings", cend >out + # Regular end - everything looks ok if (protect != "") { - print start "#endif", cx, protect, "*/" end >out + print start "#endif", "/*", protect, "*/" end >out } } diff --git a/scripts/pnglibconf.dfa b/scripts/pnglibconf.dfa index 60f6e2bb3..c95b10255 100644..100755 --- a/scripts/pnglibconf.dfa +++ b/scripts/pnglibconf.dfa @@ -27,7 +27,7 @@ file pnglibconf.h scripts/pnglibconf.dfa PNGLCONF_H # The syntax is detailed in scripts/options.awk; this is a summary # only: # -# setting <name> [default] +# setting <name> [requires ...] [default] # #define PNG_<name> <value> /* value comes from current setting */ # option <name> [requires ...] [if ...] [enables ...] [disabled] # #define PNG_<name>_SUPPORTED if the requirements are met and @@ -39,6 +39,11 @@ file pnglibconf.h scripts/pnglibconf.dfa PNGLCONF_H # used as given (e.g. enables GAMMA just expands to that on the # correspond READ_name and WRITE_name lines.) # +# "," may be used to separate options on an 'option' line and is ignored; it +# doesn't change the meaning of the line. (NOT setting, where "," becomes +# part of the setting!) A comma at the end of an option line causes a +# continuation (the next line is included in the option too.) +# # Note that the 'on' and 'off' keywords, while valid on both option # and chunk, should not be used in this file because they force the # relevant options on or off. @@ -131,6 +136,12 @@ logunsupported = 1 # - PNG_USER_VERSIONINFO_COMPANYNAME # - PNG_USER_VERSIONINFO_LEGALTRADEMARKS +# It is necessary to include configures definitions here so that AC_DEFINE +# in configure.ac works in a comprehensible way +@#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) +@# include "config.h" +@#endif + @#ifdef PNG_USER_CONFIG @# include "pngusr.h" @#endif @@ -147,6 +158,12 @@ logunsupported = 1 @# endif @#endif +# This changes the default for the ARM NEON optimizations according to +# __ARM_NEON__ +@#ifdef __ARM_NEON__ +@# define PNG_ARM_NEON_SUPPORTED +@#endif + # IN DEVELOPMENT # These are currently experimental features; define them if you want (NOTE: # experimental options must be disabled before they are defined in this file!) @@ -182,6 +199,29 @@ setting PREFIX setting DEFAULT_READ_MACROS default 1 +# This setting allows a hardware or configuration specific filter optimization +# function to be specified, the argument is the name of the filter initializaion +# function to use. + +setting FILTER_OPTIMIZATIONS + +# Implementation specific control of the optimizations, enabled by those +# hardware or software options that need it (typically when run-time choices +# must be made by the user) +option SET_OPTION disabled + +# These options are specific to the ARM NEON hardware optimizations: +# +# ARM_NEON: the optimization itself +# ARM_NEON_API: allow the optimization to be switched on with png_set_hardware +# ARM_NEON_CHECK: compile a run-time check to see if Neon extensions are +# supported, this is poorly supported and deprectated - use the +# png_set_hardware API. +option ARM_NEON disabled, + sets FILTER_OPTIMIZATIONS png_init_filter_functions_neon +option ARM_NEON_API disabled enables SET_OPTION ARM_NEON +option ARM_NEON_CHECK disabled enables ARM_NEON + # These settings configure the default compression level (0-9) and 'strategy'; # strategy is as defined by the implementors of zlib, it describes the input # data and modifies the zlib parameters in an attempt to optimize the balance @@ -190,13 +230,17 @@ setting DEFAULT_READ_MACROS default 1 # because the name of the setting is prefixed by PNG_ # # The TEXT values are the defaults when writing compressed text (all forms) +# +# Include the zlib header too, so that the defaults below are known +@# include <zlib.h> -setting Z_DEFAULT_COMPRESSION default Z_DEFAULT_COMPRESSION -setting Z_DEFAULT_STRATEGY default Z_FILTERED -setting Z_DEFAULT_NOFILTER_STRATEGY default Z_DEFAULT_STRATEGY +# The '@' here means to substitute the value when pnglibconf.h is built +setting Z_DEFAULT_COMPRESSION default @Z_DEFAULT_COMPRESSION +setting Z_DEFAULT_STRATEGY default @Z_FILTERED +setting Z_DEFAULT_NOFILTER_STRATEGY default @Z_DEFAULT_STRATEGY -setting TEXT_Z_DEFAULT_COMPRESSION default Z_DEFAULT_COMPRESSION -setting TEXT_Z_DEFAULT_STRATEGY default Z_DEFAULT_STRATEGY +setting TEXT_Z_DEFAULT_COMPRESSION default @Z_DEFAULT_COMPRESSION +setting TEXT_Z_DEFAULT_STRATEGY default @Z_DEFAULT_STRATEGY # The alternative is to call functions to read PNG values, if # the functions are turned *off* the read macros must always @@ -386,12 +430,12 @@ option READ_TRANSFORMS requires READ # If you handle gamma issues outside libpng then you do not need the libpng # gamma processing; and it is an enormous waste of space. You just need to # remove the use of libpng APIs that depend on it. -option READ_GAMMA requires READ_TRANSFORMS READ_gAMA +option READ_GAMMA requires READ_TRANSFORMS, READ_gAMA -option READ_ALPHA_MODE requires READ_TRANSFORMS READ_GAMMA -option READ_BACKGROUND requires READ_TRANSFORMS READ_STRIP_ALPHA READ_GAMMA +option READ_ALPHA_MODE requires READ_TRANSFORMS, READ_GAMMA +option READ_BACKGROUND requires READ_TRANSFORMS, READ_STRIP_ALPHA, READ_GAMMA option READ_BGR requires READ_TRANSFORMS -option READ_EXPAND_16 requires READ_TRANSFORMS READ_16BIT READ_EXPAND +option READ_EXPAND_16 requires READ_TRANSFORMS, READ_16BIT, READ_EXPAND option READ_EXPAND requires READ_TRANSFORMS option READ_FILLER requires READ_TRANSFORMS option READ_GRAY_TO_RGB requires READ_TRANSFORMS @@ -399,13 +443,13 @@ option READ_INVERT_ALPHA requires READ_TRANSFORMS option READ_INVERT requires READ_TRANSFORMS option READ_PACK requires READ_TRANSFORMS option READ_PACKSWAP requires READ_TRANSFORMS -option READ_RGB_TO_GRAY requires READ_TRANSFORMS READ_GAMMA +option READ_RGB_TO_GRAY requires READ_TRANSFORMS, READ_GAMMA option READ_SCALE_16_TO_8 requires READ_TRANSFORMS option READ_SHIFT requires READ_TRANSFORMS option READ_STRIP_16_TO_8 requires READ_TRANSFORMS option READ_STRIP_ALPHA requires READ_TRANSFORMS option READ_SWAP_ALPHA requires READ_TRANSFORMS -option READ_SWAP requires READ_TRANSFORMS READ_16BIT +option READ_SWAP requires READ_TRANSFORMS, READ_16BIT option READ_USER_TRANSFORM requires READ_TRANSFORMS option PROGRESSIVE_READ requires READ @@ -444,7 +488,7 @@ option WRITE_TRANSFORMS requires WRITE option WRITE_SHIFT requires WRITE_TRANSFORMS option WRITE_PACK requires WRITE_TRANSFORMS option WRITE_BGR requires WRITE_TRANSFORMS -option WRITE_SWAP requires WRITE_TRANSFORMS WRITE_16BIT +option WRITE_SWAP requires WRITE_TRANSFORMS, WRITE_16BIT option WRITE_PACKSWAP requires WRITE_TRANSFORMS option WRITE_INVERT requires WRITE_TRANSFORMS option WRITE_FILLER requires WRITE_TRANSFORMS @@ -466,8 +510,8 @@ option WRITE_FLUSH requires WRITE # Note: these can be turned off explicitly if not required by the # apps implementing the user transforms -option USER_TRANSFORM_PTR if READ_USER_TRANSFORM WRITE_USER_TRANSFORM -option USER_TRANSFORM_INFO if READ_USER_TRANSFORM WRITE_USER_TRANSFORM +option USER_TRANSFORM_PTR if READ_USER_TRANSFORM, WRITE_USER_TRANSFORM +option USER_TRANSFORM_INFO if READ_USER_TRANSFORM, WRITE_USER_TRANSFORM # This enables API to set compression parameters for compressing # non-IDAT chunks (zTXt, iTXt, iCCP, and unknown chunks). This feature @@ -568,7 +612,7 @@ setting sRGB_PROFILE_CHECKS default 2 # but can help (in theory) on some architectures. Only affects # internal structures. Added at libpng 1.4.0 -option ALIGN_MEMORY +option ALIGNED_MEMORY # Buggy compilers (e.g., gcc 2.7.2.2) need PNG_NO_POINTER_INDEXING # See png[wr]util.c, normally this should always be *on* @@ -660,7 +704,7 @@ chunk bKGD chunk cHRM enables COLORSPACE chunk gAMA enables GAMMA chunk hIST -chunk iCCP enables COLORSPACE GAMMA +chunk iCCP enables COLORSPACE, GAMMA chunk iTXt chunk oFFs chunk pCAL @@ -668,7 +712,7 @@ chunk pHYs chunk sBIT chunk sCAL chunk sPLT -chunk sRGB enables COLORSPACE GAMMA +chunk sRGB enables COLORSPACE, GAMMA chunk tEXt requires TEXT chunk tIME chunk tRNS @@ -698,7 +742,7 @@ option WRITE_UNKNOWN_CHUNKS enables STORE_UNKNOWN_CHUNKS # to png_get_unknown_chunks, the application must call # png_set_keep_unknown_chunks to cause this to actually happen (see png.h) option SAVE_UNKNOWN_CHUNKS requires READ requires SET_UNKNOWN_CHUNKS -option SAVE_UNKNOWN_CHUNKS enables READ_UNKNOWN_CHUNKS STORE_UNKNOWN_CHUNKS +option SAVE_UNKNOWN_CHUNKS enables READ_UNKNOWN_CHUNKS, STORE_UNKNOWN_CHUNKS # The second approach is to use an application provided callback to process the # chunks, the callback can either handle the chunk entirely itself or request @@ -706,8 +750,8 @@ option SAVE_UNKNOWN_CHUNKS enables READ_UNKNOWN_CHUNKS STORE_UNKNOWN_CHUNKS # # Note that there is no 'WRITE_USER_CHUNKS' so the USER_CHUNKS option is always # the same as READ_USER_CHUNKS at present -option READ_USER_CHUNKS requires READ requires UNKNOWN_CHUNKS -option READ_USER_CHUNKS enables READ_UNKNOWN_CHUNKS USER_CHUNKS +option READ_USER_CHUNKS requires READ, UNKNOWN_CHUNKS +option READ_USER_CHUNKS enables READ_UNKNOWN_CHUNKS, USER_CHUNKS # Two further options are provided to allow detailed control of the handling. # The first enables png_set_keep_unknown_chunks; this allows the default to be @@ -774,8 +818,8 @@ option INFO_IMAGE option CHECK_FOR_INVALID_INDEX enables READ_CHECK_FOR_INVALID_INDEX option CHECK_FOR_INVALID_INDEX enables WRITE_CHECK_FOR_INVALID_INDEX -option READ_CHECK_FOR_INVALID_INDEX requires READ CHECK_FOR_INVALID_INDEX -option WRITE_CHECK_FOR_INVALID_INDEX requires WRITE CHECK_FOR_INVALID_INDEX +option READ_CHECK_FOR_INVALID_INDEX requires READ, CHECK_FOR_INVALID_INDEX +option WRITE_CHECK_FOR_INVALID_INDEX requires WRITE, CHECK_FOR_INVALID_INDEX # added at libpng-1.5.15 option GET_PALETTE_MAX enables READ_GET_PALETTE_MAX WRITE_GET_PALETTE_MAX @@ -784,12 +828,11 @@ option WRITE_GET_PALETTE_MAX requires WRITE_CHECK_FOR_INVALID_INDEX disabled # Simplified API options (added at libpng-1.6.0) # Read: -option SIMPLIFIED_READ requires SEQUENTIAL_READ READ_TRANSFORMS SETJMP -option SIMPLIFIED_READ requires BENIGN_ERRORS READ_GAMMA -option SIMPLIFIED_READ enables READ_EXPAND READ_16BIT READ_EXPAND_16 -option SIMPLIFIED_READ enables READ_SCALE_16_TO_8 READ_RGB_TO_GRAY -option SIMPLIFIED_READ enables READ_ALPHA_MODE READ_BACKGROUND READ_STRIP_ALPHA -option SIMPLIFIED_READ enables READ_FILLER READ_SWAP +option SIMPLIFIED_READ, + requires SEQUENTIAL_READ READ_TRANSFORMS, SETJMP, BENIGN_ERRORS READ_GAMMA, + enables READ_EXPAND, READ_16BIT READ_EXPAND_16, READ_SCALE_16_TO_8, + READ_RGB_TO_GRAY, READ_ALPHA_MODE READ_BACKGROUND READ_STRIP_ALPHA, + READ_FILLER, READ_SWAP option SIMPLIFIED_READ_AFIRST requires SIMPLIFIED_READ disabled option READ_SWAP_ALPHA enables SIMPLIFIED_READ_AFIRST @@ -798,8 +841,9 @@ option SIMPLIFIED_READ_BGR requires SIMPLIFIED_READ disabled option READ_BGR enables SIMPLIFIED_READ_BGR # Write: -option SIMPLIFIED_WRITE requires WRITE STDIO SETJMP -option SIMPLIFIED_WRITE enables WRITE_SWAP WRITE_gAMA WRITE_sRGB WRITE_cHRM +option SIMPLIFIED_WRITE, + requires WRITE STDIO, SETJMP, + enables WRITE_SWAP WRITE_gAMA, WRITE_sRGB WRITE_cHRM option SIMPLIFIED_WRITE_AFIRST requires SIMPLIFIED_WRITE disabled option WRITE_SWAP_ALPHA enables SIMPLIFIED_WRITE_AFIRST @@ -808,5 +852,5 @@ option SIMPLIFIED_WRITE_BGR requires SIMPLIFIED_WRITE disabled option WRITE_BGR enables SIMPLIFIED_WRITE_BGR # Formats: -option FORMAT_AFIRST if SIMPLIFIED_READ_AFIRST SIMPLIFIED_WRITE_AFIRST -option FORMAT_BGR if SIMPLIFIED_READ_BGR SIMPLIFIED_WRITE_BGR +option FORMAT_AFIRST if SIMPLIFIED_READ_AFIRST, SIMPLIFIED_WRITE_AFIRST +option FORMAT_BGR if SIMPLIFIED_READ_BGR, SIMPLIFIED_WRITE_BGR diff --git a/scripts/pnglibconf.h.prebuilt b/scripts/pnglibconf.h.prebuilt index b31827956..1894e2dae 100644 --- a/scripts/pnglibconf.h.prebuilt +++ b/scripts/pnglibconf.h.prebuilt @@ -1,9 +1,8 @@ - -/* libpng STANDARD API DEFINITION */ +/* libpng 1.6.1 STANDARD API DEFINITION */ /* pnglibconf.h - library build configuration */ -/* Libpng 1.6.0 - February 14, 2013 */ +/* Libpng version 1.6.1 - March 28, 2013 */ /* Copyright (c) 1998-2013 Glenn Randers-Pehrson */ @@ -12,46 +11,21 @@ /* and license in png.h */ /* pnglibconf.h */ +/* Machine generated file: DO NOT EDIT */ /* Derived from: scripts/pnglibconf.dfa */ -/* If you edit this file by hand you must obey the rules expressed in */ -/* pnglibconf.dfa with respect to the dependencies between the following */ -/* symbols. It is much better to generate a new file using */ -/* scripts/libpngconf.mak */ - #ifndef PNGLCONF_H #define PNGLCONF_H -/* settings */ -#define PNG_API_RULE 0 -#define PNG_CALLOC_SUPPORTED -#define PNG_COST_SHIFT 3 -#define PNG_DEFAULT_READ_MACROS 1 -#define PNG_GAMMA_THRESHOLD_FIXED 5000 -#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE -#define PNG_INFLATE_BUF_SIZE 1024 -#define PNG_MAX_GAMMA_8 11 -#define PNG_QUANTIZE_BLUE_BITS 5 -#define PNG_QUANTIZE_GREEN_BITS 5 -#define PNG_QUANTIZE_RED_BITS 5 -#define PNG_sCAL_PRECISION 5 -#define PNG_sRGB_PROFILE_CHECKS 2 -#define PNG_TEXT_Z_DEFAULT_COMPRESSION Z_DEFAULT_COMPRESSION -#define PNG_TEXT_Z_DEFAULT_STRATEGY Z_DEFAULT_STRATEGY -#define PNG_WEIGHT_SHIFT 8 -#define PNG_ZBUF_SIZE 8192 -#define PNG_Z_DEFAULT_COMPRESSION Z_DEFAULT_COMPRESSION -#define PNG_Z_DEFAULT_NOFILTER_STRATEGY Z_DEFAULT_STRATEGY -#define PNG_Z_DEFAULT_STRATEGY Z_FILTERED -/* end of settings */ /* options */ #define PNG_16BIT_SUPPORTED -#define PNG_ALIGN_MEMORY_SUPPORTED +#define PNG_ALIGNED_MEMORY_SUPPORTED +/*#undef PNG_ARM_NEON_API_SUPPORTED*/ +/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ +/*#undef PNG_ARM_NEON_SUPPORTED*/ #define PNG_BENIGN_ERRORS_SUPPORTED #define PNG_BENIGN_READ_ERRORS_SUPPORTED /*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ -#define PNG_bKGD_SUPPORTED #define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED #define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_cHRM_SUPPORTED #define PNG_COLORSPACE_SUPPORTED #define PNG_CONSOLE_IO_SUPPORTED #define PNG_CONVERT_tIME_SUPPORTED @@ -63,20 +37,13 @@ #define PNG_FLOATING_POINT_SUPPORTED #define PNG_FORMAT_AFIRST_SUPPORTED #define PNG_FORMAT_BGR_SUPPORTED -#define PNG_gAMA_SUPPORTED #define PNG_GAMMA_SUPPORTED #define PNG_GET_PALETTE_MAX_SUPPORTED #define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -#define PNG_hIST_SUPPORTED -#define PNG_iCCP_SUPPORTED #define PNG_INCH_CONVERSIONS_SUPPORTED #define PNG_INFO_IMAGE_SUPPORTED #define PNG_IO_STATE_SUPPORTED -#define PNG_iTXt_SUPPORTED #define PNG_MNG_FEATURES_SUPPORTED -#define PNG_oFFs_SUPPORTED -#define PNG_pCAL_SUPPORTED -#define PNG_pHYs_SUPPORTED #define PNG_POINTER_INDEXING_SUPPORTED #define PNG_PROGRESSIVE_READ_SUPPORTED #define PNG_READ_16BIT_SUPPORTED @@ -84,62 +51,61 @@ #define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED #define PNG_READ_BACKGROUND_SUPPORTED #define PNG_READ_BGR_SUPPORTED -#define PNG_READ_bKGD_SUPPORTED #define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_READ_cHRM_SUPPORTED #define PNG_READ_COMPOSITE_NODIV_SUPPORTED #define PNG_READ_COMPRESSED_TEXT_SUPPORTED #define PNG_READ_EXPAND_16_SUPPORTED #define PNG_READ_EXPAND_SUPPORTED #define PNG_READ_FILLER_SUPPORTED -#define PNG_READ_gAMA_SUPPORTED #define PNG_READ_GAMMA_SUPPORTED #define PNG_READ_GET_PALETTE_MAX_SUPPORTED #define PNG_READ_GRAY_TO_RGB_SUPPORTED -#define PNG_READ_hIST_SUPPORTED -#define PNG_READ_iCCP_SUPPORTED #define PNG_READ_INTERLACING_SUPPORTED #define PNG_READ_INT_FUNCTIONS_SUPPORTED #define PNG_READ_INVERT_ALPHA_SUPPORTED #define PNG_READ_INVERT_SUPPORTED -#define PNG_READ_iTXt_SUPPORTED -#define PNG_READ_oFFs_SUPPORTED #define PNG_READ_OPT_PLTE_SUPPORTED -#define PNG_READ_PACK_SUPPORTED #define PNG_READ_PACKSWAP_SUPPORTED -#define PNG_READ_pCAL_SUPPORTED -#define PNG_READ_pHYs_SUPPORTED +#define PNG_READ_PACK_SUPPORTED #define PNG_READ_QUANTIZE_SUPPORTED #define PNG_READ_RGB_TO_GRAY_SUPPORTED -#define PNG_READ_sBIT_SUPPORTED #define PNG_READ_SCALE_16_TO_8_SUPPORTED -#define PNG_READ_sCAL_SUPPORTED #define PNG_READ_SHIFT_SUPPORTED -#define PNG_READ_sPLT_SUPPORTED -#define PNG_READ_sRGB_SUPPORTED #define PNG_READ_STRIP_16_TO_8_SUPPORTED #define PNG_READ_STRIP_ALPHA_SUPPORTED #define PNG_READ_SUPPORTED #define PNG_READ_SWAP_ALPHA_SUPPORTED #define PNG_READ_SWAP_SUPPORTED -#define PNG_READ_tEXt_SUPPORTED #define PNG_READ_TEXT_SUPPORTED -#define PNG_READ_tIME_SUPPORTED #define PNG_READ_TRANSFORMS_SUPPORTED -#define PNG_READ_tRNS_SUPPORTED #define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED #define PNG_READ_USER_CHUNKS_SUPPORTED #define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_READ_bKGD_SUPPORTED +#define PNG_READ_cHRM_SUPPORTED +#define PNG_READ_gAMA_SUPPORTED +#define PNG_READ_hIST_SUPPORTED +#define PNG_READ_iCCP_SUPPORTED +#define PNG_READ_iTXt_SUPPORTED +#define PNG_READ_oFFs_SUPPORTED +#define PNG_READ_pCAL_SUPPORTED +#define PNG_READ_pHYs_SUPPORTED +#define PNG_READ_sBIT_SUPPORTED +#define PNG_READ_sCAL_SUPPORTED +#define PNG_READ_sPLT_SUPPORTED +#define PNG_READ_sRGB_SUPPORTED +#define PNG_READ_tEXt_SUPPORTED +#define PNG_READ_tIME_SUPPORTED +#define PNG_READ_tRNS_SUPPORTED #define PNG_READ_zTXt_SUPPORTED /*#undef PNG_SAFE_LIMITS_SUPPORTED*/ #define PNG_SAVE_INT_32_SUPPORTED #define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_sBIT_SUPPORTED -#define PNG_sCAL_SUPPORTED #define PNG_SEQUENTIAL_READ_SUPPORTED +#define PNG_SETJMP_SUPPORTED #define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED #define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED -#define PNG_SETJMP_SUPPORTED +/*#undef PNG_SET_OPTION_SUPPORTED*/ #define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED #define PNG_SET_USER_LIMITS_SUPPORTED #define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED @@ -148,15 +114,10 @@ #define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED #define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED #define PNG_SIMPLIFIED_WRITE_SUPPORTED -#define PNG_sPLT_SUPPORTED -#define PNG_sRGB_SUPPORTED #define PNG_STDIO_SUPPORTED #define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_tEXt_SUPPORTED #define PNG_TEXT_SUPPORTED #define PNG_TIME_RFC1123_SUPPORTED -#define PNG_tIME_SUPPORTED -#define PNG_tRNS_SUPPORTED #define PNG_UNKNOWN_CHUNKS_SUPPORTED #define PNG_USER_CHUNKS_SUPPORTED #define PNG_USER_LIMITS_SUPPORTED @@ -167,46 +128,84 @@ #define PNG_WRITE_16BIT_SUPPORTED #define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED #define PNG_WRITE_BGR_SUPPORTED -#define PNG_WRITE_bKGD_SUPPORTED #define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_WRITE_cHRM_SUPPORTED #define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED #define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED #define PNG_WRITE_FILLER_SUPPORTED #define PNG_WRITE_FILTER_SUPPORTED #define PNG_WRITE_FLUSH_SUPPORTED -#define PNG_WRITE_gAMA_SUPPORTED #define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED -#define PNG_WRITE_hIST_SUPPORTED -#define PNG_WRITE_iCCP_SUPPORTED #define PNG_WRITE_INTERLACING_SUPPORTED #define PNG_WRITE_INT_FUNCTIONS_SUPPORTED #define PNG_WRITE_INVERT_ALPHA_SUPPORTED #define PNG_WRITE_INVERT_SUPPORTED -#define PNG_WRITE_iTXt_SUPPORTED -#define PNG_WRITE_oFFs_SUPPORTED #define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED -#define PNG_WRITE_PACK_SUPPORTED #define PNG_WRITE_PACKSWAP_SUPPORTED -#define PNG_WRITE_pCAL_SUPPORTED -#define PNG_WRITE_pHYs_SUPPORTED -#define PNG_WRITE_sBIT_SUPPORTED -#define PNG_WRITE_sCAL_SUPPORTED +#define PNG_WRITE_PACK_SUPPORTED #define PNG_WRITE_SHIFT_SUPPORTED -#define PNG_WRITE_sPLT_SUPPORTED -#define PNG_WRITE_sRGB_SUPPORTED #define PNG_WRITE_SUPPORTED #define PNG_WRITE_SWAP_ALPHA_SUPPORTED #define PNG_WRITE_SWAP_SUPPORTED -#define PNG_WRITE_tEXt_SUPPORTED #define PNG_WRITE_TEXT_SUPPORTED -#define PNG_WRITE_tIME_SUPPORTED #define PNG_WRITE_TRANSFORMS_SUPPORTED -#define PNG_WRITE_tRNS_SUPPORTED #define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED #define PNG_WRITE_USER_TRANSFORM_SUPPORTED #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#define PNG_WRITE_bKGD_SUPPORTED +#define PNG_WRITE_cHRM_SUPPORTED +#define PNG_WRITE_gAMA_SUPPORTED +#define PNG_WRITE_hIST_SUPPORTED +#define PNG_WRITE_iCCP_SUPPORTED +#define PNG_WRITE_iTXt_SUPPORTED +#define PNG_WRITE_oFFs_SUPPORTED +#define PNG_WRITE_pCAL_SUPPORTED +#define PNG_WRITE_pHYs_SUPPORTED +#define PNG_WRITE_sBIT_SUPPORTED +#define PNG_WRITE_sCAL_SUPPORTED +#define PNG_WRITE_sPLT_SUPPORTED +#define PNG_WRITE_sRGB_SUPPORTED +#define PNG_WRITE_tEXt_SUPPORTED +#define PNG_WRITE_tIME_SUPPORTED +#define PNG_WRITE_tRNS_SUPPORTED #define PNG_WRITE_zTXt_SUPPORTED +#define PNG_bKGD_SUPPORTED +#define PNG_cHRM_SUPPORTED +#define PNG_gAMA_SUPPORTED +#define PNG_hIST_SUPPORTED +#define PNG_iCCP_SUPPORTED +#define PNG_iTXt_SUPPORTED +#define PNG_oFFs_SUPPORTED +#define PNG_pCAL_SUPPORTED +#define PNG_pHYs_SUPPORTED +#define PNG_sBIT_SUPPORTED +#define PNG_sCAL_SUPPORTED +#define PNG_sPLT_SUPPORTED +#define PNG_sRGB_SUPPORTED +#define PNG_tEXt_SUPPORTED +#define PNG_tIME_SUPPORTED +#define PNG_tRNS_SUPPORTED #define PNG_zTXt_SUPPORTED /* end of options */ +/* settings */ +#define PNG_API_RULE 0 +#define PNG_CALLOC_SUPPORTED +#define PNG_COST_SHIFT 3 +#define PNG_DEFAULT_READ_MACROS 1 +#define PNG_GAMMA_THRESHOLD_FIXED 5000 +#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE +#define PNG_INFLATE_BUF_SIZE 1024 +#define PNG_MAX_GAMMA_8 11 +#define PNG_QUANTIZE_BLUE_BITS 5 +#define PNG_QUANTIZE_GREEN_BITS 5 +#define PNG_QUANTIZE_RED_BITS 5 +#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) +#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 +#define PNG_WEIGHT_SHIFT 8 +#define PNG_ZBUF_SIZE 8192 +#define PNG_Z_DEFAULT_COMPRESSION (-1) +#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 +#define PNG_Z_DEFAULT_STRATEGY 1 +#define PNG_sCAL_PRECISION 5 +#define PNG_sRGB_PROFILE_CHECKS 2 +/* end of settings */ #endif /* PNGLCONF_H */ diff --git a/scripts/pnglibconf.mak b/scripts/pnglibconf.mak index c799fb790..c7117ddc4 100755 --- a/scripts/pnglibconf.mak +++ b/scripts/pnglibconf.mak @@ -3,7 +3,7 @@ # # These lines are copied from Makefile.am, they illustrate # how to automate the build of pnglibconf.h from scripts/pnglibconf.dfa -# given 'awk' and 'sed' +# given just 'awk', a C preprocessor and standard command line utilities # Override as appropriate, these definitions can be overridden on # the make command line (AWK='nawk' for example). @@ -12,10 +12,9 @@ AWK = mawk AWK = nawk AWK = one-true-awk AWK = awk # Crashes on SunOS 5.10 - use 'nawk' -CPP = $(CC) -E # Does not work on SUN OS 5.10 - use /lib/cpp -SED = sed +CPP = $(CC) -E # On SUN OS 5.10 if this causes problems use /lib/cpp -COPY = cp +MOVE = mv DELETE = rm -f ECHO = echo DFA_XTRA = # Put your configuration file here, see scripts/pnglibconf.dfa. Eg: @@ -32,28 +31,24 @@ srcdir = . # The standard pnglibconf.h exists as scripts/pnglibconf.h.prebuilt, # copy this if the following doesn't work. pnglibconf.h: pnglibconf.dfn - $(DELETE) $@ dfn.c dfn1.out dfn2.out dfn3.out - $(ECHO) '#include "pnglibconf.dfn"' >dfn.c - $(CPP) $(DFNFLAGS) dfn.c >dfn1.out - $(ECHO) "If 'cpp -e' crashes try /lib/cpp (e.g. CPP='/lib/cpp')" >&2 - $(SED) -n -e 's|^.*PNG_DEFN_MAGIC *-\(.*\)- *PNG_DEFN_END.*$$|\1|p'\ - dfn1.out >dfn2.out - $(SED) -e 's| *PNG_JOIN *||g' -e 's| *$$||' dfn2.out >dfn3.out - $(COPY) dfn3.out $@ - $(DELETE) dfn.c dfn1.out dfn2.out dfn3.out - -pnglibconf.dfn: $(srcdir)/scripts/pnglibconf.dfa $(srcdir)/scripts/options.awk $(srcdir)/pngconf.h $(srcdir)/pngusr.dfa - $(DELETE) $@ dfn1.out dfn2.out + $(DELETE) $@ pnglibconf.c pnglibconf.out pnglibconf.tmp + $(ECHO) '#include "pnglibconf.dfn"' >pnglibconf.c + $(ECHO) "If '$(CC) -E' crashes try /lib/cpp (e.g. CPP='/lib/cpp')" >&2 + $(CPP) $(DFNFLAGS) pnglibconf.c >pnglibconf.out + $(AWK) -f "$(srcdir)/scripts/dfn.awk" out="pnglibconf.tmp" pnglibconf.out 1>&2 + $(MOVE) pnglibconf.tmp $@ + +pnglibconf.dfn: $(srcdir)/scripts/pnglibconf.dfa $(srcdir)/scripts/options.awk $(srcdir)/pngconf.h $(srcdir)/pngusr.dfa $(DFA_XTRA) + $(DELETE) $@ pnglibconf.pre pnglibconf.tmp $(ECHO) "Calling $(AWK) from scripts/pnglibconf.mak" >&2 $(ECHO) "If 'awk' crashes try a better awk (e.g. AWK='nawk')" >&2 - $(AWK) -f $(srcdir)/scripts/options.awk out=dfn1.out version=search\ - $(srcdir)/pngconf.h $(srcdir)/scripts/pnglibconf.dfa\ - $(srcdir)/pngusr.dfa $(DFA_XTRA) 1>&2 - $(AWK) -f $(srcdir)/scripts/options.awk out=dfn2.out dfn1.out 1>&2 - $(COPY) dfn2.out $@ - $(DELETE) dfn1.out dfn2.out + $(AWK) -f $(srcdir)/scripts/options.awk out="pnglibconf.pre"\ + version=search $(srcdir)/pngconf.h $(srcdir)/scripts/pnglibconf.dfa\ + $(srcdir)/pngusr.dfa $(DFA_XTRA) 1>&2 + $(AWK) -f $(srcdir)/scripts/options.awk out="pnglibconf.tmp" pnglibconf.pre 1>&2 + $(MOVE) pnglibconf.tmp $@ clean-pnglibconf: - $(DELETE) pnglibconf.h pnglibconf.dfn dfn.c dfn1.out dfn2.out dfn3.out + $(DELETE) pnglibconf.* clean: clean-pnglibconf diff --git a/scripts/prefix.dfn b/scripts/prefix.dfn index 1e8561fd3..0997310c5 100644 --- a/scripts/prefix.dfn +++ b/scripts/prefix.dfn @@ -10,11 +10,15 @@ */ #define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_DEFN_MAGIC-name-PNG_DEFN_END + PNG_DFN "@" name "@" /* The configuration information *before* the additional of symbol renames, * the list is the C name list; no symbol prefix. */ #include "pnglibconf.out" +PNG_DFN_START_SORT 1 + #include "../png.h" + +PNG_DFN_END_SORT diff --git a/scripts/sym.dfn b/scripts/sym.dfn index f4f13df08..9ccd810fd 100644 --- a/scripts/sym.dfn +++ b/scripts/sym.dfn @@ -10,6 +10,6 @@ */ #define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_DEFN_MAGIC-SYMBOL_PREFIX PNG_JOIN name-PNG_DEFN_END + PNG_DFN "@" SYMBOL_PREFIX "@@" name "@" #include "../png.h" diff --git a/scripts/symbols.def b/scripts/symbols.def index 1e150df5a..d19022c7c 100644 --- a/scripts/symbols.def +++ b/scripts/symbols.def @@ -1,3 +1,4 @@ +;Version 1.6.1 ;-------------------------------------------------------------- ; LIBPNG symbol list as a Win32 DEF file ; Contains all the symbols that can be exported from libpng @@ -5,7 +6,6 @@ LIBRARY EXPORTS -;Version 1.6.0 png_access_version_number @1 png_set_sig_bytes @2 png_sig_cmp @3 @@ -248,3 +248,4 @@ EXPORTS png_convert_to_rfc1123_buffer @241 png_set_check_for_invalid_index @242 png_get_palette_max @243 + png_set_option @244 diff --git a/scripts/symbols.dfn b/scripts/symbols.dfn index d790929e7..6f52918d4 100644 --- a/scripts/symbols.dfn +++ b/scripts/symbols.dfn @@ -17,11 +17,11 @@ */ #define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_DEFN_MAGIC-name @ordinal-PNG_DEFN_END + PNG_DFN "@" name "@ @@" ordinal "@" #define PNG_REMOVED(ordinal, type, name, args, attributes)\ - PNG_DEFN_MAGIC-; name @ordinal-PNG_DEFN_END + PNG_DFN "; @" name "@ @@" ordinal "@" #define PNG_EXPORT_LAST_ORDINAL(ordinal)\ - PNG_DEFN_MAGIC-; @ordinal-PNG_DEFN_END + PNG_DFN "; @@" ordinal "@" /* Read the defaults, but use scripts/pnglibconf.h.prebuilt; the 'standard' * header file. @@ -35,13 +35,14 @@ * defaulted to 'off' in scripts/pnglibconf.dfa * * Maintenance: if scripts/pnglibconf.dfa options are changed - * from, or to, 'off' this needs updating! + * from, or to, 'disabled' this needs updating! */ #define PNG_BENIGN_ERRORS_SUPPORTED #define PNG_ERROR_NUMBERS_SUPPORTED #define PNG_READ_BIG_ENDIAN_SUPPORTED /* should do nothing! */ #define PNG_INCH_CONVERSIONS_SUPPORTED #define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED +#define PNG_SET_OPTION_SUPPORTED #undef PNG_H #include "../png.h" diff --git a/scripts/vers.dfn b/scripts/vers.dfn index 89d5f3879..61ba7d80b 100644 --- a/scripts/vers.dfn +++ b/scripts/vers.dfn @@ -9,18 +9,11 @@ * and license in png.h */ -#define HEADER PNG_DEFN_MAGIC-PNGLIB_LIBNAME {global:-PNG_DEFN_END - -/* NOTE: PNG_JOIN is interpreted by the calling script as a signal to - * join the two things on either side, so we can do symbol - * substitution within the name, regular C ## joins the pp-tokens, - * not their final values. - */ #define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_DEFN_MAGIC- SYMBOL_PREFIX PNG_JOIN name;-PNG_DEFN_END + PNG_DFN " @" SYMBOL_PREFIX "@@" name "@;" -#define TRAILER PNG_DEFN_MAGIC-local: *; };-PNG_DEFN_END +PNG_DFN "@" PNGLIB_LIBNAME "@ {global:" -HEADER #include "../png.h" -TRAILER + +PNG_DFN "local: *; };" |