1 2Installing libpng version 1.2.8 - December 3, 2004 3 4Before installing libpng, you must first install zlib. zlib 5can usually be found wherever you got libpng. zlib can be 6placed in another directory, at the same level as libpng. 7Note that your system might already have a preinstalled 8zlib, but you will still need to have access to the 9zlib.h and zconf.h include files that correspond to the 10version of zlib that's installed. 11 12You can rename the directories that you downloaded (they 13might be called "libpng-1.2.8" or "lpng109" and "zlib-1.2.1" 14or "zlib121") so that you have directories called "zlib" and "libpng". 15 16Your directory structure should look like this: 17 18 .. (the parent directory) 19 libpng (this directory) 20 INSTALL (this file) 21 README 22 *.h 23 *.c 24 contrib 25 gregbook 26 pngminus 27 pngsuite 28 visupng 29 projects 30 beos 31 c5builder (Borland) 32 visualc6 (msvc) 33 netware.txt 34 wince.txt 35 scripts 36 makefile.* 37 pngtest.png 38 etc. 39 zlib 40 README 41 *.h 42 *.c 43 contrib 44 etc. 45 46If the line endings in the files look funny, you may wish to get the other 47distribution of libpng. It is available in both tar.gz (UNIX style line 48endings) and zip (DOS style line endings) formats. 49 50 51If you are building libpng with MSVC, you can enter the 52libpng projects\visualc6 directory and follow the instructions in 53projects\visualc6\README.txt. 54 55You can build libpng for WindowsCE by downloading and installing 56the projects\wince directory as instructed in the projects\wince.txt file, and 57then following the instructions in the README* files. Similarly, you can 58build libpng for Netware or Beos as instructed in projects\netware.txt 59or projects\beos. 60 61Else enter the zlib directory and follow the instructions in zlib/README, 62then come back here and choose the appropriate makefile.sys in the scripts 63directory. 64 65The files that are presently available in the scripts directory 66include 67 68 makefile.std => Generic UNIX makefile (cc, creates static libpng.a) 69 makefile.elf => Linux/ELF makefile symbol versioning, 70 gcc, creates libpng12.so.0.1.2.8) 71 makefile.linux => Linux/ELF makefile 72 (gcc, creates libpng12.so.0.1.2.8) 73 makefile.gcmmx => Linux/ELF makefile 74 (gcc, creates libpng12.so.0.1.2.8, 75 uses assembler code tuned for Intel MMX platform) 76 makefile.gcc => Generic makefile (gcc, creates static libpng.a) 77 makefile.knr => Archaic UNIX Makefile that converts files with 78 ansi2knr (Requires ansi2knr.c from 79 ftp://ftp.cs.wisc.edu/ghost) 80 makefile.aix => AIX/gcc makefile 81 makefile.cygwin => Cygwin/gcc makefile 82 makefile.darwin => Darwin makefile, can use on MacosX 83 makefile.dec => DEC Alpha UNIX makefile 84 makefile.freebsd => FreeBSD makefile 85 makefile.hpgcc => HPUX makefile using gcc 86 makefile.hpux => HPUX (10.20 and 11.00) makefile 87 makefile.hp64 => HPUX (10.20 and 11.00) makefile, 64-bit 88 makefile.ibmc => IBM C/C++ version 3.x for Win32 and OS/2 (static) 89 makefile.intel => Intel C/C++ version 4.0 and later 90 libpng.icc => Project file for IBM VisualAge/C++ version 4.0 or later 91 makefile.netbsd => NetBSD/cc makefile, uses PNGGCCRD, makes libpng.so. 92 makefile.ne12bsd => NetBSD/cc makefile, uses PNGGCCRD, 93 makes libpng12.so 94 makefile.openbsd => OpenBSD makefile 95 makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) 96 makefile.sggcc => Silicon Graphics (gcc, 97 creates libpng12.so.0.1.2.8) 98 makefile.sunos => Sun makefile 99 makefile.solaris => Solaris 2.X makefile (gcc, 100 creates libpng12.so.0.1.2.8) 101 makefile.so9 => Solaris 9 makefile (gcc, 102 creates libpng12.so.0.1.2.8) 103 makefile.32sunu => Sun Ultra 32-bit makefile 104 makefile.64sunu => Sun Ultra 64-bit makefile 105 makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc 106 makefile.mips => MIPS makefile 107 makefile.acorn => Acorn makefile 108 makefile.amiga => Amiga makefile 109 smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler 110 (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc) 111 makefile.atari => Atari makefile 112 makefile.beos => BEOS makefile for X86 113 makefile.bor => Borland makefile (uses bcc) 114 makefile.bc32 => 32-bit Borland C++ (all modules compiled in C mode) 115 makefile.tc3 => Turbo C 3.0 makefile 116 makefile.dj2 => DJGPP 2 makefile 117 makefile.msc => Microsoft C makefile 118 makefile.vcawin32 => makefile for Microsoft Visual C++ 5.0 and later (uses 119 assembler code tuned for Intel MMX platform) 120 makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later (does 121 not use assembler code) 122 makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def) 123 pngos2.def => OS/2 module definition file used by makefile.os2 124 makefile.watcom => Watcom 10a+ Makefile, 32-bit flat memory model 125 makevms.com => VMS build script 126 descrip.mms => VMS makefile for MMS or MMK 127 SCOPTIONS.ppc => Used with smakefile.ppc 128 129Copy the file (or files) that you need from the 130scripts directory into this directory, for example 131 132 MSDOS example: copy scripts\makefile.msc makefile 133 UNIX example: cp scripts/makefile.std makefile 134 135Read the makefile to see if you need to change any source or 136target directories to match your preferences. 137 138Then read pngconf.h to see if you want to make any configuration 139changes. 140 141Then just run "make" which will create the libpng library in 142this directory and "make test" which will run a quick test that reads 143the "pngtest.png" file and writes a "pngout.png" file that should be 144identical to it. Look for "9782 zero samples" in the output of the 145test. For more confidence, you can run another test by typing 146"pngtest pngnow.png" and looking for "289 zero samples" in the output. 147Also, you can run "pngtest -m contrib/pngsuite/*.png" and compare 148your output with the result shown in contrib/pngsuite/README. 149 150Most of the makefiles will allow you to run "make install" to 151put the library in its final resting place (if you want to 152do that, run "make install" in the zlib directory first if necessary). 153Some also allow you to run "make test-installed" after you have 154run "make install". 155 156If you encounter a compiler error message complaining about the 157lines 158 __png.h__ already includes setjmp.h; 159 __dont__ include it again.; 160This means you have compiled another module that includes setjmp.h, 161which is hazardous because the two modules might not include exactly 162the same setjmp.h. If you are sure that you know what you are doing 163and that they are exactly the same, then you can comment out or 164delete the two lines. Better yet, use the cexcept interface 165instead, as demonstrated in contrib/visupng of the libpng distribution. 166 167Further information can be found in the README and libpng.txt 168files, in the individual makefiles, in png.h, and the manual pages 169libpng.3 and png.5. 170