blob: a51acfc857edd9746c76708904d0e2bad0500fa9 [file] [log] [blame]
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -06001
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -06002Installing libpng version 1.2.9beta8 - March 9, 2006
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -06003
Glenn Randers-Pehrsonddfebd32006-02-22 09:19:25 -06004On Unix/Linux and similar systems, you can simply type
5
Glenn Randers-Pehrsonc3d51c12006-03-02 07:23:18 -06006 ./autogen.sh
Glenn Randers-Pehrsonddfebd32006-02-22 09:19:25 -06007 ./configure [--prefix=$HOME]
8 make check
9 make install
10
11and ignore the rest of this document.
12
13Or you can use one of the custom-built makefiles in the
14"scripts" directory
15
16 cp scripts/makefile.system makefile
17 make test
18 make install
19
20Or you can use one of the "projects" in the "projects" directory.
21
22Before installing libpng, you must first install zlib, if it
23is not already on your system. zlib can usually be found
24wherever you got libpng. zlib can be placed in another directory,
25at the same level as libpng.
26
27If your system already has a preinstalled zlib you will still need
28to have access to the zlib.h and zconf.h include files that
29correspond to the version of zlib that's installed.
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -060030
31You can rename the directories that you downloaded (they
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -060032might be called "libpng-1.2.9beta8" or "lpng109" and "zlib-1.2.1"
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -060033or "zlib121") so that you have directories called "zlib" and "libpng".
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -060034
35Your directory structure should look like this:
36
37 .. (the parent directory)
38 libpng (this directory)
39 INSTALL (this file)
40 README
41 *.h
42 *.c
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -050043 contrib
44 gregbook
Glenn Randers-Pehrson6d8f3b01999-10-23 08:39:18 -050045 pngminus
46 pngsuite
Glenn Randers-Pehrsondb66d442000-06-23 21:38:16 -050047 visupng
Glenn Randers-Pehrsonfbbb5ec2001-01-15 22:01:20 -060048 projects
Glenn Randers-Pehrson3097f612001-05-07 14:52:45 -050049 beos
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -060050 c5builder (Borland)
51 visualc6 (msvc)
Glenn Randers-Pehrsonb1828932001-06-23 08:03:17 -050052 netware.txt
53 wince.txt
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -060054 scripts
55 makefile.*
56 pngtest.png
57 etc.
58 zlib
59 README
60 *.h
61 *.c
62 contrib
63 etc.
64
Glenn Randers-Pehrson61c32d92000-02-04 23:40:16 -060065If the line endings in the files look funny, you may wish to get the other
66distribution of libpng. It is available in both tar.gz (UNIX style line
67endings) and zip (DOS style line endings) formats.
68
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -060069If you are building libpng with MSVC, you can enter the
70libpng projects\visualc6 directory and follow the instructions in
71projects\visualc6\README.txt.
72
73You can build libpng for WindowsCE by downloading and installing
74the projects\wince directory as instructed in the projects\wince.txt file, and
Glenn Randers-Pehrsonb1828932001-06-23 08:03:17 -050075then following the instructions in the README* files. Similarly, you can
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -060076build libpng for Netware or Beos as instructed in projects\netware.txt
77or projects\beos.
Glenn Randers-Pehrsond4366722000-06-04 14:29:29 -050078
Glenn Randers-Pehrsondb66d442000-06-23 21:38:16 -050079Else enter the zlib directory and follow the instructions in zlib/README,
Glenn Randers-Pehrsonddfebd32006-02-22 09:19:25 -060080then come back here and run "configure" or choose the appropriate
81makefile.sys in the scripts directory.
Glenn Randers-Pehrsondb66d442000-06-23 21:38:16 -050082
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -060083The files that are presently available in the scripts directory
84include
85
Glenn Randers-Pehrson520a7642000-03-21 05:13:06 -060086 makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -060087 makefile.elf => Linux/ELF makefile symbol versioning,
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -060088 gcc, creates libpng12.so.0.1.2.9beta8)
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -060089 makefile.linux => Linux/ELF makefile
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -060090 (gcc, creates libpng12.so.0.1.2.9beta8)
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -060091 makefile.gcmmx => Linux/ELF makefile
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -060092 (gcc, creates libpng12.so.0.1.2.9beta8,
Glenn Randers-Pehrson520a7642000-03-21 05:13:06 -060093 uses assembler code tuned for Intel MMX platform)
94 makefile.gcc => Generic makefile (gcc, creates static libpng.a)
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -050095 makefile.knr => Archaic UNIX Makefile that converts files with
96 ansi2knr (Requires ansi2knr.c from
97 ftp://ftp.cs.wisc.edu/ghost)
Glenn Randers-Pehrson0cc2f952002-10-03 06:32:37 -050098 makefile.aix => AIX/gcc makefile
Glenn Randers-Pehrson5e5c1e12000-11-10 12:26:19 -060099 makefile.cygwin => Cygwin/gcc makefile
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600100 makefile.darwin => Darwin makefile, can use on MacosX
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500101 makefile.dec => DEC Alpha UNIX makefile
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600102 makefile.freebsd => FreeBSD makefile
Glenn Randers-Pehrson3097f612001-05-07 14:52:45 -0500103 makefile.hpgcc => HPUX makefile using gcc
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500104 makefile.hpux => HPUX (10.20 and 11.00) makefile
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600105 makefile.hp64 => HPUX (10.20 and 11.00) makefile, 64-bit
Glenn Randers-Pehrson68ea2432000-04-01 21:10:05 -0600106 makefile.ibmc => IBM C/C++ version 3.x for Win32 and OS/2 (static)
Glenn Randers-Pehrsonec61c232000-05-16 06:17:36 -0500107 makefile.intel => Intel C/C++ version 4.0 and later
Glenn Randers-Pehrson68ea2432000-04-01 21:10:05 -0600108 libpng.icc => Project file for IBM VisualAge/C++ version 4.0 or later
Glenn Randers-Pehrson4fb046a2002-04-15 09:25:51 -0500109 makefile.netbsd => NetBSD/cc makefile, uses PNGGCCRD, makes libpng.so.
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600110 makefile.ne12bsd => NetBSD/cc makefile, uses PNGGCCRD,
111 makes libpng12.so
Glenn Randers-Pehrsonc1bfe682002-03-06 22:08:00 -0600112 makefile.openbsd => OpenBSD makefile
Glenn Randers-Pehrson520a7642000-03-21 05:13:06 -0600113 makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600114 makefile.sggcc => Silicon Graphics (gcc,
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -0600115 creates libpng12.so.0.1.2.9beta8)
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500116 makefile.sunos => Sun makefile
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600117 makefile.solaris => Solaris 2.X makefile (gcc,
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -0600118 creates libpng12.so.0.1.2.9beta8)
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600119 makefile.so9 => Solaris 9 makefile (gcc,
Glenn Randers-Pehrson1ce08362006-03-08 23:35:59 -0600120 creates libpng12.so.0.1.2.9beta8)
Glenn Randers-Pehrsonc1bfe682002-03-06 22:08:00 -0600121 makefile.32sunu => Sun Ultra 32-bit makefile
122 makefile.64sunu => Sun Ultra 64-bit makefile
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500123 makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
124 makefile.mips => MIPS makefile
125 makefile.acorn => Acorn makefile
126 makefile.amiga => Amiga makefile
127 smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler
128 (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc)
129 makefile.atari => Atari makefile
130 makefile.beos => BEOS makefile for X86
Glenn Randers-Pehrson520a7642000-03-21 05:13:06 -0600131 makefile.bor => Borland makefile (uses bcc)
132 makefile.bc32 => 32-bit Borland C++ (all modules compiled in C mode)
Glenn Randers-Pehrson520a7642000-03-21 05:13:06 -0600133 makefile.tc3 => Turbo C 3.0 makefile
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500134 makefile.dj2 => DJGPP 2 makefile
135 makefile.msc => Microsoft C makefile
136 makefile.vcawin32 => makefile for Microsoft Visual C++ 5.0 and later (uses
Glenn Randers-Pehrson61c32d92000-02-04 23:40:16 -0600137 assembler code tuned for Intel MMX platform)
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500138 makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later (does
139 not use assembler code)
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500140 makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def)
141 pngos2.def => OS/2 module definition file used by makefile.os2
142 makefile.watcom => Watcom 10a+ Makefile, 32-bit flat memory model
143 makevms.com => VMS build script
Glenn Randers-Pehrson520a7642000-03-21 05:13:06 -0600144 descrip.mms => VMS makefile for MMS or MMK
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500145 SCOPTIONS.ppc => Used with smakefile.ppc
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -0600146
147Copy the file (or files) that you need from the
148scripts directory into this directory, for example
149
Glenn Randers-Pehrson860ab2b1999-10-14 07:43:10 -0500150 MSDOS example: copy scripts\makefile.msc makefile
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -0600151 UNIX example: cp scripts/makefile.std makefile
152
153Read the makefile to see if you need to change any source or
154target directories to match your preferences.
155
156Then read pngconf.h to see if you want to make any configuration
157changes.
158
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600159Then just run "make" which will create the libpng library in
160this directory and "make test" which will run a quick test that reads
161the "pngtest.png" file and writes a "pngout.png" file that should be
162identical to it. Look for "9782 zero samples" in the output of the
163test. For more confidence, you can run another test by typing
164"pngtest pngnow.png" and looking for "289 zero samples" in the output.
165Also, you can run "pngtest -m contrib/pngsuite/*.png" and compare
Glenn Randers-Pehrson6d8f3b01999-10-23 08:39:18 -0500166your output with the result shown in contrib/pngsuite/README.
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -0600167
168Most of the makefiles will allow you to run "make install" to
169put the library in its final resting place (if you want to
170do that, run "make install" in the zlib directory first if necessary).
Glenn Randers-Pehrsond1e8c862002-06-20 06:54:34 -0500171Some also allow you to run "make test-installed" after you have
Glenn Randers-Pehrson0cc2f952002-10-03 06:32:37 -0500172run "make install".
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -0600173
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600174If you encounter a compiler error message complaining about the
175lines
176 __png.h__ already includes setjmp.h;
177 __dont__ include it again.;
178This means you have compiled another module that includes setjmp.h,
179which is hazardous because the two modules might not include exactly
180the same setjmp.h. If you are sure that you know what you are doing
181and that they are exactly the same, then you can comment out or
182delete the two lines. Better yet, use the cexcept interface
183instead, as demonstrated in contrib/visupng of the libpng distribution.
184
Glenn Randers-Pehrson08a33431998-03-07 06:06:55 -0600185Further information can be found in the README and libpng.txt
Glenn Randers-Pehrson9c3ab682006-02-20 22:09:05 -0600186files, in the individual makefiles, in png.h, and the manual pages
187libpng.3 and png.5.
Glenn Randers-Pehrson917648e2004-12-02 18:14:51 -0600188
189
190Using the ./configure script -- 16 December 2002.
191=================================================
192
193
194The ./configure script should work compatibly with what scripts/makefile.*
195did, however there are some options you need to add to configure explicitly,
196which previously was done semi-automatically (if you didn't edit
197scripts/makefile.* yourself, that is)
198
199
200CFLAGS="-Wall -O3 -funroll-loops \
201-malign-loops=2 -malign-functions=2" ./configure --prefix=/usr/include \
202--with-pkgconfigdir=/usr/lib/pkgconfig --includedir=/usr/include
203
204You can alternatively specify --includedir=/usr/include, /usr/local/include,
205/usr/include/png12, or whatever.
206
207