diff options
Diffstat (limited to 'html/build.html')
-rw-r--r-- | html/build.html | 1153 |
1 files changed, 1153 insertions, 0 deletions
diff --git a/html/build.html b/html/build.html new file mode 100644 index 00000000..fff599f1 --- /dev/null +++ b/html/build.html @@ -0,0 +1,1153 @@ +<HTML> +<HEAD> +<TITLE> +Building the TIFF Software Distribution +</TITLE> +</HEAD> + +<H1> +<IMG SRC=images/cramps.gif WIDTH=159 HEIGHT=203 ALIGN=left BORDER=1 HSPACE=6> +Building the Software Distribution +</H1> + +<UL> +<LI><A HREF=#UNIX>Building on a UNIX system</A>. +<LI><A HREf=#MacMPW>Building on a Macintosh system with MPW</A>. +<LI><A HREf=#MacCW>Building on a Macintosh system with CodeWarrior</A>. +<LI><A HREF=#PC>Building on an MS-DOS or Windows system</A>. +<LI><A HREF=#DJGPP>Building on MS-DOS with the DJGPP v2 compiler</A>. +<LI><A HREF=#VMS>Building on a VMS system</A>. +<LI><A HREF=#Acorn>Building on an Acorn RISC OS system</A>. +<LI><A HREF=#Other>Building the Software on Other Systems</A> +</UL> + +<BR CLEAR=left> + +This chapter contains step-by-step instructions on how to configure +and build the TIFF software distribution. +The software is most easily built on a UNIX system, but with a little +bit of work it can easily be built and used on other non-UNIX platforms. + +<A NAME=UNIX><HR><H2>Building on a UNIX System</H2></A> + +To build the software on a UNIX system +you need to first run the configure shell script +that is located in the top level of the source directory. +This script probes the target system for necessary tools and functions +and constructs a build environment in which the software may be +compiled. +Once configuration is done, you simply run <TT>make</TT> + to build the software +and then <TT>make install</TT> to do the installation; for example: + +<UL><PRE> +hyla% <B>cd tiff-v3.4beta099</B> +hyla% <B>./configure</B> + <I>...lots of messages...</I> +hyla% <B>make</B> + <I>...lots of messages...</I> +hyla# <B>make install</B> +</PRE></UL> + +In general, the software is designed such that the following should +be ``<I>make-able</I>'' in each directory: + +<UL><PRE> +make [all] build stuff +make install build&install stuff +make clean remove .o files and cruft, but not executables +make clobber remove everything that can be recreated +make distclean remove <EM>absolutely everything</EM> that can be recreated +</PRE></UL> + +Note that after running "<TT>make clobber</TT>" or +"<TT>make distclean</TT>" the <TT>configure</TT> script must +be run again to create the Makefiles and other make-related files. + +<A NAME="BuildTrees"><P><HR WIDTH=65% ALIGN=right><H3>Build Trees</H3></A> + +There are two schemes for configuring and building the software. +If you intend to build the software for only one target system, you +can configure the software so that it is built in the same directories +as the source code. + +<UL><PRE> +hyla% <B>cd tiff-v3.4beta099</B> +hyla% <B>ls</B> +COPYRIGHT VERSION config.sub dist man +Makefile.in config.guess configure html port +README config.site contrib libtiff tools +hyla% <B>./configure</B> +</PRE></UL> + +<P> +Otherwise, you can configure a build tree that +is parallel to the source tree hierarchy but which contains only +configured files and files created during the build procedure. + +<UL><PRE> +hyla% <B>cd tiff-v3.4beta099</B> +hyla% <B>mkdir obj obj/mycpu</B> +hyla% <B>cd obj/mycpu</B> +hyla% <B>../../configure</B> +</PRE></UL> + +This second scheme is useful for: + +<UL> +<LI>building multiple targets from a single source tree +<LI>building from a read-only source tree (e.g. if you receive + the distribution on CD-ROM) +</UL> + +<A NAME="ConfigFiles"><P><HR WIDTH=65% ALIGN=right><H3>Configuration Files</H3></A> + +The configuration process is critical to the proper compilation, +installation, and operation of the software. +The configure script runs a series of tests to +decide whether or not the target system +supports required functionality and, if it does not, whether it +can emulate or workaround the missing functions. +This procedure is fairly complicated and, due to the nonstandard +nature of most UNIX systems, prone to error. +The first time that you configure the software for use you should +check the output from the configure script and look for anything +that does not make sense for your system. +A sample configure run is shown below together with an explanation +of some of the work that is done. + +<P> +A second function of the configure script is to set the default +configuration parameters for the software. +Of particular note are the directories where the software is to be +installed. +By default the software is installed in the <B>/usr/local</B> hierarchy. +To change this behaviour the appropriate parameters can be +specified either: +<UL> +<LI>on the command line to configure, +<LI>in a site-wide configuration file, or +<LI>in a target-specific configuration file. +</UL> +configure reads any site-wide configure file first, and +then any target-specific configuration file. +This permits target-specific definitions to override +site-wide definitions. + +<P> +Site-wide configuration files are named +<B>config.site</B> and are automatically searched for first +in any directory specified on the command line to configure +(using the <TT>-site</TT> option), or if that fails, in +the directory in in which the configure script is located. + +<P> +Target-specific configuration files are named <B>config.local</B> +and are looked for first in the top-level configuration directory, +or, if that fails, in the directory in which the configure script +is located. + +<P> +Configuration files are just shell scripts that define +shell variables that control the configuration process. +For example, the following file might be used on a BSDI system to +configure the software for installation in the <B>/usr/contrib</B> area. + +<PRE> +# +# Parameters suitable for BSDI 1.1 +# +DIR_BIN="/usr/contrib/bin" # directory for client apps +DIR_LIB="/usr/contrib/lib" # directory for libraries +DIR_MAN="/usr/contrib/man" # directory for manual pages +</PRE> + +<P> +For a complete list of the possible configuration parameters look +at the sample <B>config.site</B> file provided in the distribution; the +section below describes some of the more important parameters. + +<A NAME="Packages"><P><HR WIDTH=65% ALIGN=right><H3>Configuring Optional Packages/Support</H3></A> + +The TIFF software comes with several packages that are installed only +as needed, or only if specifically configured at the time +the configure script is run. Packages can be configured in a +<B>config.site</B> or <B>config.local</B> file, or by using a +<TT>-with-<PACKAGE></TT> option when invoking configure; +e.g. <TT>configure -with-AFM</TT>. + +<DL> +<DT><I>DSO Support</I> +<DD>The <TT>DSO</TT> support controls whether or not to +configure the software +to build a Dynamic Shared Object for the TIFF library. +Use of DSOs can significantly reduce the disk space needed for +users of the TIFF software. +If DSOs are not used then the code is statically linked into +each application that uses it. +By default this support is configured only if the system appears +to suport DSOs in a way that fits into the normal build scheme +(<TT>auto</TT>). +If DSO support is <EM>explicitly enabled</EM> and there is no +support for using DSOs in the expected way then DSOs are not used. + +<P> +<DT><I>JPEG Support</I> +<DD>The <TT>JPEG</TT> package enables support for the handling +of TIFF images with JPEG-encoded data. +Support for JPEG-encoded data requires the Independent JPEG Group (IJG) +<TT>libjpeg</TT> distribution; this software is available at +<A HREF=ftp://ftp.uu.net/graphics/jpeg/>ftp.uu.net:/graphics/jpeg/</A>. +If JPEG support is enabled the <TT>DIRS_LIBINC</TT> and <TT>DIR_JPEGLIB</TT> +parameters should also be set (see below). +By default JPEG support is not configured. + +<P> +<DT><I>ZIP Support</I> +<DD>The <TT>ZIP</TT> support enables support for the handling +of TIFF images with deflate-encoded data. +Support for deflate-encoded data requires the freely available +<TT>zlib</TT> distribution written by Jean-loup Gailly and Mark Adler; +this software is available at +<A HREF=ftp://ftp.uu.net/pub/archiving/zip/zlib/>ftp.uu.net:/pub/archiving/zip/zlib/</A> +(or try <A HREF=ftp://quest.jpl.nasa.gov/beta/zlib/>quest.jpl.nasa.gov:/beta/zlib/</A>). +If ZIP support is enabled the <TT>DIRS_LIBINC</TT> and <TT>DIR_GZLIB</TT> +parameters should also be set (see below). +By default this package is not configured. + +</DL> + +<A NAME="Sample"><P><HR WIDTH=65% ALIGN=right><H3>A Sample Configuration Session</H3></A> + +This section shows a sample configuration session and describes +the work done. The session is shown indented in a <TT>fixed width +font</TT> with user-supplied input in a <TT><B>bold font</B></TT>. +Comments are shown in a normal or <I>italic</I> font. +This session was collected on a 486 machine running BSDI 1.1. + +<UL><PRE><TT> +wullbrandt% <B>mkdir tiff</B> +wullbrandt% <B>cd tiff</B> +wullbrandt% <B>ln -s /hosts/oxford/usr/people/sam/tiff src</B> +</TT></PRE></UL> + +A build tree separate from the source tree is used here. +In fact, in this case the distribution is accessed from +a read-only NFS-mounted filesystem. + +<UL><PRE><TT> +wullbrandt% <B>src/configure</B> +Configuring TIFF Software v3.4beta015. + +Reading site-wide parameters from ../tiff-v3.4beta015/config.site. +Reading local parameters from config.local. +Gosh, aren't you lucky to have a i386-unknown-bsdi1.1 system! +</TT></PRE></UL> + +Note that configure announces the distribution version and the +deduced target configuration (<TT>i386-unknown-bsdi1.1</TT> here). + +<UL><PRE><TT> +Using /usr/local/bin/gcc for a C compiler (set CC to override). +Looks like /usr/local/bin/gcc supports the -g option. +Using " -g" for C compiler options. +</TT></PRE></UL> + +configure checked the normal shell search path for potential +ANSI C compilers. The compiler is selected according to it properly +compiling a small ANSI C test program. A specific compiler may be requested +by setting the <TT>CC</TT> environment variable to the appropriate +pathname, by supplying the parameter on the command line, e.g. +<TT>-with-CC=gcc</TT>, or by setting <TT>CC</TT> in a configuration +file. + +<P> +<IMG SRC="images/info.gif" ALIGN=left HSPACE=10> +<EM>Note that an ANSI C compiler is required to build the software. +If a C compiler requires options to enable ANSI C compilation, they +can be specified with the <TT>ENVOPTS</TT> parameter.</EM> + +<P> +Once a compiler is selected configure checks to see +if the compiler accepts a -g option to enable the generation + of debugging symbols, and +if the compiler includes an ANSI C preprocessor. + +<UL><PRE><TT> +Using /usr/ucb/make to configure the software. +</TT></PRE></UL> + +Next various system-specific libraries that may or may not be needed +are checked for (none are needed in this case). +If your system requires a library that is not +automatically included it can be specified by setting the +<TT>MACHDEPLIBS</TT> parameter. + +<P><I>Creating port.h.</I> +The <B>port.h</B> file is included by all the C code +in the library (but not the tools). +It includes definitions for functions and type +definitions that are missing from system include files, <TT>#defines</TT> +to enable or disable system-specific functionality, and other +odds and ends. + +<UL><PRE><TT> +Creating libtiff/port.h with necessary definitions. +... using LSB2MSB bit order for your i386 cpu +... using big-endian byte order for your i386 cpu +... configure use of mmap for memory-mapped files +... O_RDONLY is in <fcntl.h> +... using double for promoted floating point parameters +... enabling use of inline functions +Done creating libtiff/port.h. +</TT></PRE></UL> + +This file can take a long time to create so configure +generates the file only when it is needed, either because the +file does not exist or because a different target or compiler +is to be used. +Note that running "<TT>make distclean</TT>" in the top-level directory +of the build tree will remove the <B>port.h</B> file (along +with all the other files generated by configure). + +<P><I>Selecting emulated library functions.</I> +Certain library functions used by the tools are not present on all systems +and can be emulated using other system functionality. +configure checks for the presence of such functions and if they are +missing, will configure emulation code from the <B>port</B> directory +to use instead. Building the TIFF +software on unsupported systems may require +adding to the code to the <B>port</B> directory. + +<UL><PRE><TT> +Checking system libraries for functionality to emulate. +Done checking system libraries. +</TT></PRE></UL> + +If a routine must be emulated and configure does not automatically +check for it, the routine name can be specified using the <TT>PORTFUNCS</TT> +parameter. To add emulation support for a new function <TT>foo</TT>, +create a file <B>port/foo.c</B> that contains the emulation code +and then set <TT>PORTFUNCS=foo</TT> in a configuration file or modify +the configure script to automatically check for the missing function. + +<UL><PRE><TT> +Checking for Dynamic Shared Object (DSO) support. +Done checking for DSO support. +</TT></PRE></UL> + +If the <TT>DSO</TT> package is enabled (<TT>DSO=auto</TT> or +<TT>DSO=yes</TT>), then +configure will verify the system and compiler are capable of +constructing SVR4-style DSO's in the expected way. Note that +while a system may support DSO's the compiler may not be +capable of generating the required position-independent +code and/or the compiler may not pass the needed options +through to the loader. + +<P><I>Selecting utility programs.</I> +configure locates various system utility programs that are +used during installation of the software. + +<UL><PRE><TT> +Selecting programs used during installation. +Looks like mv supports the -f option to force a move. +Looks like /bin/ln supports the -s option to create a symbolic link. +Done selecting programs. +</TT></PRE></UL> + +<P><I>Selecting default configuration parameters.</I> +The remainder of the work done by configure involves setting up +configuration parameters that control the placement and +setup of files during the installation procedure. + +<UL><PRE><TT> +Selecting default TIFF configuration parameters. + +Looks like manual pages go in /usr/contrib/man. +Looks like manual pages should be installed with bsd-nroff-gzip-0.gz. + +TIFF configuration parameters are: + +[ 1] Directory for tools: /usr/contrib/bin +[ 2] Directory for libraries: /usr/contrib/lib +[ 3] Directory for include files: /usr/contrib/include +[ 4] Directory for manual pages: /usr/contrib/man +[ 5] Manual page installation scheme: bsd-nroff-gzip-0.gz + +Are these ok [yes]? +</TT></PRE></UL> + + + +At this point you can interactively modify any of the +displayed parameters. Hitting a carriage return or typing +<TT>yes</TT> will accept the current parameters. Typing one +of the number displayed along the left hand side causes +configure to prompt for a new value of the specified parameter. +Typing anything else causes configure to prompt for a new +value <EM>for each parameter</EM>. +In general hitting carriage return will accept the current +value and typing anything that is unacceptable will cause a +help message to be displayed. +A description of each of the configuration parameters is given below. + +<P> +Once acceptable parameters are setup configure will generate +all the files that depend on these parameters. Note that certain +files may or may not be created based on the configuration of +optional packages and/or the functions supported by target system. + +<UL><PRE><TT> +Creating Makefile from ../tiff-v3.4beta015/Makefile.in +Creating libtiff/Makefile from ../tiff-v3.4beta015/libtiff/Makefile.in +Creating man/Makefile from ../tiff-v3.4beta015/man/Makefile.in +Creating tools/Makefile from ../tiff-v3.4beta015/tools/Makefile.in +Creating port/install.sh from ../tiff-v3.4beta015/port/install.sh.in +Done. +</TT></PRE></UL> + +<A NAME=DSOSupport><P><HR><H3>Shared Library Support</H3></A> + +It is desirable to make the TIFF library be a shared object +on systems that have support for shared libraries. +Unfortunately the rules to use to build a shared library +vary between operating systems and even compilers. +The distributed software includes support for building a shared +version of the library on a number of different systems. +This support is split between rules in the file +<B>libtiff/Makefile.in</B> that construct the shared library +and checks done by the <TT>configure</TT> script to verify that +the expected rules are supported by compilation tools for +the target system. + +<P> +To add new support for building a shared library both these files +must be updated. +In the configure script search for the section where the autoconfiguration +setting of the <TT>DSO</TT> parameter is handled and +add a new case for the target system that sets the +<TT>DSOSUF</TT>, +<TT>DSOLD</TT>, +<TT>DSOOPTS</TT>, +and +<TT>LIBCOPTS</TT> +options as appropriate for the system. +<TT>DSOSUF</TT> specifies the filename suffix used for the shared +library (e.g. ``.so'' for Dynamic Shared Objects on most SVR4-based +systems). +<TT>DSOLD</TT> specifies the program to use to build the shared library +from a compiled object file; typically ``${LD}'' though on some systems +it is better to use the C compiler directly so system-dependent options and +libraries are automatically supplied. +<TT>DSOOPTS</TT> are options that must be specified to <TT>DSOLD</TT> +when building the shared library. +<TT>LIBCOPTS</TT> are options to pass to the C compiler when constructing +a relocatable object file to include in a shared library; e.g. ``-K PIC'' +on a Sun system. +The <TT>DSO</TT> parameter must also be set to a unique label that identifies +the target system and compilation tools. +This label is used to select +a target in <B>libtiff/Makefile.in</B> to do the actual work in building +the shared library. +Finally, to complete support for the shared library added the appropriate +rules to <B>libtiff/Makefile.in</B> under the target specified in the +<TT>configure</TT> script. + + + + +<A NAME="Parameters"><P><HR WIDTH=65% ALIGN=right><H3>Configuration Parameters</H3></A> + +This section gives a brief description of the less obvious +configuration parameters. Consult the distributed <B>config.site</B> +for a <EM>complete list of parameters</EM>. +The list here is sorted alphabetically. + +<P> +<TABLE BORDER CELLPADDING=3> + +<TR> +<TD VALIGN=top><TT>AROPTS</TT></TD> +<TD>The options passed to ar when creating an archive. +Note that configure will automatically check to see if ar +supports an <TT>s</TT> to create a symbol table instead of +using ranlib.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_BIN</TT></TD> +<TD>The directory where client applications should be installed; by +default this is <B>/usr/local/bin</B>.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_GZLIB</TT></TD> +<TD>The pathname of the directory containing the zlib library +(when ZIP or PixarLog compression support is enabled); +e.g. ``<TT>../src/zlib</TT>''.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_JPEGLIB</TT></TD> +<TD>The pathname of the directory containing the JPEG library +(when JPEG support is enabled); e.g. ``<TT>/usr/local/lib</TT>''.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_LIB</TT></TD> +<TD>The directory to install libraries and DSO's; by default +this is <B>/usr/local/lib</B>.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_MAN</TT></TD> +<TD>The top-most directory of the manual area where manual +pages should be installed.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIRS_LIBINC</TT></TD> +<TD>A space-separated list of directories in which to search for +include files when building the library and tools. +If JPEG or ZIP support is configured this parameter should include +the directories where the associated include files are located.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIST_ALPHA</TT></TD> +<TD>The alpha version number for the distribution; e.g. if this +is version 3.4beta031 then the the major number is 31.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIST_MAJOR</TT></TD> +<TD>The major version number for the distribution; e.g. if this +is version 3.4beta031 then the the major number is 3.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIST_MINOR</TT></TD> +<TD>The minor version number for the distribution; e.g. if this +is version 3.4beta031 then the the major number is 4.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DSOSUF</TT></TD> +<TD>When DSO's are built, the filename suffix for a DSO. +If this is set to <TT>"a"</TT> then statically linked archives are used.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DSOSUF_VERSION</TT></TD> +<TD>When DSO's are built, a version-specific filename suffix for a DSO. +If this is set to something other than the value of <TT>DSO</TT> then +the file <B>libtiff.<TT>DSOSUF_VERSION</TT></B> will be installed and +a link to it named <B>libtiff.<TT>DSOSUF</TT></B> will automatically +be created. (Note that this means that rule for building the target +DSO must generate a file named <B>libtiff.<TT>DSOSUF_VERSION</TT></B>.)</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>ENVOPTS</TT></TD> +<TD>Options to pass to <TT>CC</TT> to force ANSI C compilation.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>FILLORDER</TT></TD> +<TD>The order of bits in a byte on the server machine; +either LSB2MSB or MSB2LSB. +This is normally selected according to the target system.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>GCOPTS</TT></TD> +<TD>Special options to pass the C compiler. If this parameter +is set, then configure may append other options to this list.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>INSTALL</TT></TD> +<TD>The pathname of the install program to use. Note that this program +must emulate the command line interface used by the IRIX install program.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>LIBPORT</TT></TD> +<TD>The pathname of the library that holds code to emulate missing +system functionality. +Normally this parameter is set by configure based on whether or +not emulation code is required for the target. +</TR> + +<TR> +<TD VALIGN=top><TT>LLDOPTS</TT> +<TD>Extra command line options passed to <TT>CC</TT> +when linking an executable. +This option is usually set only when DSO support is enabled +(to force the executable to search for the TIFF DSO +in non-standard locations in the filesystem.)</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>MACHDEPLIBS</TT></TD> +<TD>Target-dependent libraries that should be used when linking +tools. +Note that if this parameter is specified configure will append to +the list of libraries.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>MANSCHEME</TT></TD> +<TD>The scheme to use when preparing and installing manual pages. +Schemes are constructed according to: +<UL> +<<I>organization</I>>-<<I>formatting</I>>-<<I>compression</I>>[-<<I>suffix</I>>] +</UL> +where: +<<I>organization</I>> is either <TT>bsd</TT> +for BSD-style section organization (e.g. file formats in +section 5) or <TT>sysv</TT> for System V-style +organization (e.g. file formats in section 4). +<<I>formatting</I>> is either <TT>nroff</TT> to force +installation of formatted materials (using nroff) or +<TT>source</TT> to get the nroff source installed. +<<I>compression</I>> is either the name of a program +to compress the manual pages (gipz, compress, pack) or +<TT>cat</TT> for uncompressed data. +<<I>suffix</I>> is either the file suffix to convert +installed pages to (e.g. 0.gz for gzip-compressed pages under BSD) +or <TT>strip</TT> to force the normal ".4f" suffix to be converted to ".4" +(or ".5" if using the BSD organization). If no -<suffix> +is specified then filenames are not converted when they are installed.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>PORTFUNCS</TT></TD> +<TD>A list of non-standard functions that should be emulated. +Normally this list is constructed by configure based on checks it does. +If this parameter is set, configure will append to the specified list.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>SETMAKE</TT></TD> +<TD>If make does not automatically set <TT>$MAKE</TT> to +the name of the make program to invoke for subdirectories, then +configure will create an explicit definition. +If this parameter is set, then it will be used instead. +by default <TT>bin</TT> is used.</TD> +</TR> + +</TABLE> + + +<A NAME=PC><P><HR><H2>Building the Software under MS/DOS or Windows</H2></A> + +<I> +There is a Makefile for Microsoft C. +There is OS support for MS-DOS and for Windows. +Someone needs to fill this in, but no DOS-weenies seem to +give a damn so this section is blank for now .... +</I> + + + +<A NAME=DJGPP><P><HR><H2>Building the Software under MS/DOS with the DJGPP v2 compiler</H2></A> + +[<I>From the file <B>contrib/dosdjgpp/README</B>.</I>] + +<P> +The directory <B>contrib/dosdjgpp</B> +contains the files necessary to build the library and tools +with the DJGPP v2 compiler under MSDOS. + +<P> +All you have to do is copy the files in the directory +into the respective directories and run +make. If you want, you can use the <B>conf.bat</B> script +to do that for you, make sure that +the file is stored with MSDOS text EOL-convention (CR/LF), otherwise the +<B>command.com</B> will not do anything. + +<P> +Note that you probably will not be able to build the library with the v1.x +versions of djgpp, due to two problems. First, the top makefile calls a +sub-make for each directory and you are likely to run out of memory, since +each recursive invocation of a djgpp v1.x program requires about 130k, to +avoid that, you can enter the directories manually and call make (well, there +are only two dirs). The 2nd problem is that djgpp 1.x doesn't call the +coff2exe (stubify) program when creating an executable. This means that all +programs compiled are not converted to exe and consequently are not available +for calling directly. For the tools directory, you can just call coff2exe for +each program after make finishes, but in the libtiff directory, a few programs +are created during the make process that have to be called for make to +continue (e.g. mkg3states). Make will probably report an error at each +such stage. To fix that, either add a coff2exe call before each program is +called or call coff2exe manually and rerun make (there 2-3 such programs). + + +<A NAME=MacMPW><P><HR><H2>Building the Software on a Macintosh with MPW</H2></A> + +The directory <B>contrib/mac-mpw</B> contains support for +compiling the library and tools under the MPW Shell on a +Macintosh system. +This support was contributed by Niles Ritter +(<A HREF=mailto:ndr@tazboy.jpl.nasa.gov>ndr@tazboy.jpl.nasa.gov</A>). + +<P> +[<I>From the file <B>contrib/mac-mpw/README</B>.</I>] + +<P> +This directory contains all of the utilities and makefile source +to build the LIBTIFF library and tools from the MPW Shell. The +file BUILD.mpw in this directory is an executable script +which uses all of these files to create the MPW makefiles and +run them. + +<P> +The <file>.make files are not MPW makefiles as such, +but are when run through the "mactrans" program, which turns +the ascii "%nn" metacharacters into the standard weird MPW +make characters. + +<P> +This translation trick is necessary to protect the files when +they are put into unix tarfiles, which tend to mangle the +special characters. + + + +<A NAME=MacCW><P><HR><H2>Building the Software on a Macintosh with CodeWarrior</H2></A> + +The directory <B>contrib/mac-cw</B> contains support for +compiling the library and tools with MetroWerks CodeWarrior 6.1 +on a Macintosh system. +This support was contributed by Niles Ritter +(<A HREF=mailto:ndr@tazboy.jpl.nasa.gov>ndr@tazboy.jpl.nasa.gov</A>). + +<P> +[<I>From the file <B>contrib/mac-cw/README</B>.</I>] + +In this directory you will find a Makefile.script Applescript +file, which should be run in order to build the libtiff code +using MetroWerks CodeWarrior. + +Refer to the "metrowerks.note" instructions on building the +library for 68k and PowerPC native code, as well as building +some of the libtiff tools, which are rather unix-like, but +at least give an example of how to link everything together. + + + +<A NAME=VMS><P><HR><H2>Building the Software on a VMS System</H2></A> + +The VMS port was done by Karsten Spang +(<A HREF="mailto:krs@kampsax.dk">krs@kampsax.dk</a>), who also +"sort of" maintains it. +The VMS specific files are not in the main directories. Instead they +are placed under <TT>[.CONTRIB.VMS...]</TT> in the distribution tree. + +Installation: + +It is assumed that you have unpacked the tar file into a VMS directory +tree, in this text called DISK:[TIFF]. + +<OL> +<LI>Move the VMS specific files to their proper directories. +<PRE> +$ SET DEFAULT DISK:[TIFF.CONTRIB.VMS] +$ RENAME [.LIBTIFF]*.* [-.-.LIBTIFF] +$ RENAME [.TOOLS]*.* [-.-.TOOLS] +</PRE> +<LI>Compile the library. +<PRE> +$ SET DEFAULT DISK:[TIFF.LIBTIFF] +$ @MAKEVMS +</PRE> +<LI>Compile the tools. +<PRE> +$ SET DEFAULT DISK:[TIFF.TOOLS] +$ @MAKEVMS +</PRE> +<LI>Define the programs. +<PRE> +$ DEFINE TIFFSHR DISK:[TIFF.LIBTIFF]TIFFSHR +$ FAX2PS :==$DISK:[TIFF.TOOLS]FAX2PS +$ FAX2TIFF :==$DISK:[TIFF.TOOLS]FAX2TIFF +$ GIF2TIFF :==$DISK:[TIFF.TOOLS]GIF2TIFF +$ PAL2RGB :==$DISK:[TIFF.TOOLS]PAL2RGB +$ PPM2TIFF :==$DISK:[TIFF.TOOLS]PPM2TIFF +$ RAS2TIFF :==$DISK:[TIFF.TOOLS]RAS2TIFF +$ RGB2YCBCR :==$DISK:[TIFF.TOOLS]RGB2YCBCR +$ THUMBNAIL :==$DISK:[TIFF.TOOLS]THUMBNAIL +$ TIFF2BW :==$DISK:[TIFF.TOOLS]TIFF2BW +$ TIFF2PS :==$DISK:[TIFF.TOOLS]TIFF2PS +$ TIFFCMP :==$DISK:[TIFF.TOOLS]TIFFCMP +$ TIFFCP :==$DISK:[TIFF.TOOLS]TIFFCP +$ TIFFDITHER:==$DISK:[TIFF.TOOLS]TIFFDITHER +$ TIFFDUMP :==$DISK:[TIFF.TOOLS]TIFFDUMP +$ TIFFINFO :==$DISK:[TIFF.TOOLS]TIFFINFO +$ TIFFMEDIAN:==$DISK:[TIFF.TOOLS]TIFFMEDIAN +$ TIFFSPLIT :==$DISK:[TIFF.TOOLS]TIFFSPLIT +$ YCBCR :==$DISK:[TIFF.TOOLS]YCBCR +</PRE> +</OL> + +You will want to add these lines to your <TT>LOGIN.COM</TT> +file, after changing +the name of the directory that you have used on your machine. + +<P> +This release has been tested on OpenVMS/VAX 5.5-2, using VAX C 3.2. +A previous release was tested under OpenVMS/AXP ?.? using DEC C ?.?, it is +believed that this release as well works on AXP. +The code contains some GNU C specific things. This does *not* imply, +however, that the VAX/GCC configuration has been tested, *it has not*. + +<P> +The command procedures (<TT>MAKEVMS.COM</TT>) for building the +library and tools, +is believed to choose the correct options for the VAX and AXP cases +automatically. + +<P> +On the AXP, IEEE floating point is used by default. If you want VAX +floating point, remove the <TT>/FLOAT=IEEE_FLOAT</TT> qualifier, and change +<TT>HAVE_IEEEFP=1</TT> to <TT>HAVE_IEEEFP=0</TT> in the <TT>MAKEVMS.COM</TT> +files in both the <B>libtiff</B> and <B>tools</B> directories. + + +<H3>Compiling your own program on a VMS system:</H3> + +When compiling a source file in which you +<TT>"#include <tiffio.h>"</TT>, use the +following command +<PRE> + $ CC/INCLUDE=DISK:[TIFF.LIBTIFF] +</PRE> +This ensures that the header file is found. +On the AXP, also add <TT>/FLOAT=IEEE_FLOAT</TT> +(if used when building the library). + + +<H3>Linking your own program to the TIFF library on a VMS system:</H3> + +You can link to the library in two ways: Either using the shareable +library, or using the object library. +On the VAX these possibilities are: + +<OL> +<LI>Using the shareable TIFF library. +<PRE> +$ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS,SYS$INPUT:/OPTIONS + SYS$SHARE:VAXCRTL/SHAREABLE +</PRE> +<LI>Using the TIFF object library. +<PRE> +$ LINK MY_PROGRAM, - + DISK:[TIFF.LIBTIFF]TIFF/LIBRARY/INCLUDE=(TIF_FAX3SM,TIF_CODEC), - + SYS$INPUT:/OPTIONS + SYS$SHARE:VAXCRTL/SHAREABLE +</PRE> +</OL> + +On AXP (and possibly also using DEC C on VAX) the corresponding commands are +<OL> +<LI>Using the shareable TIFF library. +<PRE> +$ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS +</PRE> +<LI>Using the TIFF object library. +<PRE> +$ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/LIBRARY +</PRE> +</OL> + +Method 1 uses the shortest link time and smallest <TT>.EXE</TT> +files, but it +requires that <TT>TIFFSHR</TT> is defined as above at link time and +<STRONG>at run time</STRONG>. +Using the compilation procedure above, the tools are linked in this way. + +<P> +Method 2 gives somewhat longer link time and larger <TT>.EXE</TT> +files, but does +not require <TT>TIFFSHR</TT> to be defined. This method is recommended if you +want to run your program on another machine, and for some reason don't +want to have the library on that machine. If you plan to have more than +one program (including the tools) on the machine, it is recommended that +you copy the library to the other machine and use method 1. + + + +<A NAME=Acorn><P><HR><H2>Building the Software on an Acorn RISC OS system</H2></A> + +The directory <B>contrib/acorn</B> contains support for compiling the library +under Acorn C/C++ under Acorn's RISC OS 3.10 or above. Subsequent pathnames +will use the Acorn format: The full-stop or period character is a pathname +delimeter, and the slash character is not interpreted; the reverse position +from Unix. Thus "libtiff/tif_acorn.c" becomes "libtiff.tif_acorn/c". + +<P> +This support was contributed by Peter Greenham. (<A HREF=mailto:peter@enlarion.demon.co.uk>peter@enlarion.demon.co.uk</A>). + +<P> +<H3>Installing LibTIFF:</H3> + +<P> +LIBTIFF uses several files which have names longer than the normal RISC OS +maximum of ten characters. This complicates matters. Maybe one day Acorn will +address the problem and implement long filenames properly. Until then this +gets messy, especially as I'm trying to do this with obeyfiles and not have +to include binaries in this distribution. + +<P> +First of all, ensure you have Truncate configured on (type <TT>*Configure +Truncate On</TT>) + +<P> +Although it is, of course, preferable to have long filenames, LIBTIFF can be +installed with short filenames, and it will compile and link without +problems. However, <I>getting</I> it there is more problematic. +<B>contrib.acorn.install</B> is an installation obeyfile which will create a normal +Acorn-style library from the source (ie: with c, h and o folders etc.), but +needs the distribution library to have been unpacked into a location which is +capable of supporting long filenames, even if only temporarily. + +<P> +My recommendation, until Acorn address this problem properly, is to use Jason +Tribbeck's <A +HREF=ftp://ftp.demon.co.uk/pub/mirrors/hensa/micros/arch/riscos/c/c020/longfiles.arc>LongFilenames</A>, or any other +working system that gives you long filenames, like a nearby NFS server for +instance. + +<P> +If you are using Longfilenames, even if only temporarily to install LIBTIFF, +unpack the TAR into a RAMDisc which has been longfilenamed (ie: <TT>*addlongfs +ram</TT>) and then install from there to the hard disk. Unfortunately +Longfilenames seems a bit unhappy about copying a bunch of long-named files +across the same filing system, but is happy going between systems. You'll +need to create a ramdisk of about 2Mb. + +<P> +Now you can run the installation script I've supplied (in contrib.acorn), +which will automate the process of installing LIBTIFF as an Acorn-style +library. The syntax is as follows: + +<P><TT> +install <source_dir> <dest_dir> + +</TT><P> +Install will then create <dest_dir> and put the library in there. For +example, having used LongFilenames on the RAMDisk and unpacked the library +into there, you can then type: + +<P><TT> +Obey RAM::RamDisc0.$.contrib.acorn.install RAM::RamDisc0.$ ADFS::4.$.LIBTIFF +</TT><P> + +It doesn't matter if the destination location can cope with long filenames or +not. The filenames will be truncated if necessary (*Configure Truncate On if +you get errors) and all will be well. + +<P> +<H3>Compiling LibTIFF:</H3> + +<P> +Once the LibTIFF folder has been created and the files put inside, making the +library should be just a matter of running '<B>SetVars</B>' to set the +appropriate system variables, then running '<B>Makefile</B>'. + +<P> +<B>OSLib</B> + +<P> +<A HREF=ftp://ftp.acorn.co.uk/pub/riscos/releases/oslib/oslib.arc>OSLib</A> +is a comprehensive API for RISC OS machines, written by Jonathan Coxhead of +Acorn Computers (although OSLib is not an official Acorn product). Using the +OSLib SWI veneers produces code which is more compact and more efficient than +code written using _kernel_swi or _swi. The Acorn port of LibTIFF can take +advantage of this if present. Edit the Makefile and go to the Static +dependencies section. The first entry is: + +<PRE> +# Static dependencies: +@.o.tif_acorn: @.c.tif_acorn + cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn +</PRE> +<P> +Change the cc line to: +<PRE> + cc $(ccflags) -DINCLUDE_OSLIB -o @.o.tif_acorn @.c.tif_acorn +</PRE> +<P> +Remember, however, that OSLib is only <I>recommended</I> for efficiency's +sake. It is not required. + + + +<A NAME=Other><P><HR><H2>Building the Software on Other Systems</H2></A> + +This section contains information that might be useful +if you are working on a non-UNIX system that is not directly supported. +All library-related files described below are located in the <B>libtiff</B> +directory. + +<P> +The library requires two files that are generated <I>on-the-fly</I>. +The file <B>tif_fax3sm.c</B> has the state tables for the +Group 3 and Group 4 decoders. +This file is generated by the <TT>mkg3states</TT> program +on a UNIX system; for example, + +<UL><PRE><TT> +cd libtiff +cc -o mkg3states mkg3states.c +rm -f tif_fax3sm.c +./mkg3states -c const tif_fax3sm.c +</TT></PRE></UL> + +The <TT>-c</TT> option can be used to control whether or not the +resutling tables are generated with a <TT>const</TT> declaration. +The <TT>-s</TT> option can be used to specify a C storage class +for the table declarations. +The <TT>-b</TT> option can be used to force data values to be +explicitly bracketed with ``{}'' (apparently needed for some +MS-Windows compilers); otherwise the structures are emitted in +as compact a format as possible. +Consult the source code for this program if you have questions. + +<P> +The second file required to build the library, <B>version.h</B>, +contains the version +information returned by the <TT>TIFFGetVersion</TT> routine. +This file is built on most systems using the +<TT>mkversion</TT> program and the contents of the +<TT>VERSION</TT> and <TT>tiff.alpha</TT> files; for example, + +<UL><PRE> +cd libtiff +cc -o mkversion mkversion.c +rm -f version.h +./mkversion -v ../VERSION -a ../dist/tiff.alpha version.h +</PRE></UL> + +<P> +Otherwise, when building the library on a non-UNIX system be sure to +consult the files <B>tiffcomp.h</B> and <B>tiffconf.h</B>. +The former contains system compatibility definitions while the latter +is provided so that the software configuration can be controlled +on systems that do not support the make facility for building +the software. + +<P> +Systems without a 32-bit compiler may not be able to handle some +of the codecs in the library; especially the Group 3 and 4 decoder. +If you encounter problems try disabling support for a particular +codec; consult the <A HREF=internals.html#Config>documentation</A>. + +<P> +Programs in the tools directory are written to assume an ANSI C +compilation environment. +There may be a few POSIX'isms as well. +The code in the <B>port</B> directory is provided to emulate routines +that may be missing on some systems. +On UNIX systems the <TT>configure</TT> script automatically figures +out which routines are not present on a system and enables the use +of the equivalent emulation routines from the <B>port</B> directory. +It may be necessary to manually do this work on a non-UNIX system. + + +<A NAME=Testing><P><HR><H2>Checking out the Software</H2></A> + +<P> +Assuming you have working versions of <TT>tiffgt</TT> and <TT>tiffsv</TT>, +you can just +use them to view any of the sample images available for testing +(see the <A HREF=images.html>section on obtaining the test images</A>). +Otherwise, you can do a cursory check of the library with +the <TT>tiffcp</TT> and <TT>tiffcmp</TT> programs. For example, + +<UL><PRE> +tiffcp -lzw cramps.tif x.tif +tiffcmp cramps.tif x.tif +</PRE></UL> + +<P> +(<TT>tiffcmp</TT> should be silent if the files compare correctly). + + + +<A NAME=TOC><P><HR><H2>Table of Contents</H2></A> + +The following files makup the core library: + +<PRE> +libtiff/tiff.h TIFF spec definitions +libtiff/tiffcomp.h non-UNIX OS-compatibility definitions +libtiff/tiffconf.h non-UNIX configuration definitions +libtiff/tiffio.h public TIFF library definitions +libtiff/tiffiop.h private TIFF library definitions +libtiff/t4.h CCITT Group 3/4 code tables+definitions +libtiff/tif_dir.h private defs for TIFF directory handling +libtiff/tif_fax3.h CCITT Group 3/4-related definitions +libtiff/tif_predict.h private defs for Predictor tag support +libtiff/uvcode.h LogL/LogLuv codec-specific definitions +libtiff/version.h version string (generated by Makefile) + +libtiff/tif_acorn.c Acorn-related OS support +libtiff/tif_apple.c Apple-related OS support +libtiff/tif_atari.c Atari-related OS support +libtiff/tif_aux.c auxilary directory-related functions +libtiff/tif_close.c close an open TIFF file +libtiff/tif_codec.c configuration table of builtin codecs +libtiff/tif_compress.c compression scheme support +libtiff/tif_dir.c directory tag interface code +libtiff/tif_dirinfo.c directory known tag support code +libtiff/tif_dirread.c directory reading code +libtiff/tif_dirwrite.c directory writing code +libtiff/tif_dumpmode.c "no" compression codec +libtiff/tif_error.c library error handler +libtiff/tif_fax3.c CCITT Group 3 and 4 codec +libtiff/tif_fax3sm.c G3/G4 state tables (generated by mkg3states) +libtiff/tif_flush.c i/o and directory state flushing +libtiff/tif_getimage.c TIFFRGBAImage support +libtiff/tif_jpeg.c JPEG codec (interface to the IJG distribution) +libtiff/tif_luv.c SGI LogL/LogLuv codec +libtiff/tif_lzw.c LZW codec +libtiff/tif_msdos.c MSDOS-related OS support +libtiff/tif_next.c NeXT 2-bit scheme codec (decoding only) +libtiff/tif_open.c open and simply query code +libtiff/tif_packbits.c Packbits codec +libtiff/tif_pixarlog.c Pixar codec +libtiff/tif_predict.c Predictor tag support +libtiff/tif_print.c directory printing support +libtiff/tif_read.c image data reading support +libtiff/tif_strip.c some strip-related code +libtiff/tif_swab.c byte and bit swapping support +libtiff/tif_thunder.c Thunderscan codec (decoding only) +libtiff/tif_tile.c some tile-related code +libtiff/tif_unix.c UNIX-related OS support +libtiff/tif_version.c library version support +libtiff/tif_vms.c VMS-related OS support +libtiff/tif_warning.c library warning handler +libtiff/tif_win3.c Windows-3.1-related OS support +libtiff/tif_win32.c Windows-3.2-related OS support +libtiff/tif_write.c image data writing support +libtiff/tif_zip.c Deflate codec + +libtiff/mkg3states.c program to generate G3/G4 decoder state tables +libtiff/mkspans.c program to generate black-white span tables +libtiff/mkversion.c program to generate libtiff/version.h. +</PRE> + +<P> +<HR> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> |