<?xml version="1.0" standalone="no"?>
<!--
 * Copyright 1999-2005 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->

<!DOCTYPE s1 SYSTEM "sbk:/style/dtd/document.dtd">

<s1 title="Building on Windows and UNIX">
    <anchor name="WinNT"/>
    <s2 title="Building &XercesCName; on Windows using Microsoft Visual C++">
        <p>&XercesCName; source distribution comes with Microsoft Visual C++ projects and workspaces to
        help you build &XercesCName;. The following describes the steps you need
        to build &XercesCName;.</p>

        <s3 title="Building &XercesCName; library">
            <p>To build &XercesCName; from the source distribution (using MSVC), you will
            need to open the workspace containing the project. If you are
            building your application, you may want to add the &XercesCName;
            project inside your application's workspace.</p>
            <p>The workspace containing the &XercesCName; project file and
            all other samples is in:</p>
            <p>For MSVC Version 6:</p>
<source>&XercesCSrcInstallDir;\Projects\Win32\VC6\xerces-all\xerces-all.dsw</source>
            <p>For MSVC Version 7 (Visual C++.Net):</p>
<source>&XercesCSrcInstallDir;\Projects\Win32\VC7\xerces-all\xerces-all.sln</source>

            <p>Once you are inside MSVC, you need to build the project marked
            <em>XercesLib</em>.</p>
            <p>If you want to include the &XercesCName; project separately,
            you need to pick up:</p>
<source>(For MSVC V6) &XercesCSrcInstallDir;\Projects\Win32\VC6\xerces-all\XercesLib\XercesLib.dsp
(For MSVC V7) &XercesCSrcInstallDir;\Projects\Win32\VC7\xerces-all\XercesLib\XercesLib.vcproj</source>
            <p>You must make sure that you are linking your application with
            the &XercesCWindowsLib;.lib library and also make sure that
            the associated DLL is somewhere in your path.</p>
            <note>If you are working on the AlphaWorks version which uses ICU,
            you must have the ICU data DLL named <code>icudata.dll</code> available from your path
            setting. For finding out where you can
            get ICU from and build it, look at the <jump href="build-misc.html#faq-1">How to Build ICU</jump>.</note>

        </s3>
        <s3 title="Building samples">
            <p>If you are using the source package, inside the same workspace (xerces-all.dsw), you'll find several other
            projects. These are for the samples. Select all the samples and right click
            on the selection. Then choose "Build (selection only)" to build all the
            samples in one shot.</p>

            <p>If you are using the binary package, load the &XercesCInstallDir;-win32\samples\Projects\Win32\VC6\samples.dsw
              Microsoft Visual C++ workspace inside your MSVC IDE. Then select all the samples and right click
              on the selection. Then choose "Build (selection only)" to build all the
              samples in one shot.</p>
        </s3>
    </s2>

    <anchor name="WinIntel"/>
    <s2 title="Building &XercesCName; 64 bit binary on Windows XP using Intel C++ Compiler">
        <p>&XercesCName; source distribution comes with Microsoft Visual C++ NMake Files which
        work with Intel C++ Compiler. The following describes the steps you need
        to build &XercesCName; 64 bit binary using Intel C++ Compiler.</p>

        <s3 title="Building &XercesCName; library">
            <p>&XercesCName; source distribution provides a makefile <code>all.mak</code>
            which will build everything including samples, tests and the parser library.</p>
<source>
cd &XercesCSrcInstallDir;\Projects\Win32\VC6\xerces-all\all
nmake -f all.mak "CFG=all - Win64 Release" CPP=ecl.exe
</source>

            <p>If you want to just build the &XercesCName; parser library alone, then</p>
<source>
cd &XercesCSrcInstallDir;\Projects\Win32\VC6\xerces-all\XercesLib
nmake -f XercesLib.mak "CFG=XercesLib - Win64 Release" CPP=ecl.exe
</source>

            <p>You must make sure that you are linking your application with
            the &XercesCWindowsLib;.lib library and also make sure that
            the associated DLL is somewhere in your path.</p>
        </s3>
    </s2>

    <anchor name="WinBorlandBuilder"/>
    <s2 title="Building &XercesCName; on Windows using Borland C++Builder">
        <p>&XercesCName; source distribution comes with Borland C++Builder6 projects to help you
		build &XercesCName;. The following describes the steps you need to build
		&XercesCName;.</p>

        <s3 title="Building &XercesCName; library">
		   <p> The library and demo projects are all contained in the Xerces-all project group:
		   </p>

           <ul>
		       <li> &XercesCSrcInstallDir;\Projects\Win32\BCB6\Xerces-all\Xerces-all.bpg </li>
    	   </ul>

		   <p> Each project in the group refers a directory below \Xerces-all.
		       For example, the XercesLib project files are contained in the directory
           </p>

           <ul>
    	       <li> &XercesCSrcInstallDir;\Projects\Win32\BCB6\Xerces-all\XercesLib </li>
		   </ul>

           <p> To build any project, open the project manager.  Double click on the project
            name.  Then select "Project|Build" from the menu.  For example, double click
            on XercesLib.dll in the manager.  Then select "Project|Build XercesLib" from
            the menu.

            Once the library has been built, include XercesLib.lib with in application's
            project and place XercesLib.dll somewhere in your path.
           </p>

        </s3>
    </s2>
    
    <anchor name="WinBorlandCC"/>
    <s2 title="Building &XercesCName; on Windows using Borland C++ Compiler">
        <p>&XercesCName; source distribution comes with Borland C++ Compiler make files to help you
		build &XercesCName;. The following describes the steps you need to build
		&XercesCName;.</p>

        <ol>
		   <li>Change directory to <code> &XercesCSrcInstallDir;\Projects\Win32\BCC.551\Xerces-all</code></li>
           <li>Run <code>MakeBuildDirs.bat</code>.</li>
		   <li>Then issue</li>
		       <ul>
		       <li><code>make -f Xerces-all.mak</code>
               <br/>to build the dll (without deprecated DOM API) and tests, or</li>
               <li><code>make -f Xerces-all.mak -DWITHDEPRDOM=Y</code>
               <br/>to build the dll with deprecated DOM API (approx. 300k larger) and tests</li>
               </ul>
	    </ol>           
    </s2>
        
    <anchor name="CygWin"/>
    <s2 title="Building &XercesCName; on Windows using Cygwin">
        <p><em>Do not jump into the build directly before reading this.</em></p>

		<p>&XercesCName; may be built in the
		<jump href="http://www.cygwin.com">Cygwin</jump> environment for use
		by Cygwin applications.  As with the <jump href="#UNIX">UNIX</jump>
		platforms, &XercesCName; on Cygwin uses
		<jump href="http://www.gnu.org">GNU</jump> tools.  Therefore, with a
		couple of notable exceptions, &XercesCName; on Cygwin is built using
		the same instructions as the UNIX platforms.  The build environment
		variable XERCESCROOT must be set to the proper path containing the
		&XercesCName; sources and <em>runConfigure</em> must be run with the
		"-pcygwin -cgcc -xg++" arguments.</p>
	
		<p>Note that Cygwin is different from the UNIX platforms in the way
		that it finds libraries at run time.  While UNIX platforms may use the
		environment variable LD_LIBRARY_PATH, Cygwin uses the PATH environment
		variable.</p>

		<p>There is an issue with the
		<jump href="http://www.gnu.org/software/gcc/gcc.html">gcc/g++</jump>
		compiler version 2.95, where C++ exceptions thrown from a dll will
		cause the application to crash, regardless of whether there is a "catch"
		statement.  This bug doesn't occur in tests using gcc 3.1 or 3.2, so it
		is recommended that you use gcc 3.1 or higher.</p>
    </s2>

    <anchor name="UNIX"/>
    <s2 title="Building &XercesCName; on UNIX platforms">
        <p>&XercesCName; uses
        <jump href="http://www.gnu.org">GNU</jump> tools like
        <jump href="http://www.gnu.org/software/autoconf/autoconf.html">Autoconf</jump> and
        <jump href="http://www.gnu.org/software/make/make.html">GNU Make</jump>
        to build the system. You must first make sure you
        have these tools installed on your system before proceeding.
        If you do not have required tools, ask your system administrator
        to get them for you. These tools are free under the GNU Public License
        and may be obtained from the
        <jump href="http://www.gnu.org">Free Software Foundation</jump>.</p>

        <p><em>Do not jump into the build directly before reading this.</em></p>

        <p>Spending some time reading the following instructions will save you a
        lot of wasted time and support-related e-mail communication.
        The &XercesCName; build instructions are a little different from
        normal product builds. Specifically, there are some wrapper-scripts
        that have been written to make life easier for you. You are free
        not to use these scripts and use
        <jump href="http://www.gnu.org/software/autoconf/autoconf.html">Autoconf</jump> and
        <jump href="http://www.gnu.org/software/make/make.html">GNU Make</jump>
        directly, but we want to make sure you 
        <jump href="#runConfigure-example">know what you are by-passing</jump>
        and what risks you are taking. So read the following instructions
        carefully before attempting to build it yourself.</p>

        <p>Besides having all necessary build tools, you also need to know what
        compilers we have tested &XercesCName; on. The following table lists the
        relevant platforms and compilers.</p>

     	&build-winunix-supported-platforms;

        <!-- note about building on untested platforms - see entities.ent -->
        &build-winunix-note;

        <p><em>Differences between the UNIX platforms:</em> The description below is
        generic, but as every programmer is aware, there are minor differences
        within the various UNIX flavors the world has been bestowed with.
        The one difference that you need to watch out in the discussion below,
        pertains to the system environment variable for finding libraries.
        On <em>Linux</em> and <em>Solaris</em>, the environment variable name is called
        <code>LD_LIBRARY_PATH</code>, on <em>AIX</em> it is <code>LIBPATH</code>,
        on <em>Mac OS X</em> it is <code>DYLD_LIBRARY_PATH</code>,
        while on <em>HP-UX</em> it is <code>SHLIB_PATH</code>. The following
        discussion assumes you are working on Linux, but it is with subtle
        understanding that you know how to interpret it for the other UNIX flavors.</p>

        <note>If you wish to build &XercesCName; with ICU,
        look at the <jump href="build-misc.html#faq-1">Building &XercesCName; with ICU</jump>.
        It tells you where you can get ICU and how to build &XercesCName; with it.</note>

        <s3 title="Setting build environment variables">
            <p>Before doing the build, you must first set your environment variables
            to pick-up the compiler and also specify where you extracted &XercesCName;
            on your machine.
            While the first one is probably set for you by the system administrator, just
            make sure you can invoke the compiler. You may do so by typing the
            compiler invocation command without any parameters (e.g. xlc_r, or g++, or cc)
            and check if you get a proper response back.</p>
            <p>Next set your &XercesCName; root path as follows:</p>
<source>export XERCESCROOT=&lt;full path to &XercesCSrcInstallDir;&gt;</source>

            <p>This should be the full path of the directory where you extracted &XercesCName;.</p>
            </s3>

        <s3 title="Building &XercesCName; library">
            <p>As mentioned earlier, to build &XercesCName; from the source distribution,
            you must be ready with the GNU tools like
            <jump href="http://www.gnu.org/software/autoconf/autoconf.html">autoconf</jump> and
            <jump href="http://www.gnu.org/software/make/make.html">gmake</jump>
            before you attempt the build.</p>

            <p>The autoconf tool is required on only one platform and produces
            a set of portable scripts (configure) that you can run on all
            other platforms without actually having the autoconf tool installed
            everywhere. In all probability the autoconf-generated script
            (called <code>configure</code>) is already in your <code>src/xercesc</code>
            directory. If not, type:</p>

<source>cd $XERCESCROOT/src/xercesc
autoconf</source>

            <p>This generates a shell-script called <code>configure</code>. It is tempting to run
            this script directly as is normally the case, but wait a minute. 
Even if you are
            using the default compilers like
            <jump href="http://www.gnu.org/software/gcc/gcc.html">gcc</jump> and
            <jump href="http://www.gnu.org/software/gcc/gcc.html">g++</jump> 
            you need to export a few more
            environment variables before you can invoke configure.</p>

            <p>Rather than make you to figure out what strange environment
            variables you need to use, we have provided you with a wrapper
            script that does the job for you. All you need to tell the script
            is what your compiler is, and what options you are going to use
            inside your build, and the script does everything for you. Here
            is what the script takes as input:</p>

<source>
runConfigure: Helper script to run "configure" for one of the supported platforms
Usage: runConfigure "options"
       where options may be any of the following:
       -p &lt;platform&gt; (accepts 'aix', 'linux', 'freebsd', 
            'netbsd', 'solaris', 'hp-10', 'hp-11', 'openserver', 'unixware', 
            'os400', 'irix', 'ptx', 'tru64', 'macosx, 'cygwin', 'qnx') 
            [required: no default]
       -c &lt;C compiler name&gt; (e.g. gcc, cc, xlc_r, icc or ecc)
            [default is make default; cc for gnu make]
       -x &lt;C++ compiler name&gt; (e.g. g++, CC, aCC, xlC_r, QCC
            icc or ecc) [default is make default; g++ for gnu make]
       -d (specifies that you want to build debug version)
            [default: no debug]
       -m &lt;message loader&gt; can be 'inmem', 'icu', 'MsgFile' or 
            'iconv' [default: inmem]
       -n &lt;net accessor&gt; can be 'fileonly', 'libwww', 'socket' or 
            'native' [default: socket]
       -t &lt;transcoder&gt; can be 'icu', 'Iconv400', 'Uniconv390', 
             'IconvFBSD', 'IconvGNU' or 'native'
             [default: native]
       -r &lt;thread option&gt;  can be 'pthread' or 'dce' 
             (AIX, HP-11, and Solaris) or  'sproc' (IRIX) or 'none'
             [default: pthread]
       -b &lt;bitsToBuild&gt; (accepts '64', '32') [default: 32]
       -l &lt;extra linker options&gt;
       -z &lt;extra compiler options&gt;
       -P &lt;install-prefix&gt;
       -C &lt;any one extra configure options&gt;
       -h (get help on the above commands)
</source>

            <note>&XercesCName; can be built as either a standalone library or as a library
            dependent on International Components for Unicode (ICU). For simplicity,
            the following discussion only explains standalone builds.</note>

            <anchor name="runConfigure-example"/>
            <p>Some additional explanation may be helpful for some of the options:</p>
           <ul><li><em>-m &lt;message loader&gt;, -t &lt;transcoder&gt; </em>
               <br />If you specify <code>icu</code> as the value for either of
                   these options, you must already have set the
                  environment variable ICUROOT</li>
               <li><em>-n &lt;net accessor&gt;</em>
               <br />The default value <code>socket</code> handles HTTP URL's.
               The value <code>native</code> is only supported for macosx.
               </li>
            </ul>
            <p>One of the common ways to build &XercesCName; is as follows:</p>

<source>runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread</source>

            <p>The response will be something like the following (extra line 
             breaks have been added for readability).  See especially the end,
             which tells you how <em>configure</em> was invoked.</p>
<source>
Generating makefiles with the following options ...
Platform: linux
C Compiler: gcc
C++ Compiler: g++
Message Loader: inmem
Net Accessor: socket
Transcoder: native
Thread option: pthread
bitsToBuild option: 32
Extra compile options:
Extra link options:
Extra configure options:
Debug is OFF

creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler 
  (gcc   -w -O -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS 
         -DXML_USE_NETACCESSOR_SOCKET       ) works... yes
checking whether the C compiler 
  (gcc   -w -O -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS 
         -DXML_USE_NETACCESSOR_SOCKET       ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for c++... g++
checking whether the C++ compiler 
  (g++   -w -O -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS 
         -DXML_USE_NETACCESSOR_SOCKET      ) works... yes
checking whether the C++ compiler 
  (g++   -w -O -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS 
         -DXML_USE_NETACCESSOR_SOCKET      ) is a cross-compiler... yes
checking whether we are using GNU C++... yes
checking whether g++ accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking for autoconf... autoconf
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for XMLByte... no
checking host system type... i686-pc-linux-gnu
updating cache ./config.cache
creating ./config.status
creating Makefile
creating util/Makefile
creating util/Transcoders/ICU/Makefile
creating util/Transcoders/Iconv/Makefile
creating util/Transcoders/Iconv390/Makefile
creating util/Transcoders/Uniconv390/Makefile
creating util/Transcoders/Iconv400/Makefile
creating util/Transcoders/IconvFBSD/Makefile
creating util/Transcoders/MacOSUnicodeConverter/Makefile
creating util/Platforms/Makefile
creating util/Platforms/Solaris/Makefile
creating util/Platforms/AIX/Makefile
creating util/Platforms/Linux/Makefile
creating util/Platforms/FreeBSD/Makefile
creating util/Platforms/HPUX/Makefile
creating util/Platforms/OS390/Makefile
creating util/Platforms/OS400/Makefile
creating util/Platforms/IRIX/Makefile
creating util/Platforms/PTX/Makefile
creating util/Platforms/OpenServer/Makefile
creating util/Platforms/UnixWare/Makefile
creating util/Platforms/Tru64/Makefile
creating util/Platforms/MacOS/Makefile
creating util/Compilers/Makefile
creating util/MsgLoaders/InMemory/Makefile
creating util/MsgLoaders/ICU/Makefile
creating util/MsgLoaders/MsgCatalog/Makefile
creating util/MsgLoaders/MsgFile/Makefile
creating util/NetAccessors/Socket/Makefile
creating util/NetAccessors/libWWW/Makefile
creating util/NetAccessors/MacOSURLAccessCF/Makefile
creating util/regx/Makefile
creating validators/Makefile
creating validators/common/Makefile
creating validators/datatype/Makefile
creating validators/DTD/Makefile
creating validators/schema/Makefile
creating validators/schema/identity/Makefile
creating framework/Makefile
creating dom/Makefile
creating dom/impl/Makefile
creating dom/deprecated/Makefile
creating parsers/Makefile
creating internal/Makefile
creating sax/Makefile
creating sax2/Makefile
creating ../../obj/Makefile

Having build problems?
Read instructions at http://xml.apache.org/xerces-c/build.html
Still cannot resolve it?
Find out if someone else had the same problem before.
Go to http://marc.theaimsgroup.com/?l=xerces-c-dev

In future, you may also directly type the following commands to create the Makefiles.

export TRANSCODER="NATIVE"
export MESSAGELOADER="INMEM"
export NETACCESSOR="Socket"
export THREADS="pthread"
export BITSTOBUILD="32"
export CC="gcc"
export CXX="g++"
export CXXFLAGS=" -w -O -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER 
                  -DXML_USE_PTHREADS -DXML_USE_NETACCESSOR_SOCKET "
export CFLAGS=" -w -O -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER 
                -DXML_USE_PTHREADS -DXML_USE_NETACCESSOR_SOCKET "
export LDFLAGS=" "
export LIBS=" -lpthread "
configure

If the result of the above commands look OK to you, go to the directory
$HOME/&XercesCSrcInstallDir;/src/xercesc and type "gmake" to make the XERCES-C system.</source>

            <p>So now you see what the wrapper script has actually been doing! It has
            invoked <code>configure</code>
            to create the Makefiles in the individual sub-directories, but in addition
            to that, it has set a few environment variables to correctly configure
            your compiler and compiler flags too.</p>

            <p>Now that the Makefiles are all created, you are ready to do the actual build.</p>

<source>gmake</source>

            <p>Is that it? Yes, that's all you need to build &XercesCName;.</p>
        </s3>

        <s3 title="Building samples">
        <p>The installation process for the samples is same on all UNIX
         platforms.
        </p>
<source>cd &XercesCInstallDir;-linux/samples
./runConfigure -p&lt;platform&gt; -c&lt;C_compiler&gt; -x&lt;C++_compiler&gt;
gmake</source>
         <p>This will create the object files in each sample directory
          and the executables in ' &XercesCInstallDir;-linux/bin' directory.</p>

         <p>Note that <em>runConfigure</em> is just a helper script and you are free to
          use <em>./configure</em> with the correct parameters to make it work
          on any platform-compiler combination of your choice. The script needs the following parameters:

         </p>
<source>
runConfigure: Helper script to run "configure" for one of the supported platforms
Usage: runConfigure "options"
       where options may be any of the following:
       -p &lt;platform&gt; (accepts 'aix', 'beos', 'linux', 'freebsd', 'netbsd',
                 'solaris', 'hp-10', 'hp-11', 'openserver', 'unixware', 
                 'os400', 'irix', 'ptx', 'tru64', 'macosx', 'cygwin')
                 [required; no default]
       -c &lt;C compiler name&gt; (e.g. gcc, cc, xlc_r, icc or ecc)
                 [default is make default; cc for gnu make]
       -x &lt;C++ compiler name&gt; (e.g. g++, CC, aCC, xlC_r, QCC, 
                 icc or ecc)  [default is make default; g++ for gnu make]
       -d (specifies that you want to build debug version) [default: not debug]
       -r &lt;thread option&gt; can be 'pthread' or 'dce' 
             (AIX, HP-11, and Solaris) or 'sproc' (IRIX) or 'none'
             [default: pthread]
       -b &lt;bitsToBuild&gt; (accepts '64', '32') [default: 32]
       -l &lt;extra linker options&gt;
       -z &lt;extra compiler options&gt;
       -h (get help on the above commands)
</source>

         <note><em>NOTE:</em>The code samples in this section assume that you are working on the Linux binary drop.
         If you are using some other UNIX flavor, please replace '-linux' with the appropriate
         platform name in the code samples.</note>

         <p>To delete all the generated object files and executables, type:</p>
<source>gmake clean</source>
        </s3>
    </s2>

    <anchor name="UNIX_SingleThread"/>
    <s2 title="Building &XercesCName; as a single-threaded library on Unix platforms">
         <p>To build a single-threaded library on Unix platforms you have to update
         one or more of the following files <code>Makefile.incl, Makefile.in, runConfigure</code>.
         The following steps guide you to create a single-threaded library for each platform:</p>

         <p>For Aix - </p>
         <ul>
         <li>Replace <code>xlc_r</code> and <code>xlC_r</code> libraries with
            <code>xlc</code> and <code>xlC</code> respectively</li>
         <li>Replace <code>makeC++SharedLib_r</code> with <code>makeC++SharedLib</code></li>
         <li>Remove the flag <code>-D_THREAD_SAFE</code></li>
         <li>Remove inclusion of any threaded library directories from the <code>LIBPATH</code></li>
         <li>Remove inclusion of <code>-lpthreads</code> and <code>-lpthread_compat</code></li>
         <li>Add <code>-DAPP_NO_THREADS</code> to define the variable under AIX specific options
                  in <code>Makefile.incl</code></li>
         </ul>

        <p>For Solaris -</p>
         <ul>
          <li>Add <code>-DAPP_NO_THREADS</code> to define the variable under SOLARIS
            specific options in <code>Makefile.incl</code></li>
          <li>Remove compiler switch <code>-mt</code></li>
          <li>Remove <code>-D_REENTRANT</code> flag from the 'compile' options</li>
      <li>Remove inclusion of <code>-lpthread</code></li>
    </ul>

    <p>For Linux -</p>
        <ul>
         <li>Add <code>-DAPP_NO_THREADS</code> to define the variable under LINUX
            specific options in <code>Makefile.incl</code></li>
     <li>Remove <code>-D_REENTRANT</code> flag from the 'compile' options</li>
     <li>Remove inclusion of <code>-lpthread</code></li>
    </ul>


    <p>For HPUX -</p>
        <ul>
         <li>Add <code>-DAPP_NO_THREADS</code> to define the variable under HP
            specific options in <code>Makefile.incl</code></li>
     <li>Remove inclusion of <code>-lpthread</code> and <code>-lcma</code></li>
     <li>Remove threading defines like <code>-D_PTHREADS_DRAFT4 ,
        -DXML_USE_DCE</code></li>
    </ul>
   </s2>
</s1>
