f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncInstalling libpng version 1.2.8 - December 3, 2004
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncBefore installing libpng, you must first install zlib. zlib
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynccan usually be found wherever you got libpng. zlib can be
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncplaced in another directory, at the same level as libpng.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncNote that your system might already have a preinstalled
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynczlib, but you will still need to have access to the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynczlib.h and zconf.h include files that correspond to the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncversion of zlib that's installed.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncYou can rename the directories that you downloaded (they
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncmight be called "libpng-1.2.8" or "lpng109" and "zlib-1.2.1"
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncor "zlib121") so that you have directories called "zlib" and "libpng".
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncYour directory structure should look like this:
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync .. (the parent directory)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync libpng (this directory)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync INSTALL (this file)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync README
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync *.h
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync *.c
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync contrib
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync gregbook
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync pngminus
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync pngsuite
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync visupng
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync projects
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync beos
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync c5builder (Borland)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync visualc6 (msvc)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync netware.txt
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync wince.txt
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync scripts
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.*
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync pngtest.png
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync etc.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync zlib
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync README
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync *.h
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync *.c
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync contrib
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync etc.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncIf the line endings in the files look funny, you may wish to get the other
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncdistribution of libpng. It is available in both tar.gz (UNIX style line
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncendings) and zip (DOS style line endings) formats.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncIf you are building libpng with MSVC, you can enter the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynclibpng projects\visualc6 directory and follow the instructions in
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncprojects\visualc6\README.txt.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncYou can build libpng for WindowsCE by downloading and installing
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncthe projects\wince directory as instructed in the projects\wince.txt file, and
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncthen following the instructions in the README* files. Similarly, you can
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncbuild libpng for Netware or Beos as instructed in projects\netware.txt
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncor projects\beos.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncElse enter the zlib directory and follow the instructions in zlib/README,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncthen come back here and choose the appropriate makefile.sys in the scripts
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncdirectory.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncThe files that are presently available in the scripts directory
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncinclude
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.elf => Linux/ELF makefile symbol versioning,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync gcc, creates libpng12.so.0.1.2.8)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.linux => Linux/ELF makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync (gcc, creates libpng12.so.0.1.2.8)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.gcmmx => Linux/ELF makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync (gcc, creates libpng12.so.0.1.2.8,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync uses assembler code tuned for Intel MMX platform)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.gcc => Generic makefile (gcc, creates static libpng.a)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.knr => Archaic UNIX Makefile that converts files with
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync ansi2knr (Requires ansi2knr.c from
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync ftp://ftp.cs.wisc.edu/ghost)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.aix => AIX/gcc makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.cygwin => Cygwin/gcc makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.darwin => Darwin makefile, can use on MacosX
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.dec => DEC Alpha UNIX makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.freebsd => FreeBSD makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.hpgcc => HPUX makefile using gcc
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.hpux => HPUX (10.20 and 11.00) makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.hp64 => HPUX (10.20 and 11.00) makefile, 64-bit
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.ibmc => IBM C/C++ version 3.x for Win32 and OS/2 (static)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.intel => Intel C/C++ version 4.0 and later
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync libpng.icc => Project file for IBM VisualAge/C++ version 4.0 or later
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.netbsd => NetBSD/cc makefile, uses PNGGCCRD, makes libpng.so.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.ne12bsd => NetBSD/cc makefile, uses PNGGCCRD,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makes libpng12.so
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.openbsd => OpenBSD makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.sggcc => Silicon Graphics (gcc,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync creates libpng12.so.0.1.2.8)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.sunos => Sun makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.solaris => Solaris 2.X makefile (gcc,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync creates libpng12.so.0.1.2.8)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.so9 => Solaris 9 makefile (gcc,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync creates libpng12.so.0.1.2.8)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.32sunu => Sun Ultra 32-bit makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.64sunu => Sun Ultra 64-bit makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.mips => MIPS makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.acorn => Acorn makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.amiga => Amiga makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.atari => Atari makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.beos => BEOS makefile for X86
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.bor => Borland makefile (uses bcc)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.bc32 => 32-bit Borland C++ (all modules compiled in C mode)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.tc3 => Turbo C 3.0 makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.dj2 => DJGPP 2 makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.msc => Microsoft C makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.vcawin32 => makefile for Microsoft Visual C++ 5.0 and later (uses
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync assembler code tuned for Intel MMX platform)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later (does
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync not use assembler code)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync pngos2.def => OS/2 module definition file used by makefile.os2
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.watcom => Watcom 10a+ Makefile, 32-bit flat memory model
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makevms.com => VMS build script
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync descrip.mms => VMS makefile for MMS or MMK
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync SCOPTIONS.ppc => Used with smakefile.ppc
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncCopy the file (or files) that you need from the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncscripts directory into this directory, for example
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync MSDOS example: copy scripts\makefile.msc makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync UNIX example: cp scripts/makefile.std makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncRead the makefile to see if you need to change any source or
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynctarget directories to match your preferences.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncThen read pngconf.h to see if you want to make any configuration
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncchanges.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncThen just run "make" which will create the libpng library in
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncthis directory and "make test" which will run a quick test that reads
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncthe "pngtest.png" file and writes a "pngout.png" file that should be
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncidentical to it. Look for "9782 zero samples" in the output of the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynctest. For more confidence, you can run another test by typing
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync"pngtest pngnow.png" and looking for "289 zero samples" in the output.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncAlso, you can run "pngtest -m contrib/pngsuite/*.png" and compare
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncyour output with the result shown in contrib/pngsuite/README.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncMost of the makefiles will allow you to run "make install" to
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncput the library in its final resting place (if you want to
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncdo that, run "make install" in the zlib directory first if necessary).
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncSome also allow you to run "make test-installed" after you have
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncrun "make install".
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncIf you encounter a compiler error message complaining about the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynclines
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync __png.h__ already includes setjmp.h;
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync __dont__ include it again.;
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncThis means you have compiled another module that includes setjmp.h,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncwhich is hazardous because the two modules might not include exactly
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncthe same setjmp.h. If you are sure that you know what you are doing
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncand that they are exactly the same, then you can comment out or
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncdelete the two lines. Better yet, use the cexcept interface
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncinstead, as demonstrated in contrib/visupng of the libpng distribution.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncFurther information can be found in the README and libpng.txt
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncfiles, in the individual makefiles, in png.h, and the manual pages
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynclibpng.3 and png.5.