<?xml version="1.0" standalone="no"?>
<!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 applications'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; sourec 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; sourec 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</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 runConfigure 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 know what you are by-passing 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>

      <table>
        <tr>
          <th><em>Operating System</em></th>
          <th><em>Compiler</em></th>
        </tr>
        <tr>
          <th><em>32-bit binary</em></th>
          <td></td>
        </tr>
        <tr>
          <td>Redhat Linux 7.2</td>
          <td>Intel C++ Compiler v6, icc</td>
        </tr>
        <tr>
          <td>AIX 5.1</td>
          <td>xlC_r 5.0.2</td>
        </tr>
        <tr>
          <td>Solaris 2.7</td>
          <td>Forte C++ Version 6 Update 2</td>
        </tr>
        <tr>
          <td>HP-UX 11.0</td>
          <td>aCC A.03.13 with pthreads</td>
        </tr>
        <tr>
          <td>SuSE Linux 7.2 (S390)</td>
          <td>g++ 2.95</td>
        </tr>
        <tr>
          <th><em>64-bit binary</em></th>
          <td></td>
        </tr>
        <tr>
          <td>Redhat Linux 7.2, IA64</td>
          <td>Intel C++ Compiler v6, ecc</td>
        </tr>
        <tr>
          <td>AIX 5.1</td>
          <td>xlC_r 5.0.2</td>
        </tr>
        <tr>
          <td>Solaris 2.7</td>
          <td>Forte C++ Version 6 Update 2</td>
        </tr>
        <tr>
          <td>HP-UX 11.0</td>
          <td>aCC A.03.13 with pthreads</td>
        </tr>
      </table>

        <p>If you are not using any of these compilers, you are taking a calculated risk
        by exploring new grounds. Your effort in making &XercesCName; work on this
        new compiler is greatly appreciated and any problems you face can be addressed
        on the <jump href="mailto:&XercesCEmailAddress;">&XercesCName; mailing list</jump>.
        </p>

        <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 and 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. 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 do not have a problem. But
            if you are not on the standard GNU compilers, 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', 'solaris',
            'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
            'ptx', 'tru64', 'macosx')
       -c &lt;C compiler name&gt; (e.g. gcc, cc, xlc_r, icc or ecc)
       -x &lt;C++ compiler name&gt; (e.g. g++, CC, xlC_r, icc or ecc)
       -d (specifies that you want to build debug version)
       -m &lt;message loader&gt; can be 'inmem', 'icu', 'MsgFile' or 'iconv'
       -n &lt;net accessor&gt; can be 'fileonly', 'libwww', 'socket' or 'native'
       -t &lt;transcoder&gt; can be 'icu', 'Iconv400', 'Iconv390', 'Uniconv390', 'IconvFBSD' or 'native'
       -r &lt;thread option&gt; can be 'pthread' or 'dce' (AIX, HP-11, and Solaris) or 'sproc' (IRIX) or 'none'
       -b &lt;bitsToBuild&gt; (accepts '64', '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>

            <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 this:</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>

<note>The error message concerning <code>conf.h</code>
is NOT an indication of a problem. This code has been inserted to make it
work on AS/400, but it gives this message which appears to be an error. The problem
will be fixed in future.</note>

            <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', 'linux', 'freebsd', 'solaris',
                 'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
                 'ptx', 'tru64', 'macosx')
       -c &lt;C compiler name&gt; (e.g. gcc, cc, xlc_r, icc or ecc)
       -x &lt;C++ compiler name&gt; (e.g. g++, CC, xlC_r, icc or ecc)
       -d (specifies that you want to build debug version)
       -r &lt;thread option&gt; can be 'pthread' or 'dce' (AIX, HP-11, and Solaris) or 'sproc' (IRIX) or 'none'
       -b &lt;bitsToBuild&gt; (accepts '64', '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>
