1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
---|
2 | <html>
|
---|
3 | <head>
|
---|
4 | <meta name="generator" content=
|
---|
5 | "HTML Tidy for Solaris (vers 12 April 2005), see www.w3.org">
|
---|
6 | <title>Building the TIFF Software Distribution</title>
|
---|
7 | </head>
|
---|
8 | <body bgcolor="white">
|
---|
9 | <h1><font face="Arial, Helvetica, Sans"><img src=
|
---|
10 | "images/cramps.gif" width="159" height="203" align="left" border=
|
---|
11 | "1" hspace="6"> Building the Software Distribution</font></h1>
|
---|
12 | <ul>
|
---|
13 | <li><a href="#UNIX">Building on a UNIX system</a>.</li>
|
---|
14 | <li><a href="#MacMPW">Building on a Macintosh system with
|
---|
15 | MPW</a>.</li>
|
---|
16 | <li><a href="#MacCW">Building on a Macintosh system with
|
---|
17 | CodeWarrior</a>.</li>
|
---|
18 | <li><a href="#PC">Building on an MS-DOS or Windows system</a>.</li>
|
---|
19 | <li><a href="#DJGPP">Building on MS-DOS with the DJGPP v2
|
---|
20 | compiler</a>.</li>
|
---|
21 | <li><a href="#VMS">Building on a VMS system</a>.</li>
|
---|
22 | <li><a href="#Acorn">Building on an Acorn RISC OS system</a>.</li>
|
---|
23 | <li><a href="#Other">Building the Software on Other
|
---|
24 | Systems</a></li>
|
---|
25 | </ul>
|
---|
26 | <br clear="left">
|
---|
27 | This chapter contains step-by-step instructions on how to configure
|
---|
28 | and build the TIFF software distribution. The software is most
|
---|
29 | easily built on a UNIX system, but with a little bit of work it can
|
---|
30 | easily be built and used on other non-UNIX platforms. <a name=
|
---|
31 | "UNIX" id="UNIX"></a>
|
---|
32 | <hr>
|
---|
33 | <h2>Building on a UNIX System</h2>
|
---|
34 | To build the software on a UNIX system you need to first run the
|
---|
35 | configure shell script that is located in the top level of the
|
---|
36 | source directory. This script probes the target system for
|
---|
37 | necessary tools and functions and constructs a build environment in
|
---|
38 | which the software may be compiled. Once configuration is done, you
|
---|
39 | simply run <tt>make</tt> (or <tt>gmake</tt>) to build the software
|
---|
40 | and then <tt>make install</tt> to do the installation; for example:
|
---|
41 | <div style="margin-left: 2em">
|
---|
42 | <pre>
|
---|
43 | hyla% <b>cd tiff-v3.4beta099</b>
|
---|
44 | hyla% <b>./configure</b>
|
---|
45 | <i>...lots of messages...</i>
|
---|
46 | hyla% <b>make</b>
|
---|
47 | <i>...lots of messages...</i>
|
---|
48 | hyla# <b>make install</b>
|
---|
49 | </pre></div>
|
---|
50 | Supplied makefiles are depend on GNU <tt>make</tt> utility, so you
|
---|
51 | will need the one. Depending on your installation <b>make</b>
|
---|
52 | command may invoke standard system <tt>make</tt> and <b>gmake</b>
|
---|
53 | invoke GNU make. In this case you should use former. If you don't
|
---|
54 | have <tt>make</tt> at all, but only <tt>gmake</tt>, you should
|
---|
55 | export environment variable <tt>MAKE=gmake</tt> before
|
---|
56 | <b>./configure</b>.
|
---|
57 | <p>In general, the software is designed such that the following
|
---|
58 | should be ``<i>make-able</i>'' in each directory:</p>
|
---|
59 | <div style="margin-left: 2em">
|
---|
60 | <pre>
|
---|
61 | make [all] build stuff
|
---|
62 | make install build&install stuff
|
---|
63 | make clean remove .o files, executables and cruft
|
---|
64 | make distclean remove everything, that can be recreated
|
---|
65 | </pre></div>
|
---|
66 | Note that after running "<tt>make distclean</tt>" the
|
---|
67 | <tt>configure</tt> script must be run again to create the Makefiles
|
---|
68 | and other make-related files. <a name="BuildTrees" id=
|
---|
69 | "BuildTrees"></a>
|
---|
70 | <hr width="65%" align="right">
|
---|
71 | <h3>Build Trees</h3>
|
---|
72 | There are two schemes for configuring and building the software. If
|
---|
73 | you intend to build the software for only one target system, you
|
---|
74 | can configure the software so that it is built in the same
|
---|
75 | directories as the source code.
|
---|
76 | <div style="margin-left: 2em">
|
---|
77 | <pre>
|
---|
78 | hyla% <b>cd tiff-v3.4beta099</b>
|
---|
79 | hyla% <b>ls</b>
|
---|
80 | COPYRIGHT VERSION config.sub dist man
|
---|
81 | Makefile.in config.guess configure html port
|
---|
82 | README config.site contrib libtiff tools
|
---|
83 | hyla% <b>./configure</b>
|
---|
84 | </pre></div>
|
---|
85 | <p>Otherwise, you can configure a build tree that is parallel to
|
---|
86 | the source tree hierarchy but which contains only configured files
|
---|
87 | and files created during the build procedure.</p>
|
---|
88 | <div style="margin-left: 2em">
|
---|
89 | <pre>
|
---|
90 | hyla% <b>cd tiff-v3.4beta099</b>
|
---|
91 | hyla% <b>mkdir obj obj/mycpu</b>
|
---|
92 | hyla% <b>cd obj/mycpu</b>
|
---|
93 | hyla% <b>../../configure</b>
|
---|
94 | </pre></div>
|
---|
95 | This second scheme is useful for:
|
---|
96 | <ul>
|
---|
97 | <li>building multiple targets from a single source tree</li>
|
---|
98 | <li>building from a read-only source tree (e.g. if you receive the
|
---|
99 | distribution on CD-ROM)</li>
|
---|
100 | </ul>
|
---|
101 | <a name="ConfigOptions" id="ConfigOptions"></a>
|
---|
102 | <hr width="65%" align="right">
|
---|
103 | <h3>Configuration Options</h3>
|
---|
104 | The configuration process is critical to the proper compilation,
|
---|
105 | installation, and operation of the software. The configure script
|
---|
106 | runs a series of tests to decide whether or not the target system
|
---|
107 | supports required functionality and, if it does not, whether it can
|
---|
108 | emulate or workaround the missing functions. This procedure is
|
---|
109 | fairly complicated and, due to the nonstandard nature of most UNIX
|
---|
110 | systems, prone to error. The first time that you configure the
|
---|
111 | software for use you should check the output from the configure
|
---|
112 | script and look for anything that does not make sense for your
|
---|
113 | system.
|
---|
114 | <p>A second function of the configure script is to set the default
|
---|
115 | configuration parameters for the software. Of particular note are
|
---|
116 | the directories where the software is to be installed. By default
|
---|
117 | the software is installed in the <b>/usr/local</b> hierarchy. To
|
---|
118 | change this behaviour the appropriate parameters can be specified
|
---|
119 | on the command line to configure. Run <b>./configure --help</b> to
|
---|
120 | get a list of possible options. Installation related options are
|
---|
121 | shown below.</p>
|
---|
122 | <pre>
|
---|
123 | <tt>
|
---|
124 | Installation directories:
|
---|
125 | --prefix=PREFIX install architecture-independent files in PREFIX
|
---|
126 | [/usr/local]
|
---|
127 | --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
---|
128 | [PREFIX]
|
---|
129 |
|
---|
130 | By default, `make install' will install all the files in
|
---|
131 | `/usr/local/bin', `/usr/local/lib' etc. You can specify
|
---|
132 | an installation prefix other than `/usr/local' using `--prefix',
|
---|
133 | for instance `--prefix=$HOME'.
|
---|
134 |
|
---|
135 | For better control, use the options below.
|
---|
136 |
|
---|
137 | Fine tuning of the installation directories:
|
---|
138 | --bindir=DIR user executables [EPREFIX/bin]
|
---|
139 | --sbindir=DIR system admin executables [EPREFIX/sbin]
|
---|
140 | --libexecdir=DIR program executables [EPREFIX/libexec]
|
---|
141 | --datadir=DIR read-only architecture-independent data [PREFIX/share]
|
---|
142 | --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
---|
143 | --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
---|
144 | --localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
---|
145 | --libdir=DIR object code libraries [EPREFIX/lib]
|
---|
146 | --includedir=DIR C header files [PREFIX/include]
|
---|
147 | --oldincludedir=DIR C header files for non-gcc [/usr/include]
|
---|
148 | --infodir=DIR info documentation [PREFIX/info]
|
---|
149 | --mandir=DIR man documentation [PREFIX/man]
|
---|
150 |
|
---|
151 | Program names:
|
---|
152 | --program-prefix=PREFIX prepend PREFIX to installed program names
|
---|
153 | --program-suffix=SUFFIX append SUFFIX to installed program names
|
---|
154 | --program-transform-name=PROGRAM run sed PROGRAM on installed program names
|
---|
155 | </tt>
|
---|
156 | </pre>
|
---|
157 | <a name="Packages" id="Packages"></a>
|
---|
158 | <hr width="65%" align="right">
|
---|
159 | <h3>Configuring Optional Packages/Support</h3>
|
---|
160 | The TIFF software comes with several packages that are installed
|
---|
161 | only as needed, or only if specifically configured at the time the
|
---|
162 | configure script is run. Packages can be configured via the
|
---|
163 | <b>configure</b> script commandline parameters.
|
---|
164 | <dl>
|
---|
165 | <dt><i>Static/Shared Objects Support</i></dt>
|
---|
166 | <dd><tt>--enable-shared[=PKGS] build shared
|
---|
167 | libraries [default=yes]<br>
|
---|
168 | --enable-static[=PKGS] build static
|
---|
169 | libraries [default=yes]</tt>
|
---|
170 | <p>These options control whether or not to configure the software
|
---|
171 | to build a shared and static binaries for the TIFF library. Use of
|
---|
172 | shared libraries can significantly reduce the disk space needed for
|
---|
173 | users of the TIFF software. If shared libarries are not used then
|
---|
174 | the code is statically linked into each application that uses it.
|
---|
175 | By default both types of binaries is configured.</p>
|
---|
176 | <p><tt>--enable-rpath Enable runtime linker
|
---|
177 | paths (-R libtool option)</tt></p>
|
---|
178 | <p>Add library directories (see other options below) to the TIFF
|
---|
179 | library run-time linker path.</p>
|
---|
180 | </dd>
|
---|
181 | <dt><i>JPEG Support</i></dt>
|
---|
182 | <dd><tt>--disable-jpeg disable IJG JPEG
|
---|
183 | library usage (required for JPEG compression, enabled by default)
|
---|
184 | --with-jpeg-include-dir=DIR location of IJG
|
---|
185 | JPEG library headers
|
---|
186 | --with-jpeg-lib-dir=DIR location of IJG JPEG
|
---|
187 | library binary)</tt></dd>
|
---|
188 | <dd>The <tt>JPEG</tt> package enables support for the handling of
|
---|
189 | TIFF images with JPEG-encoded data. Support for JPEG-encoded data
|
---|
190 | requires the Independent JPEG Group (IJG) <tt>libjpeg</tt>
|
---|
191 | distribution; this software is available at <a href=
|
---|
192 | "ftp://ftp.uu.net/graphics/jpeg/">ftp.uu.net:/graphics/jpeg/</a>.
|
---|
193 | <b>configure</b> script automatically tries to search the working
|
---|
194 | IJG JPEG installation. If it fails to find library, JPEG support
|
---|
195 | will be automatically disabled.If you want specify the exact paths
|
---|
196 | to library binary and headers, use above switches for that.</dd>
|
---|
197 | <dt><i>ZIP Support</i></dt>
|
---|
198 | <dd>The <tt>ZIP</tt> support enables support for the handling of
|
---|
199 | TIFF images with deflate-encoded data. Support for deflate-encoded
|
---|
200 | data requires the freely available <tt>zlib</tt> distribution
|
---|
201 | written by Jean-loup Gailly and Mark Adler; this software is
|
---|
202 | available at <a href=
|
---|
203 | "ftp://ftp.uu.net/pub/archiving/zip/zlib/">ftp.uu.net:/pub/archiving/zip/zlib/</a>
|
---|
204 | (or try <a href=
|
---|
205 | "ftp://quest.jpl.nasa.gov/beta/zlib/">quest.jpl.nasa.gov:/beta/zlib/</a>).
|
---|
206 | If ZIP support is enabled the <tt>DIRS_LIBINC</tt> and
|
---|
207 | <tt>DIR_GZLIB</tt> parameters should also be set (see below). By
|
---|
208 | default this package is not configured.</dd>
|
---|
209 | </dl>
|
---|
210 | <a name="Sample" id="Sample"></a>
|
---|
211 | <hr width="65%" align="right">
|
---|
212 | <h3>A Sample Configuration Session</h3>
|
---|
213 | This section shows a sample configuration session and describes the
|
---|
214 | work done. The session is shown indented in a <tt>fixed width
|
---|
215 | font</tt> with user-supplied input in a <tt><b>bold font</b></tt>.
|
---|
216 | Comments are shown in a normal or <i>italic</i> font. This session
|
---|
217 | was collected on a 486 machine running BSDI 1.1.
|
---|
218 | <div style="margin-left: 2em">
|
---|
219 | <pre>
|
---|
220 | <tt>
|
---|
221 | wullbrandt% <b>mkdir tiff</b>
|
---|
222 | wullbrandt% <b>cd tiff</b>
|
---|
223 | wullbrandt% <b>ln -s /hosts/oxford/usr/people/sam/tiff src</b>
|
---|
224 | </tt>
|
---|
225 | </pre></div>
|
---|
226 | A build tree separate from the source tree is used here. In fact,
|
---|
227 | in this case the distribution is accessed from a read-only
|
---|
228 | NFS-mounted filesystem.
|
---|
229 | <div style="margin-left: 2em">
|
---|
230 | <pre>
|
---|
231 | <tt>
|
---|
232 | wullbrandt% <b>src/configure</b>
|
---|
233 | Configuring TIFF Software v3.4beta015.
|
---|
234 |
|
---|
235 | Reading site-wide parameters from ../tiff-v3.4beta015/config.site.
|
---|
236 | Reading local parameters from config.local.
|
---|
237 | Gosh, aren't you lucky to have a i386-unknown-bsdi1.1 system!
|
---|
238 | </tt>
|
---|
239 | </pre></div>
|
---|
240 | Note that configure announces the distribution version and the
|
---|
241 | deduced target configuration (<tt>i386-unknown-bsdi1.1</tt> here).
|
---|
242 | <div style="margin-left: 2em">
|
---|
243 | <pre>
|
---|
244 | <tt>
|
---|
245 | Using /usr/local/bin/gcc for a C compiler (set CC to override).
|
---|
246 | Looks like /usr/local/bin/gcc supports the -g option.
|
---|
247 | Using " -g" for C compiler options.
|
---|
248 | </tt>
|
---|
249 | </pre></div>
|
---|
250 | configure checked the normal shell search path for potential ANSI C
|
---|
251 | compilers. The compiler is selected according to it properly
|
---|
252 | compiling a small ANSI C test program. A specific compiler may be
|
---|
253 | requested by setting the <tt>CC</tt> environment variable to the
|
---|
254 | appropriate pathname, by supplying the parameter on the command
|
---|
255 | line, e.g. <tt>-with-CC=gcc</tt>, or by setting <tt>CC</tt> in a
|
---|
256 | configuration file.
|
---|
257 | <p><img src="images/info.gif" align="left" hspace="10"> <em>Note
|
---|
258 | that an ANSI C compiler is required to build the software. If a C
|
---|
259 | compiler requires options to enable ANSI C compilation, they can be
|
---|
260 | specified with the <tt>ENVOPTS</tt> parameter.</em></p>
|
---|
261 | <p>Once a compiler is selected configure checks to see if the
|
---|
262 | compiler accepts a -g option to enable the generation of debugging
|
---|
263 | symbols, and if the compiler includes an ANSI C preprocessor.</p>
|
---|
264 | <div style="margin-left: 2em">
|
---|
265 | <pre>
|
---|
266 | <tt>
|
---|
267 | Using /usr/ucb/make to configure the software.
|
---|
268 | </tt>
|
---|
269 | </pre></div>
|
---|
270 | Next various system-specific libraries that may or may not be
|
---|
271 | needed are checked for (none are needed in this case). If your
|
---|
272 | system requires a library that is not automatically included it can
|
---|
273 | be specified by setting the <tt>MACHDEPLIBS</tt> parameter.
|
---|
274 | <p><i>Creating port.h.</i> The <b>port.h</b> file is included by
|
---|
275 | all the C code in the library (but not the tools). It includes
|
---|
276 | definitions for functions and type definitions that are missing
|
---|
277 | from system include files, <tt>#defines</tt> to enable or disable
|
---|
278 | system-specific functionality, and other odds and ends.</p>
|
---|
279 | <div style="margin-left: 2em">
|
---|
280 | <pre>
|
---|
281 | <tt>
|
---|
282 | Creating libtiff/port.h with necessary definitions.
|
---|
283 | ... using LSB2MSB bit order for your i386 cpu
|
---|
284 | ... using big-endian byte order for your i386 cpu
|
---|
285 | ... configure use of mmap for memory-mapped files
|
---|
286 | ... O_RDONLY is in <fcntl.h>
|
---|
287 | ... using double for promoted floating point parameters
|
---|
288 | ... enabling use of inline functions
|
---|
289 | Done creating libtiff/port.h.
|
---|
290 | </tt>
|
---|
291 | </pre></div>
|
---|
292 | This file can take a long time to create so configure generates the
|
---|
293 | file only when it is needed, either because the file does not exist
|
---|
294 | or because a different target or compiler is to be used. Note that
|
---|
295 | running "<tt>make distclean</tt>" in the top-level directory of the
|
---|
296 | build tree will remove the <b>port.h</b> file (along with all the
|
---|
297 | other files generated by configure).
|
---|
298 | <p><i>Selecting emulated library functions.</i> Certain library
|
---|
299 | functions used by the tools are not present on all systems and can
|
---|
300 | be emulated using other system functionality. configure checks for
|
---|
301 | the presence of such functions and if they are missing, will
|
---|
302 | configure emulation code from the <b>port</b> directory to use
|
---|
303 | instead. Building the TIFF software on unsupported systems may
|
---|
304 | require adding to the code to the <b>port</b> directory.</p>
|
---|
305 | <div style="margin-left: 2em">
|
---|
306 | <pre>
|
---|
307 | <tt>
|
---|
308 | Checking system libraries for functionality to emulate.
|
---|
309 | Done checking system libraries.
|
---|
310 | </tt>
|
---|
311 | </pre></div>
|
---|
312 | If a routine must be emulated and configure does not automatically
|
---|
313 | check for it, the routine name can be specified using the
|
---|
314 | <tt>PORTFUNCS</tt> parameter. To add emulation support for a new
|
---|
315 | function <tt>foo</tt>, create a file <b>port/foo.c</b> that
|
---|
316 | contains the emulation code and then set <tt>PORTFUNCS=foo</tt> in
|
---|
317 | a configuration file or modify the configure script to
|
---|
318 | automatically check for the missing function.
|
---|
319 | <div style="margin-left: 2em">
|
---|
320 | <pre>
|
---|
321 | <tt>
|
---|
322 | Checking for Dynamic Shared Object (DSO) support.
|
---|
323 | Done checking for DSO support.
|
---|
324 | </tt>
|
---|
325 | </pre></div>
|
---|
326 | If the <tt>DSO</tt> package is enabled (<tt>DSO=auto</tt> or
|
---|
327 | <tt>DSO=yes</tt>), then configure will verify the system and
|
---|
328 | compiler are capable of constructing SVR4-style DSO's in the
|
---|
329 | expected way. Note that while a system may support DSO's the
|
---|
330 | compiler may not be capable of generating the required
|
---|
331 | position-independent code and/or the compiler may not pass the
|
---|
332 | needed options through to the loader.
|
---|
333 | <p><i>Selecting utility programs.</i> configure locates various
|
---|
334 | system utility programs that are used during installation of the
|
---|
335 | software.</p>
|
---|
336 | <div style="margin-left: 2em">
|
---|
337 | <pre>
|
---|
338 | <tt>
|
---|
339 | Selecting programs used during installation.
|
---|
340 | Looks like mv supports the -f option to force a move.
|
---|
341 | Looks like /bin/ln supports the -s option to create a symbolic link.
|
---|
342 | Done selecting programs.
|
---|
343 | </tt>
|
---|
344 | </pre></div>
|
---|
345 | <p><i>Selecting default configuration parameters.</i> The remainder
|
---|
346 | of the work done by configure involves setting up configuration
|
---|
347 | parameters that control the placement and setup of files during the
|
---|
348 | installation procedure.</p>
|
---|
349 | <div style="margin-left: 2em">
|
---|
350 | <pre>
|
---|
351 | <tt>
|
---|
352 | Selecting default TIFF configuration parameters.
|
---|
353 |
|
---|
354 | Looks like manual pages go in /usr/contrib/man.
|
---|
355 | Looks like manual pages should be installed with bsd-nroff-gzip-0.gz.
|
---|
356 |
|
---|
357 | TIFF configuration parameters are:
|
---|
358 |
|
---|
359 | [ 1] Directory for tools: /usr/contrib/bin
|
---|
360 | [ 2] Directory for libraries: /usr/contrib/lib
|
---|
361 | [ 3] Directory for include files: /usr/contrib/include
|
---|
362 | [ 4] Directory for manual pages: /usr/contrib/man
|
---|
363 | [ 5] Manual page installation scheme: bsd-nroff-gzip-0.gz
|
---|
364 |
|
---|
365 | Are these ok [yes]?
|
---|
366 | </tt>
|
---|
367 | </pre></div>
|
---|
368 | At this point you can interactively modify any of the displayed
|
---|
369 | parameters. Hitting a carriage return or typing <tt>yes</tt> will
|
---|
370 | accept the current parameters. Typing one of the number displayed
|
---|
371 | along the left hand side causes configure to prompt for a new value
|
---|
372 | of the specified parameter. Typing anything else causes configure
|
---|
373 | to prompt for a new value <em>for each parameter</em>. In general
|
---|
374 | hitting carriage return will accept the current value and typing
|
---|
375 | anything that is unacceptable will cause a help message to be
|
---|
376 | displayed. A description of each of the configuration parameters is
|
---|
377 | given below.
|
---|
378 | <p>Once acceptable parameters are setup configure will generate all
|
---|
379 | the files that depend on these parameters. Note that certain files
|
---|
380 | may or may not be created based on the configuration of optional
|
---|
381 | packages and/or the functions supported by target system.</p>
|
---|
382 | <div style="margin-left: 2em">
|
---|
383 | <pre>
|
---|
384 | <tt>
|
---|
385 | Creating Makefile from ../tiff-v3.4beta015/Makefile.in
|
---|
386 | Creating libtiff/Makefile from ../tiff-v3.4beta015/libtiff/Makefile.in
|
---|
387 | Creating man/Makefile from ../tiff-v3.4beta015/man/Makefile.in
|
---|
388 | Creating tools/Makefile from ../tiff-v3.4beta015/tools/Makefile.in
|
---|
389 | Creating port/install.sh from ../tiff-v3.4beta015/port/install.sh.in
|
---|
390 | Done.
|
---|
391 | </tt>
|
---|
392 | </pre></div>
|
---|
393 | <a name="DSOSupport" id="DSOSupport"></a>
|
---|
394 | <hr>
|
---|
395 | <h3>Shared Library Support</h3>
|
---|
396 | It is desirable to make the TIFF library be a shared object on
|
---|
397 | systems that have support for shared libraries. Unfortunately the
|
---|
398 | rules to use to build a shared library vary between operating
|
---|
399 | systems and even compilers. The distributed software includes
|
---|
400 | support for building a shared version of the library on a number of
|
---|
401 | different systems. This support is split between rules in the file
|
---|
402 | <b>libtiff/Makefile.in</b> that construct the shared library and
|
---|
403 | checks done by the <tt>configure</tt> script to verify that the
|
---|
404 | expected rules are supported by compilation tools for the target
|
---|
405 | system.
|
---|
406 | <p>To add new support for building a shared library both these
|
---|
407 | files must be updated. In the configure script search for the
|
---|
408 | section where the autoconfiguration setting of the <tt>DSO</tt>
|
---|
409 | parameter is handled and add a new case for the target system that
|
---|
410 | sets the <tt>DSOSUF</tt>, <tt>DSOLD</tt>, <tt>DSOOPTS</tt>, and
|
---|
411 | <tt>LIBCOPTS</tt> options as appropriate for the system.
|
---|
412 | <tt>DSOSUF</tt> specifies the filename suffix used for the shared
|
---|
413 | library (e.g. ``.so'' for Dynamic Shared Objects on most SVR4-based
|
---|
414 | systems). <tt>DSOLD</tt> specifies the program to use to build the
|
---|
415 | shared library from a compiled object file; typically ``${LD}''
|
---|
416 | though on some systems it is better to use the C compiler directly
|
---|
417 | so system-dependent options and libraries are automatically
|
---|
418 | supplied. <tt>DSOOPTS</tt> are options that must be specified to
|
---|
419 | <tt>DSOLD</tt> when building the shared library. <tt>LIBCOPTS</tt>
|
---|
420 | are options to pass to the C compiler when constructing a
|
---|
421 | relocatable object file to include in a shared library; e.g. ``-K
|
---|
422 | PIC'' on a Sun system. The <tt>DSO</tt> parameter must also be set
|
---|
423 | to a unique label that identifies the target system and compilation
|
---|
424 | tools. This label is used to select a target in
|
---|
425 | <b>libtiff/Makefile.in</b> to do the actual work in building the
|
---|
426 | shared library. Finally, to complete support for the shared library
|
---|
427 | added the appropriate rules to <b>libtiff/Makefile.in</b> under the
|
---|
428 | target specified in the <tt>configure</tt> script. <a name="PC" id=
|
---|
429 | "PC"></a></p>
|
---|
430 | <hr>
|
---|
431 | <h2>Building the Software under Windows 95/98/NT/2000 with MS
|
---|
432 | VC++</h2>
|
---|
433 | With Microsoft Visual C++ installed, and properly configured for
|
---|
434 | commandline use (you will likely need to source VCVARS32.BAT in
|
---|
435 | AUTOEXEC.bAT or somewhere similar) you should be able to use the
|
---|
436 | provided <tt>makefile.vc</tt>.
|
---|
437 | <p>The source package is delivered using Unix line termination
|
---|
438 | conventions, which work with MSVC but do not work with Windows
|
---|
439 | 'notepad'. If you use unzip from the <a href=
|
---|
440 | "http://www.info-zip.org/pub/infozip/">Info-Zip</a> package, you
|
---|
441 | can extract the files using Windows normal line termination
|
---|
442 | conventions with a command similar to:</p>
|
---|
443 | <pre>
|
---|
444 | unzip -aa -a tiff-3.7.4.zip
|
---|
445 | </pre>
|
---|
446 | <p>By default libtiff expects that a pre-built zlib and jpeg
|
---|
447 | library are provided by the user. If this is not the case, then you
|
---|
448 | may edit libtiff\tiffconf.h using a text editor (e.g. notepad) and
|
---|
449 | comment out the entries for JPEG_SUPPORT, PIXARLOG_SUPPORT, and
|
---|
450 | ZIP_SUPPORT. Ignore the comment at the top of the file which says
|
---|
451 | that it has no influence on the build, because the statement is not
|
---|
452 | true for Windows. However, by taking this approach, libtiff will
|
---|
453 | not be able to open some TIFF files.</p>
|
---|
454 | <p>To build using the provided makefile.vc you may use:</p>
|
---|
455 | <pre>
|
---|
456 | C:\tiff-3.7.4> nmake /f makefile.vc clean
|
---|
457 | C:\tiff-3.7.4> nmake /f makefile.vc
|
---|
458 |
|
---|
459 | or (the hard way)
|
---|
460 |
|
---|
461 | C:\tiff-3.7.4> cd port
|
---|
462 | C:\tiff-3.7.4\port> nmake /f makefile.vc clean
|
---|
463 | C:\tiff-3.7.4\port> nmake /f makefile.vc
|
---|
464 | C:\tiff-3.7.4> cd ../libtiff
|
---|
465 | C:\tiff-3.7.4\libtiff> nmake /f makefile.vc clean
|
---|
466 | C:\tiff-3.7.4\libtiff> nmake /f makefile.vc
|
---|
467 | C:\tiff-3.7.4\libtiff> cd ..\tools
|
---|
468 | C:\tiff-3.7.4\tools> nmake /f makefile.vc clean
|
---|
469 | C:\tiff-3.7.4\tools> nmake /f makefile.vc
|
---|
470 | </pre>
|
---|
471 | <p>This will build the library file
|
---|
472 | <tt>libtiff\libtiff\libtiff.lib</tt>. This can be used in Win32
|
---|
473 | programs. You may want to adjust the build options before start
|
---|
474 | compiling. All parameters contained in the <tt>nmake.opt</tt>
|
---|
475 | file.This is a plain text file you can open with your favorite text
|
---|
476 | editor.</p>
|
---|
477 | <p>The makefile also builds a DLL (libtiff.dll) with an associated
|
---|
478 | import library (libtiff_i.lib). Any builds using libtiff will need
|
---|
479 | to include the LIBTIFF\LIBTIFF directory in the include path.</p>
|
---|
480 | <p>The <tt>libtiff\tools\makefile.vc</tt> should build .exe's for
|
---|
481 | all the standard TIFF tool programs.</p>
|
---|
482 | <p><a name="DJGPP" id="DJGPP"></a></p>
|
---|
483 | <hr>
|
---|
484 | <h2>Building the Software under MS/DOS with the DJGPP v2
|
---|
485 | compiler</h2>
|
---|
486 | [<i>From the file <b>contrib/dosdjgpp/README</b>.</i>]
|
---|
487 | <p>The directory <b>contrib/dosdjgpp</b> contains the files
|
---|
488 | necessary to build the library and tools with the DJGPP v2 compiler
|
---|
489 | under MSDOS.</p>
|
---|
490 | <p>All you have to do is copy the files in the directory into the
|
---|
491 | respective directories and run make. If you want, you can use the
|
---|
492 | <b>conf.bat</b> script to do that for you, make sure that the file
|
---|
493 | is stored with MSDOS text EOL-convention (CR/LF), otherwise the
|
---|
494 | <b>command.com</b> will not do anything.</p>
|
---|
495 | <p>Note that you probably will not be able to build the library
|
---|
496 | with the v1.x versions of djgpp, due to two problems. First, the
|
---|
497 | top makefile calls a sub-make for each directory and you are likely
|
---|
498 | to run out of memory, since each recursive invocation of a djgpp
|
---|
499 | v1.x program requires about 130k, to avoid that, you can enter the
|
---|
500 | directories manually and call make (well, there are only two dirs).
|
---|
501 | The 2nd problem is that djgpp 1.x doesn't call the coff2exe
|
---|
502 | (stubify) program when creating an executable. This means that all
|
---|
503 | programs compiled are not converted to exe and consequently are not
|
---|
504 | available for calling directly. For the tools directory, you can
|
---|
505 | just call coff2exe for each program after make finishes, but in the
|
---|
506 | libtiff directory, a few programs are created during the make
|
---|
507 | process that have to be called for make to continue (e.g.
|
---|
508 | mkg3states). Make will probably report an error at each such stage.
|
---|
509 | To fix that, either add a coff2exe call before each program is
|
---|
510 | called or call coff2exe manually and rerun make (there 2-3 such
|
---|
511 | programs). <a name="MacMPW" id="MacMPW"></a></p>
|
---|
512 | <hr>
|
---|
513 | <h2>Building the Software on a Macintosh with MPW</h2>
|
---|
514 | The directory <b>contrib/mac-mpw</b> contains support for compiling
|
---|
515 | the library and tools under the MPW Shell on a Macintosh system.
|
---|
516 | This support was contributed by Niles Ritter (<a href=
|
---|
517 | "mailto:ndr@tazboy.jpl.nasa.gov">ndr@tazboy.jpl.nasa.gov</a>).
|
---|
518 | <p>[<i>From the file <b>contrib/mac-mpw/README</b>.</i>]</p>
|
---|
519 | <p>This directory contains all of the utilities and makefile source
|
---|
520 | to build the LIBTIFF library and tools from the MPW Shell. The file
|
---|
521 | BUILD.mpw in this directory is an executable script which uses all
|
---|
522 | of these files to create the MPW makefiles and run them.</p>
|
---|
523 | <p>The <file>.make files are not MPW makefiles as such, but
|
---|
524 | are when run through the "mactrans" program, which turns the ascii
|
---|
525 | "%nn" metacharacters into the standard weird MPW make
|
---|
526 | characters.</p>
|
---|
527 | <p>This translation trick is necessary to protect the files when
|
---|
528 | they are put into unix tarfiles, which tend to mangle the special
|
---|
529 | characters. <a name="MacCW" id="MacCW"></a></p>
|
---|
530 | <hr>
|
---|
531 | <h2>Building the Software on a Macintosh with CodeWarrior</h2>
|
---|
532 | The directory <b>contrib/mac-cw</b> contains support for compiling
|
---|
533 | the library and tools with MetroWerks CodeWarrior 6.1 on a
|
---|
534 | Macintosh system. This support was contributed by Niles Ritter
|
---|
535 | (<a href=
|
---|
536 | "mailto:ndr@tazboy.jpl.nasa.gov">ndr@tazboy.jpl.nasa.gov</a>).
|
---|
537 | <p>[<i>From the file <b>contrib/mac-cw/README</b>.</i>] In this
|
---|
538 | directory you will find a Makefile.script Applescript file, which
|
---|
539 | should be run in order to build the libtiff code using MetroWerks
|
---|
540 | CodeWarrior. Refer to the "metrowerks.note" instructions on
|
---|
541 | building the library for 68k and PowerPC native code, as well as
|
---|
542 | building some of the libtiff tools, which are rather unix-like, but
|
---|
543 | at least give an example of how to link everything together.
|
---|
544 | <a name="VMS" id="VMS"></a></p>
|
---|
545 | <hr>
|
---|
546 | <h2>Building the Software on a VMS System</h2>
|
---|
547 | The VMS port was done by Karsten Spang (<a href=
|
---|
548 | "mailto:krs@kampsax.dk">krs@kampsax.dk</a>), who also "sort of"
|
---|
549 | maintains it. The VMS specific files are not in the main
|
---|
550 | directories. Instead they are placed under
|
---|
551 | <tt>[.CONTRIB.VMS...]</tt> in the distribution tree. Installation:
|
---|
552 | It is assumed that you have unpacked the tar file into a VMS
|
---|
553 | directory tree, in this text called DISK:[TIFF].
|
---|
554 | <ol>
|
---|
555 | <li>Move the VMS specific files to their proper directories.
|
---|
556 | <pre>
|
---|
557 | $ SET DEFAULT DISK:[TIFF.CONTRIB.VMS]
|
---|
558 | $ RENAME [.LIBTIFF]*.* [-.-.LIBTIFF]
|
---|
559 | $ RENAME [.TOOLS]*.* [-.-.TOOLS]
|
---|
560 | </pre></li>
|
---|
561 | <li>Compile the library.
|
---|
562 | <pre>
|
---|
563 | $ SET DEFAULT DISK:[TIFF.LIBTIFF]
|
---|
564 | $ @MAKEVMS
|
---|
565 | </pre></li>
|
---|
566 | <li>Compile the tools.
|
---|
567 | <pre>
|
---|
568 | $ SET DEFAULT DISK:[TIFF.TOOLS]
|
---|
569 | $ @MAKEVMS
|
---|
570 | </pre></li>
|
---|
571 | <li>Define the programs.
|
---|
572 | <pre>
|
---|
573 | $ DEFINE TIFFSHR DISK:[TIFF.LIBTIFF]TIFFSHR
|
---|
574 | $ FAX2PS :==$DISK:[TIFF.TOOLS]FAX2PS
|
---|
575 | $ FAX2TIFF :==$DISK:[TIFF.TOOLS]FAX2TIFF
|
---|
576 | $ GIF2TIFF :==$DISK:[TIFF.TOOLS]GIF2TIFF
|
---|
577 | $ PAL2RGB :==$DISK:[TIFF.TOOLS]PAL2RGB
|
---|
578 | $ PPM2TIFF :==$DISK:[TIFF.TOOLS]PPM2TIFF
|
---|
579 | $ RAS2TIFF :==$DISK:[TIFF.TOOLS]RAS2TIFF
|
---|
580 | $ RGB2YCBCR :==$DISK:[TIFF.TOOLS]RGB2YCBCR
|
---|
581 | $ THUMBNAIL :==$DISK:[TIFF.TOOLS]THUMBNAIL
|
---|
582 | $ TIFF2BW :==$DISK:[TIFF.TOOLS]TIFF2BW
|
---|
583 | $ TIFF2PS :==$DISK:[TIFF.TOOLS]TIFF2PS
|
---|
584 | $ TIFFCMP :==$DISK:[TIFF.TOOLS]TIFFCMP
|
---|
585 | $ TIFFCP :==$DISK:[TIFF.TOOLS]TIFFCP
|
---|
586 | $ TIFFDITHER:==$DISK:[TIFF.TOOLS]TIFFDITHER
|
---|
587 | $ TIFFDUMP :==$DISK:[TIFF.TOOLS]TIFFDUMP
|
---|
588 | $ TIFFINFO :==$DISK:[TIFF.TOOLS]TIFFINFO
|
---|
589 | $ TIFFMEDIAN:==$DISK:[TIFF.TOOLS]TIFFMEDIAN
|
---|
590 | $ TIFFSPLIT :==$DISK:[TIFF.TOOLS]TIFFSPLIT
|
---|
591 | $ YCBCR :==$DISK:[TIFF.TOOLS]YCBCR
|
---|
592 | </pre></li>
|
---|
593 | </ol>
|
---|
594 | You will want to add these lines to your <tt>LOGIN.COM</tt> file,
|
---|
595 | after changing the name of the directory that you have used on your
|
---|
596 | machine.
|
---|
597 | <p>This release has been tested on OpenVMS/VAX 5.5-2, using VAX C
|
---|
598 | 3.2. A previous release was tested under OpenVMS/AXP ?.? using DEC
|
---|
599 | C ?.?, it is believed that this release as well works on AXP. The
|
---|
600 | code contains some GNU C specific things. This does *not* imply,
|
---|
601 | however, that the VAX/GCC configuration has been tested, *it has
|
---|
602 | not*.</p>
|
---|
603 | <p>The command procedures (<tt>MAKEVMS.COM</tt>) for building the
|
---|
604 | library and tools, is believed to choose the correct options for
|
---|
605 | the VAX and AXP cases automatically.</p>
|
---|
606 | <p>On the AXP, IEEE floating point is used by default. If you want
|
---|
607 | VAX floating point, remove the <tt>/FLOAT=IEEE_FLOAT</tt>
|
---|
608 | qualifier, and change <tt>HAVE_IEEEFP=1</tt> to
|
---|
609 | <tt>HAVE_IEEEFP=0</tt> in the <tt>MAKEVMS.COM</tt> files in both
|
---|
610 | the <b>libtiff</b> and <b>tools</b> directories.</p>
|
---|
611 | <h3>Compiling your own program on a VMS system:</h3>
|
---|
612 | When compiling a source file in which you <tt>"#include
|
---|
613 | <tiffio.h>"</tt>, use the following command
|
---|
614 | <pre>
|
---|
615 | $ CC/INCLUDE=DISK:[TIFF.LIBTIFF]
|
---|
616 | </pre>
|
---|
617 | This ensures that the header file is found. On the AXP, also add
|
---|
618 | <tt>/FLOAT=IEEE_FLOAT</tt> (if used when building the library).
|
---|
619 | <h3>Linking your own program to the TIFF library on a VMS
|
---|
620 | system:</h3>
|
---|
621 | You can link to the library in two ways: Either using the shareable
|
---|
622 | library, or using the object library. On the VAX these
|
---|
623 | possibilities are:
|
---|
624 | <ol>
|
---|
625 | <li>Using the shareable TIFF library.
|
---|
626 | <pre>
|
---|
627 | $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS,SYS$INPUT:/OPTIONS
|
---|
628 | SYS$SHARE:VAXCRTL/SHAREABLE
|
---|
629 | </pre></li>
|
---|
630 | <li>Using the TIFF object library.
|
---|
631 | <pre>
|
---|
632 | $ LINK MY_PROGRAM, -
|
---|
633 | DISK:[TIFF.LIBTIFF]TIFF/LIBRARY/INCLUDE=(TIF_FAX3SM,TIF_CODEC), -
|
---|
634 | SYS$INPUT:/OPTIONS
|
---|
635 | SYS$SHARE:VAXCRTL/SHAREABLE
|
---|
636 | </pre></li>
|
---|
637 | </ol>
|
---|
638 | On AXP (and possibly also using DEC C on VAX) the corresponding
|
---|
639 | commands are
|
---|
640 | <ol>
|
---|
641 | <li>Using the shareable TIFF library.
|
---|
642 | <pre>
|
---|
643 | $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS
|
---|
644 | </pre></li>
|
---|
645 | <li>Using the TIFF object library.
|
---|
646 | <pre>
|
---|
647 | $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/LIBRARY
|
---|
648 | </pre></li>
|
---|
649 | </ol>
|
---|
650 | Method 1 uses the shortest link time and smallest <tt>.EXE</tt>
|
---|
651 | files, but it requires that <tt>TIFFSHR</tt> is defined as above at
|
---|
652 | link time and <strong>at run time</strong>. Using the compilation
|
---|
653 | procedure above, the tools are linked in this way.
|
---|
654 | <p>Method 2 gives somewhat longer link time and larger
|
---|
655 | <tt>.EXE</tt> files, but does not require <tt>TIFFSHR</tt> to be
|
---|
656 | defined. This method is recommended if you want to run your program
|
---|
657 | on another machine, and for some reason don't want to have the
|
---|
658 | library on that machine. If you plan to have more than one program
|
---|
659 | (including the tools) on the machine, it is recommended that you
|
---|
660 | copy the library to the other machine and use method 1. <a name=
|
---|
661 | "Acorn" id="Acorn"></a></p>
|
---|
662 | <hr>
|
---|
663 | <h2>Building the Software on an Acorn RISC OS system</h2>
|
---|
664 | The directory <b>contrib/acorn</b> contains support for compiling
|
---|
665 | the library under Acorn C/C++ under Acorn's RISC OS 3.10 or above.
|
---|
666 | Subsequent pathnames will use the Acorn format: The full-stop or
|
---|
667 | period character is a pathname delimeter, and the slash character
|
---|
668 | is not interpreted; the reverse position from Unix. Thus
|
---|
669 | "libtiff/tif_acorn.c" becomes "libtiff.tif_acorn/c".
|
---|
670 | <p>This support was contributed by Peter Greenham. (<a href=
|
---|
671 | "mailto:peter@enlarion.demon.co.uk">peter@enlarion.demon.co.uk</a>).</p>
|
---|
672 | <h3>Installing LibTIFF:</h3>
|
---|
673 | <p>LIBTIFF uses several files which have names longer than the
|
---|
674 | normal RISC OS maximum of ten characters. This complicates matters.
|
---|
675 | Maybe one day Acorn will address the problem and implement long
|
---|
676 | filenames properly. Until then this gets messy, especially as I'm
|
---|
677 | trying to do this with obeyfiles and not have to include binaries
|
---|
678 | in this distribution.</p>
|
---|
679 | <p>First of all, ensure you have Truncate configured on (type
|
---|
680 | <tt>*Configure Truncate On</tt>)</p>
|
---|
681 | <p>Although it is, of course, preferable to have long filenames,
|
---|
682 | LIBTIFF can be installed with short filenames, and it will compile
|
---|
683 | and link without problems. However, <i>getting</i> it there is more
|
---|
684 | problematic. <b>contrib.acorn.install</b> is an installation
|
---|
685 | obeyfile which will create a normal Acorn-style library from the
|
---|
686 | source (ie: with c, h and o folders etc.), but needs the
|
---|
687 | distribution library to have been unpacked into a location which is
|
---|
688 | capable of supporting long filenames, even if only temporarily.</p>
|
---|
689 | <p>My recommendation, until Acorn address this problem properly, is
|
---|
690 | to use Jason Tribbeck's <a href=
|
---|
691 | "ftp://ftp.demon.co.uk/pub/mirrors/hensa/micros/arch/riscos/c/c020/longfiles.arc">
|
---|
692 | LongFilenames</a>, or any other working system that gives you long
|
---|
693 | filenames, like a nearby NFS server for instance.</p>
|
---|
694 | <p>If you are using Longfilenames, even if only temporarily to
|
---|
695 | install LIBTIFF, unpack the TAR into a RAMDisc which has been
|
---|
696 | longfilenamed (ie: <tt>*addlongfs ram</tt>) and then install from
|
---|
697 | there to the hard disk. Unfortunately Longfilenames seems a bit
|
---|
698 | unhappy about copying a bunch of long-named files across the same
|
---|
699 | filing system, but is happy going between systems. You'll need to
|
---|
700 | create a ramdisk of about 2Mb.</p>
|
---|
701 | <p>Now you can run the installation script I've supplied (in
|
---|
702 | contrib.acorn), which will automate the process of installing
|
---|
703 | LIBTIFF as an Acorn-style library. The syntax is as follows:</p>
|
---|
704 | <p><tt>install <source_dir> <dest_dir></tt></p>
|
---|
705 | <p>Install will then create <dest_dir> and put the library in
|
---|
706 | there. For example, having used LongFilenames on the RAMDisk and
|
---|
707 | unpacked the library into there, you can then type:</p>
|
---|
708 | <p><tt>Obey RAM::RamDisc0.$.contrib.acorn.install RAM::RamDisc0.$
|
---|
709 | ADFS::4.$.LIBTIFF</tt></p>
|
---|
710 | <p>It doesn't matter if the destination location can cope with long
|
---|
711 | filenames or not. The filenames will be truncated if necessary
|
---|
712 | (*Configure Truncate On if you get errors) and all will be
|
---|
713 | well.</p>
|
---|
714 | <h3>Compiling LibTIFF:</h3>
|
---|
715 | <p>Once the LibTIFF folder has been created and the files put
|
---|
716 | inside, making the library should be just a matter of running
|
---|
717 | '<b>SetVars</b>' to set the appropriate system variables, then
|
---|
718 | running '<b>Makefile</b>'.</p>
|
---|
719 | <p><b>OSLib</b></p>
|
---|
720 | <p><a href=
|
---|
721 | "ftp://ftp.acorn.co.uk/pub/riscos/releases/oslib/oslib.arc">OSLib</a>
|
---|
722 | is a comprehensive API for RISC OS machines, written by Jonathan
|
---|
723 | Coxhead of Acorn Computers (although OSLib is not an official Acorn
|
---|
724 | product). Using the OSLib SWI veneers produces code which is more
|
---|
725 | compact and more efficient than code written using _kernel_swi or
|
---|
726 | _swi. The Acorn port of LibTIFF can take advantage of this if
|
---|
727 | present. Edit the Makefile and go to the Static dependencies
|
---|
728 | section. The first entry is:</p>
|
---|
729 | <pre>
|
---|
730 | # Static dependencies:
|
---|
731 | @.o.tif_acorn: @.c.tif_acorn
|
---|
732 | cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn
|
---|
733 | </pre>
|
---|
734 | <p>Change the cc line to:</p>
|
---|
735 | <pre>
|
---|
736 | cc $(ccflags) -DINCLUDE_OSLIB -o @.o.tif_acorn @.c.tif_acorn
|
---|
737 | </pre>
|
---|
738 | <p>Remember, however, that OSLib is only <i>recommended</i> for
|
---|
739 | efficiency's sake. It is not required. <a name="Other" id=
|
---|
740 | "Other"></a></p>
|
---|
741 | <hr>
|
---|
742 | <h2>Building the Software on Other Systems</h2>
|
---|
743 | This section contains information that might be useful if you are
|
---|
744 | working on a non-UNIX system that is not directly supported. All
|
---|
745 | library-related files described below are located in the
|
---|
746 | <b>libtiff</b> directory.
|
---|
747 | <p>The library requires two files that are generated
|
---|
748 | <i>on-the-fly</i>. The file <b>tif_fax3sm.c</b> has the state
|
---|
749 | tables for the Group 3 and Group 4 decoders. This file is generated
|
---|
750 | by the <tt>mkg3states</tt> program on a UNIX system; for
|
---|
751 | example,</p>
|
---|
752 | <div style="margin-left: 2em">
|
---|
753 | <pre>
|
---|
754 | <tt>
|
---|
755 | cd libtiff
|
---|
756 | cc -o mkg3states mkg3states.c
|
---|
757 | rm -f tif_fax3sm.c
|
---|
758 | ./mkg3states -c const tif_fax3sm.c
|
---|
759 | </tt>
|
---|
760 | </pre></div>
|
---|
761 | The <tt>-c</tt> option can be used to control whether or not the
|
---|
762 | resutling tables are generated with a <tt>const</tt> declaration.
|
---|
763 | The <tt>-s</tt> option can be used to specify a C storage class for
|
---|
764 | the table declarations. The <tt>-b</tt> option can be used to force
|
---|
765 | data values to be explicitly bracketed with ``{}'' (apparently
|
---|
766 | needed for some MS-Windows compilers); otherwise the structures are
|
---|
767 | emitted in as compact a format as possible. Consult the source code
|
---|
768 | for this program if you have questions.
|
---|
769 | <p>The second file required to build the library, <b>version.h</b>,
|
---|
770 | contains the version information returned by the
|
---|
771 | <tt>TIFFGetVersion</tt> routine. This file is built on most systems
|
---|
772 | using the <tt>mkversion</tt> program and the contents of the
|
---|
773 | <tt>VERSION</tt> and <tt>tiff.alpha</tt> files; for example,</p>
|
---|
774 | <div style="margin-left: 2em">
|
---|
775 | <pre>
|
---|
776 | cd libtiff
|
---|
777 | cc -o mkversion mkversion.c
|
---|
778 | rm -f version.h
|
---|
779 | ./mkversion -v ../VERSION -a ../dist/tiff.alpha version.h
|
---|
780 | </pre></div>
|
---|
781 | <p>Otherwise, when building the library on a non-UNIX system be
|
---|
782 | sure to consult the files <b>tiffcomp.h</b> and <b>tiffconf.h</b>.
|
---|
783 | The former contains system compatibility definitions while the
|
---|
784 | latter is provided so that the software configuration can be
|
---|
785 | controlled on systems that do not support the make facility for
|
---|
786 | building the software.</p>
|
---|
787 | <p>Systems without a 32-bit compiler may not be able to handle some
|
---|
788 | of the codecs in the library; especially the Group 3 and 4 decoder.
|
---|
789 | If you encounter problems try disabling support for a particular
|
---|
790 | codec; consult the <a href=
|
---|
791 | "internals.html#Config">documentation</a>.</p>
|
---|
792 | <p>Programs in the tools directory are written to assume an ANSI C
|
---|
793 | compilation environment. There may be a few POSIX'isms as well. The
|
---|
794 | code in the <b>port</b> directory is provided to emulate routines
|
---|
795 | that may be missing on some systems. On UNIX systems the
|
---|
796 | <tt>configure</tt> script automatically figures out which routines
|
---|
797 | are not present on a system and enables the use of the equivalent
|
---|
798 | emulation routines from the <b>port</b> directory. It may be
|
---|
799 | necessary to manually do this work on a non-UNIX system. <a name=
|
---|
800 | "Testing" id="Testing"></a></p>
|
---|
801 | <hr>
|
---|
802 | <h2>Checking out the Software</h2>
|
---|
803 | <p>Assuming you have working versions of <tt>tiffgt</tt> and
|
---|
804 | <tt>tiffsv</tt>, you can just use them to view any of the sample
|
---|
805 | images available for testing (see the <a href="images.html">section
|
---|
806 | on obtaining the test images</a>). Otherwise, you can do a cursory
|
---|
807 | check of the library with the <tt>tiffcp</tt> and <tt>tiffcmp</tt>
|
---|
808 | programs. For example,</p>
|
---|
809 | <div style="margin-left: 2em">
|
---|
810 | <pre>
|
---|
811 | tiffcp -lzw cramps.tif x.tif
|
---|
812 | tiffcmp cramps.tif x.tif
|
---|
813 | </pre></div>
|
---|
814 | <p>(<tt>tiffcmp</tt> should be silent if the files compare
|
---|
815 | correctly). <a name="TOC" id="TOC"></a></p>
|
---|
816 | <hr>
|
---|
817 | <h2>Table of Contents</h2>
|
---|
818 | The following files makup the core library:
|
---|
819 | <pre>
|
---|
820 | libtiff/tiff.h TIFF spec definitions
|
---|
821 | libtiff/tiffcomp.h non-UNIX OS-compatibility definitions
|
---|
822 | libtiff/tiffconf.h non-UNIX configuration definitions
|
---|
823 | libtiff/tiffio.h public TIFF library definitions
|
---|
824 | libtiff/tiffiop.h private TIFF library definitions
|
---|
825 | libtiff/t4.h CCITT Group 3/4 code tables+definitions
|
---|
826 | libtiff/tif_dir.h private defs for TIFF directory handling
|
---|
827 | libtiff/tif_fax3.h CCITT Group 3/4-related definitions
|
---|
828 | libtiff/tif_predict.h private defs for Predictor tag support
|
---|
829 | libtiff/uvcode.h LogL/LogLuv codec-specific definitions
|
---|
830 | libtiff/version.h version string (generated by Makefile)
|
---|
831 |
|
---|
832 | libtiff/tif_acorn.c Acorn-related OS support
|
---|
833 | libtiff/tif_apple.c Apple-related OS support
|
---|
834 | libtiff/tif_atari.c Atari-related OS support
|
---|
835 | libtiff/tif_aux.c auxilary directory-related functions
|
---|
836 | libtiff/tif_close.c close an open TIFF file
|
---|
837 | libtiff/tif_codec.c configuration table of builtin codecs
|
---|
838 | libtiff/tif_compress.c compression scheme support
|
---|
839 | libtiff/tif_dir.c directory tag interface code
|
---|
840 | libtiff/tif_dirinfo.c directory known tag support code
|
---|
841 | libtiff/tif_dirread.c directory reading code
|
---|
842 | libtiff/tif_dirwrite.c directory writing code
|
---|
843 | libtiff/tif_dumpmode.c "no" compression codec
|
---|
844 | libtiff/tif_error.c library error handler
|
---|
845 | libtiff/tif_fax3.c CCITT Group 3 and 4 codec
|
---|
846 | libtiff/tif_fax3sm.c G3/G4 state tables (generated by mkg3states)
|
---|
847 | libtiff/tif_flush.c i/o and directory state flushing
|
---|
848 | libtiff/tif_getimage.c TIFFRGBAImage support
|
---|
849 | libtiff/tif_jpeg.c JPEG codec (interface to the IJG distribution)
|
---|
850 | libtiff/tif_luv.c SGI LogL/LogLuv codec
|
---|
851 | libtiff/tif_lzw.c LZW codec
|
---|
852 | libtiff/tif_msdos.c MSDOS-related OS support
|
---|
853 | libtiff/tif_next.c NeXT 2-bit scheme codec (decoding only)
|
---|
854 | libtiff/tif_open.c open and simply query code
|
---|
855 | libtiff/tif_packbits.c Packbits codec
|
---|
856 | libtiff/tif_pixarlog.c Pixar codec
|
---|
857 | libtiff/tif_predict.c Predictor tag support
|
---|
858 | libtiff/tif_print.c directory printing support
|
---|
859 | libtiff/tif_read.c image data reading support
|
---|
860 | libtiff/tif_strip.c some strip-related code
|
---|
861 | libtiff/tif_swab.c byte and bit swapping support
|
---|
862 | libtiff/tif_thunder.c Thunderscan codec (decoding only)
|
---|
863 | libtiff/tif_tile.c some tile-related code
|
---|
864 | libtiff/tif_unix.c UNIX-related OS support
|
---|
865 | libtiff/tif_version.c library version support
|
---|
866 | libtiff/tif_vms.c VMS-related OS support
|
---|
867 | libtiff/tif_warning.c library warning handler
|
---|
868 | libtiff/tif_win3.c Windows-3.1-related OS support
|
---|
869 | libtiff/tif_win32.c Win32 (95/98/NT) related OS support
|
---|
870 | libtiff/tif_write.c image data writing support
|
---|
871 | libtiff/tif_zip.c Deflate codec
|
---|
872 |
|
---|
873 | libtiff/mkg3states.c program to generate G3/G4 decoder state tables
|
---|
874 | libtiff/mkspans.c program to generate black-white span tables
|
---|
875 | libtiff/mkversion.c program to generate libtiff/version.h.
|
---|
876 | </pre>
|
---|
877 | <hr>
|
---|
878 | Last updated: $Date: 2005/12/24 22:25:05 $
|
---|
879 | </body>
|
---|
880 | </html>
|
---|