

Installing libpng version 1.2.16 - January 31, 2007



On Unix/Linux and similar systems, you can simply type



    ./configure [--prefix=/path]

    make check

    make install



and ignore the rest of this document.



If configure does not work on your system and you have a reasonably

up-to-date set of tools, running ./autogen.sh before running ./configure

may fix the problem.  You can also run the individual commands in

autogen.sh with the --force option, if supported by your version of

the tools.  If you run 'libtoolize --force', though, this will replace

the distributed, patched, version of ltmain.sh with an unpatched version

and your shared library builds may fail to produce libraries with the

correct version numbers.



Instead, you can use one of the custom-built makefiles in the

"scripts" directory



    cp scripts/makefile.system makefile

    make test

    make install



Or you can use one of the "projects" in the "projects" directory.



If you want to use "cmake" (see www.cmake.org), copy CMakeLists.txt

from the "scripts" directory to this directory and type



   cmake . [-DPNG_MMX=YES] -DCMAKE_INSTALL_PREFIX=/path

   make

   make install



Before installing libpng, you must first install zlib, if it

is not already on your system.  zlib can usually be found

wherever you got libpng.  zlib can be placed in another directory,

at the same level as libpng.



If your system already has a preinstalled zlib you will still need

to have access to the zlib.h and zconf.h include files that

correspond to the version of zlib that's installed.



You can rename the directories that you downloaded (they

might be called "libpng-1.2.16" or "lpng109" and "zlib-1.2.1"

or "zlib121") so that you have directories called "zlib" and "libpng".



Your directory structure should look like this:



   ..       (the parent directory)

      libpng  (this directory)

          INSTALL (this file)

          README

          *.h

          *.c

          contrib

             gregbook

             pngminus

             pngsuite

             visupng

          projects

             beos

             c5builder (Borland)

             visualc6 (msvc)

             netware.txt

             wince.txt

          scripts

             makefile.*

          pngtest.png

          etc.

      zlib

          README

          *.h

          *.c

          contrib

          etc.



If the line endings in the files look funny, you may wish to get the other

distribution of libpng.  It is available in both tar.gz (UNIX style line

endings) and zip (DOS style line endings) formats.



If you are building libpng with MSVC, you can enter the

libpng projects\visualc6 directory and follow the instructions in

projects\visualc6\README.txt.



You can build libpng for WindowsCE by downloading and installing

the projects\wince directory as instructed in the projects\wince.txt file, and

then following the instructions in the README* files.  Similarly, you can

build libpng for Netware or Beos as instructed in projects\netware.txt

or projects\beos.



Else enter the zlib directory and follow the instructions in zlib/README,

then come back here and run "configure" or choose the appropriate

makefile.sys in the scripts directory.



The files that are presently available in the scripts directory

include



 CMakeLists.txt    =>  "cmake" script

 makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)

 makefile.elf      =>  Linux/ELF makefile symbol versioning,

                       gcc, creates libpng12.so.0.1.2.16)

 makefile.linux    =>  Linux/ELF makefile

                       (gcc, creates libpng12.so.0.1.2.16)

 makefile.gcmmx    =>  Linux/ELF makefile

                       (gcc, creates libpng12.so.0.1.2.16,

                       uses assembler code tuned for Intel MMX platform)

 makefile.nommx    =>  Linux/ELF makefile

                       (gcc, creates libpng12.so.0.1.2.16

                       does not use Intel MMX assembler code)

 makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)

 makefile.knr      =>  Archaic UNIX Makefile that converts files with

                       ansi2knr (Requires ansi2knr.c from

                       ftp://ftp.cs.wisc.edu/ghost)

 makefile.aix      =>  AIX/gcc makefile

 makefile.cygwin   =>  Cygwin/gcc makefile

 makefile.darwin   =>  Darwin makefile, can use on MacosX

 makefile.dec      =>  DEC Alpha UNIX makefile

 makefile.freebsd  =>  FreeBSD makefile

 makefile.hpgcc    =>  HPUX makefile using gcc

 makefile.hpux     =>  HPUX (10.20 and 11.00) makefile

 makefile.hp64     =>  HPUX (10.20 and 11.00) makefile, 64-bit

 makefile.ibmc     =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)

 makefile.intel    =>  Intel C/C++ version 4.0 and later

 libpng.icc        =>  Project file for IBM VisualAge/C++ version 4.0 or later

 makefile.netbsd   =>  NetBSD/cc makefile, uses PNGGCCRD, makes libpng.so.

 makefile.ne12bsd  =>  NetBSD/cc makefile, uses PNGGCCRD,

                       makes libpng12.so

 makefile.openbsd  =>  OpenBSD makefile

 makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)

 makefile.sggcc    =>  Silicon Graphics (gcc,

                       creates libpng12.so.0.1.2.16)

 makefile.sunos    =>  Sun makefile

 makefile.solaris  =>  Solaris 2.X makefile (gcc,

                       creates libpng12.so.0.1.2.16)

 makefile.so9      =>  Solaris 9 makefile (gcc,

                       creates libpng12.so.0.1.2.16)

 makefile.32sunu   =>  Sun Ultra 32-bit makefile

 makefile.64sunu   =>  Sun Ultra 64-bit makefile

 makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc

 makefile.mips     =>  MIPS makefile

 makefile.acorn    =>  Acorn makefile

 makefile.amiga    =>  Amiga makefile

 smakefile.ppc     =>  AMIGA smakefile for SAS C V6.58/7.00 PPC compiler

                       (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc)

 makefile.atari    =>  Atari makefile

 makefile.beos     =>  BEOS makefile for X86

 makefile.bor      =>  Borland makefile (uses bcc)

 makefile.bc32     =>  32-bit Borland C++ (all modules compiled in C mode)

 makefile.tc3      =>  Turbo C 3.0 makefile

 makefile.dj2      =>  DJGPP 2 makefile

 makefile.msc      =>  Microsoft C makefile

 makefile.vcawin32 =>  makefile for Microsoft Visual C++ 5.0 and later (uses

                       assembler code tuned for Intel MMX platform)

 makefile.vcwin32  =>  makefile for Microsoft Visual C++ 4.0 and later (does

                       not use assembler code)

 makefile.os2      =>  OS/2 Makefile (gcc and emx, requires pngos2.def)

 pngos2.def        =>  OS/2 module definition file used by makefile.os2

 makefile.watcom   =>  Watcom 10a+ Makefile, 32-bit flat memory model

 makevms.com       =>  VMS build script

 descrip.mms       =>  VMS makefile for MMS or MMK

 SCOPTIONS.ppc     =>  Used with smakefile.ppc



Copy the file (or files) that you need from the

scripts directory into this directory, for example



   MSDOS example: copy scripts\makefile.msc makefile

   UNIX example:    cp scripts/makefile.std makefile



Read the makefile to see if you need to change any source or

target directories to match your preferences.



Then read pngconf.h to see if you want to make any configuration

changes.



Then just run "make" which will create the libpng library in

this directory and "make test" which will run a quick test that reads

the "pngtest.png" file and writes a "pngout.png" file that should be

identical to it.  Look for "9782 zero samples" in the output of the

test.  For more confidence, you can run another test by typing

"pngtest pngnow.png" and looking for "289 zero samples" in the output.

Also, you can run "pngtest -m contrib/pngsuite/*.png" and compare

your output with the result shown in contrib/pngsuite/README.



Most of the makefiles will allow you to run "make install" to

put the library in its final resting place (if you want to

do that, run "make install" in the zlib directory first if necessary).

Some also allow you to run "make test-installed" after you have

run "make install".



If you encounter a compiler error message complaining about the

lines

      __png.h__ already includes setjmp.h;

      __dont__ include it again.;

This means you have compiled another module that includes setjmp.h,

which is hazardous because the two modules might not include exactly

the same setjmp.h.  If you are sure that you know what you are doing

and that they are exactly the same, then you can comment out or

delete the two lines.  Better yet, use the cexcept interface

instead, as demonstrated in contrib/visupng of the libpng distribution.



Further information can be found in the README and libpng.txt

files, in the individual makefiles, in png.h, and the manual pages

libpng.3 and png.5.

