f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncInstalling libpng version 1.2.8 - December 3, 2004
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.
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".
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncYour directory structure should look like this:
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync .. (the parent directory)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync libpng (this directory)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync INSTALL (this file)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync c5builder (Borland)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync visualc6 (msvc)
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.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncIf you are building libpng with MSVC, you can enter the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynclibpng projects\visualc6 directory and follow the instructions in
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncprojects\visualc6\README.txt.
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.
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
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncThe files that are presently available in the scripts directory
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.elf => Linux/ELF makefile symbol versioning,
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 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 makefile.openbsd => OpenBSD makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.sggcc => Silicon Graphics (gcc,
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.sunos => Sun makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync makefile.so9 => Solaris 9 makefile (gcc,
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
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncCopy the file (or files) that you need from the
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncscripts directory into this directory, for example
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync MSDOS example: copy scripts\makefile.msc makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsync UNIX example: cp scripts/makefile.std makefile
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncRead the makefile to see if you need to change any source or
f9a51917495bc8ba8b60632219652a7b122c1190vboxsynctarget directories to match your preferences.
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncThen read pngconf.h to see if you want to make any configuration
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.
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".
f9a51917495bc8ba8b60632219652a7b122c1190vboxsyncIf you encounter a compiler error message complaining about the
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.
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.