| <?xml version="1.0" standalone="no"?> |
| <!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd"> |
| <!-- |
| * Copyright 1999-2004 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. |
| --> |
| <s1 title="Building &xslt4c;"> |
| <anchor name="build"/> |
| <p>This page was created for users who have downloaded the source distribution of &xslt4c; and are looking for guidance on how to |
| build the &xslt4c; libraries themselves.</p> |
| <ul> |
| <li><link anchor="rebuild">Rebuilding &xslt4c;</link></li> |
| <li><link idref="samples" anchor="rebuilding">Rebuilding sample applications</link></li> |
| </ul> |
| |
| <anchor name="rebuild"/> |
| <s3 title="Rebuilding &xslt4c;"> |
| <ul> |
| <li><link anchor="needed">What you need from the distributions</link></li> |
| <li><link anchor="win32">Steps for doing a Windows Build</link></li> |
| <li><link anchor="dotNet">Steps for doing a Windows Build with Visual Studio .NET</link></li> |
| <li><link anchor="unix">Steps for doing a UNIX build</link></li> |
| <li><link anchor="locale">Steps for doing a Build with Message Localization Support</link></li> |
| <li><link anchor="xercesdepdom">Steps for doing a Build with Xerces Deprecated DOM Support</link></li> |
| </ul> |
| </s3> |
| |
| <anchor name="needed"/> |
| <s3 title="What you need from the distributions"> |
| <p>To rebuild &xslt4c;, you need the &xslt4c; source files, the &xml4c; header files, and for Windows the &xml4c; .lib file. |
| If you want to rebuild with the ICU, you will need to download the ICU source package to build the ICU libraries. </p> |
| <note>You can also download &xslt4c; source distributions from <resource-ref idref="xslt4c-distdir"/>: &xslt4c-dist;-src.zip |
| and &xslt4c-dist;-src.tar.gz. &xml4c; source distributions are available from <resource-ref idref="xml4c-distdir"/>: |
| &xml4c-dist;-src.zip and &xml4c-dist;-src.tar.gz.</note> |
| <p>Keep in mind that at any given point in time the &xslt4c; and &xml4c; source trees in the Apache XML repository may not |
| be consistent. When we release a version of &xslt4c; we certify that it is compatible with a given version of &xml4c;. To |
| be safe, use the Xerces distributions that we certify as compatible. Reminder: &xslt4c-current; is compatible with |
| &xml4c-used;.</p> |
| <p>For information on using the <resource-ref idref="icu"/>, see <link idref="usagepatterns" anchor="icu">Using the ICU</link>. |
| The recommended version of ICU for &xslt4c-current; is &icu-current;. You may be able to use newer ICU releases as they appear.</p> |
| </s3> |
| |
| <anchor name="win32"/> |
| <s3 title="Steps for doing a Windows build"> |
| <p>To build &xslt4c; on Windows, you need &xml4c; and a C++ compiler for Windows (either MS Visual C++ 6.0 installed with Service |
| Pack 5 for Visual C++ OR Visual Studio .NET).</p> |
| <p>If you are using a different Service Pack, you must rebuild all of the Xerces and Xalan binaries.</p> |
| <p>Before you do the following, be sure you have <link idref="install" anchor="windowspath">provided Visual C++ the paths to |
| the Xerces headers and libraries</link>.</p> |
| <ol> |
| <li>Create the XERCESCROOT environment variable and set it to the path of the root directory of &xml4c;.</li> |
| <li>If you are building with ICU, create the ICUROOT environment variable and set it the the path of the ICU root directory.</li> |
| <li>Use Visual C++ to open the Xalan workspace (.dsw) from the &xslt4c-win_root;\Projects\Win32\VC6. If you are building with |
| ICU, then use XalanICU.dsw. Otherwise, open the Xalan.dsw workspace.<br/><br/> |
| <note>You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.</note> |
| <br/> |
| As an alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual C++. From the |
| "Options" window, click on the "Directories" tab and do the following: |
| <ol> |
| <li>Show Directories for: Executable files. Add the Xerces bin directory to the list.</li> |
| <li>Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the |
| ICU include directory to the list as well.</li> |
| <li>Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU |
| lib directory to the list as well.</li> |
| </ol></li> |
| </ol> |
| <!-- note>To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the |
| Xalan headers in its new location. (see image below)</note> |
| <p><img src="options-sane.gif" alt="Visual C++ 6.0 Include Directories change"/></p --> |
| </s3> |
| |
| <anchor name="dotNet"/> |
| <s3 title="Steps for doing a Windows Build with Microsoft Visual Studio .NET"> |
| <p>For users who want to build with Visual Studio .NET,</p> |
| <ol> |
| <li>Create the XERCESCROOT environment variable and set it to the path of the root directory of &xml4c;.</li> |
| <li>If you are building with ICU, create the ICUROOT environment variable and set it to the path of the ICU root directory.</li> |
| <li>Use Visual Studio .NET to open the Xalan solution (.sln) from the &xslt4c-win_root;\Projects\Win32\VC7.1. If you are building |
| with ICU, then use XalanICU.sln. Otherwise, open the Xalan.sln solution file.<br/><br/> |
| <note>You may need to restart Visual Studio .NET in order for ICUROOT and XERCESCROOT to take effect.</note> |
| <br/> |
| An alternative method to the steps described above, would be to go to "Tools" and select "Options" from Visual Studio .NET. From |
| the "Options" window, click on the "Projects" folder to expand the list. Select "VC++ Directories" from the list and do the following: |
| <ol> |
| <li>Show Directories for: Executable files. Add the Xerces bin directory to the list.</li> |
| <li>Show Directories for: Include files. Add the Xerces include directory to the list. If you are building with ICU, add the |
| ICU include directory to the list as well.</li> |
| <li>Show Directories for: Library files. Add the Xerces lib directory to the list. If you are building with ICU, add the ICU |
| lib directory to the list as well.</li> |
| </ol></li> |
| </ol> |
| <!-- note>To recompile existing applications without changing your source code, be sure to modify your Project settings to pick up the |
| Xalan headers in its new location. (see image below)</note> |
| <p><img src="NET_options.jpg" alt="Visual Studio .NET Include Directories change"/></p --> |
| </s3> |
| |
| <anchor name="unix"/> |
| <s3 title="Steps for doing a UNIX build"> |
| <p>For users who want to build in the UNIX environment,</p> |
| <ol> |
| <li>The Xalan build files are written for GNU make, and will not work with other make utilities.<br/><br/></li> |
| <li>Set the XERCESCROOT environment variable to the path to the root directory of &xml4c;.<br/><br/></li> |
| <li>Set the XALANCROOT environment variable to the path to the c directory in the root directory of the &xslt4c; |
| distribution. For example, if the distribution is located in "/home/mydir", you would set the XALANCROOT to |
| "/home/mydir/&xslt4c-unix_root;". <br/><br/></li> |
| <li>(Optional) If you decide to build with ICU, integrate the build with ICU by installing the ICU (see <link |
| idref="usagepatterns" anchor="icu">Using the ICU</link>) and defining XALAN_USE_ICU to a value, for example: |
| export XALAN_USE_ICU=true. Set the ICUROOT environment variable to the path to the root directory of ICU. |
| Note that building Xalan with ICU requires that Xerces must also be built with ICU.<br/><br/></li> |
| <li>Change directory to XALANCROOT. You can also build Xalan-C outside of the source tree, but you will need to adjust the path to the |
| runConfigure script in the next step.<br/><br/></li> |
| <li>Run the runConfigure utility and provide the platform, C compiler, and C++ compiler flags as |
| indicated below. The runConfigure utility is used to generate the appropriate Makefile for |
| the desired build platform based on the options specified by the user. Valid options for the |
| runConfigure utility are:<br/><br/> |
| <code>./runConfigure -p <value> -c <value> -x <value> [-[flag] <value>]</code><br/><br/> |
| <table> |
| <tr><th>flag</th><th>Description</th></tr> |
| <tr><td>p</td><td>Build platform. Option must be provided by user. Valid values <br/>include: |
| aix, linux, freebsd, netbsd, solaris, hp-10, hp-11, hp-11-ia64, irix,<br/> |
| tru64, macosx, cygwin. </td></tr> |
| <tr><td>c</td><td>C compiler name. Example: gcc, cc, c89, xlc_r, etc.</td></tr> |
| <tr><td>x</td><td>C++ compiler name. Example: g++, xlC_r, CC, etc.</td></tr> |
| <tr><td>d</td><td>Indicates build is a debug build. Takes no values. Default is no <br/>debug.</td></tr> |
| <tr><td>t</td><td>Transcoder to use. Valid value is 'icu'. Default is null.</td></tr> |
| <tr><td>m</td><td>Type of localization support method. Valid values include: inmem, <br/>icu, and nls. |
| Default is inmem.</td></tr> |
| <tr><td>M</td><td>Locale for Message Localization Support. Default is "en_US"</td></tr> |
| <tr><td>r</td><td>Threads option. Valid values include: pthread or dce. Default is <br/>pthread. |
| (valid on HP-UX only)</td></tr> |
| <tr><td>b</td><td>Specify whether it is a 32-bit or 64-bit build. Valid values are 32 <br/>and 64. |
| Default is 32-bit</td></tr> |
| <tr><td>P</td><td>Install root directory. Used if invoking build with gmake install or <br/>gmake |
| install-package. Default install root directory is /usr/local</td></tr> |
| <tr><td>l</td><td>Extra link options other than the default. Default is null</td></tr> |
| <tr><td>z</td><td>Extra compiler options other than the default. Default is null</td></tr> |
| <tr><td>C</td><td>Extra configuration options.</td></tr> |
| <tr><td>h</td><td>To get help on the above commands. Default is no help.</td></tr> |
| </table><br/> |
| <ref>Linux using GCC:</ref> <code>./runConfigure -p linux -c gcc -x g++</code><br/> |
| <ref>Linux using the Intel compiler:</ref> <code>./runConfigure -p linux -c icc -x icc</code><br/> |
| <ref>AIX (32-bit):</ref> <code>./runConfigure -p aix -c xlc_r -x xlC_r</code><br/><br/> |
| <ref>AIX (64-bit):</ref> <code>./runConfigure -p aix -c xlc_r -x xlC_r -b 64</code><br/><br/> |
| <ref>Cygwin (32-bit):</ref> <code>./runConfigure -p cygwin -c gcc -x g++</code><br/><br/> |
| <ref>HP-UX 11 (32-bit):</ref> <code>./runConfigure -p hp-11 -c cc -x aCC</code><br/><br/> |
| <ref>HP-UX 11 (64-bit):</ref> <code>./runConfigure -p hp-11 -c cc -x aCC -b 64</code><br/><br/> |
| <ref>HP-UX 11 for Itanium (32-bit):</ref> <code>./runConfigure -p hp-11-ia64 -c cc -x aCC</code><br/><br/> |
| <ref>HP-UX 11 for Itanium (64-bit):</ref> <code>./runConfigure -p hp-11-ia64 -c cc -x aCC -b 64</code><br/><br/> |
| <ref>Solaris (32-bit):</ref> <code>./runConfigure -p solaris -c cc -x CC</code><br/><br/> |
| <ref>Solaris (64-bit):</ref> <code>./runConfigure -p solaris -c cc -x CC -b 64</code><br/><br/> |
| if you choose to install the distribution after building the libraries and executables, |
| then you will need to indicate where you would like the distribution to be installed. |
| To specify the install directory for your distribution, specify the flag -P <install directory>. |
| for example, building and installing on the AIX platform:<br/><br/> |
| <code>./runConfigure -p aix -c xlc_r -x xlC_r -P $HOME/my_xalan</code><br/><br/> |
| <note>The standard binary directories bin, lib, and include are created in the specified directory only if the install or |
| install-package option is specified in the build process.<br/><br/></note> |
| To see the other runConfigure flags you may include, use the help flag:<br/><br/> |
| <code>./runConfigure -h</code><br/><br/></li> |
| <li>Purge the previous build:<br/><br/> |
| <code> make clean</code><br/><br/></li> |
| <li>Run the new build:<br/><br/> |
| <code>make</code><br/> |
| or<br/> |
| <code>make <ref>targ</ref></code><br/><br/> |
| where <ref>targ</ref> can be one of: |
| <table> |
| <tr><th>targ</th><th>Description</th></tr> |
| <tr><td>all</td><td>Build the libraries and Xalan executable. This is the default target <br/>if no targ |
| is specified.</td></tr> |
| <tr><td>clean</td><td>Deletes existing binaries, executables, libraries, tests, and <br/>samples.</td></tr> |
| <tr><td>install</td><td>Build the library, executables, and samples, and copy them (along with <br/>the header files) |
| the specified install location.</td></tr> |
| <tr><td>install-package</td><td>Installs the library, executables, and samples to the <br/>specified location.</td></tr> |
| <tr><td>Samples</td><td>Builds the samples.</td></tr> |
| <tr><td>Tests</td><td>Builds the tests.</td></tr> |
| </table> |
| </li> |
| </ol> |
| <!-- note>To recompile existing applications without changing your source code, be sure to modify the command line in your Makefile |
| to pick up the Xalan headers from it's new location. e.g: if your xalan source location is in /home/&xslt4c-unix_root;,</note> |
| <p><br/> <code>CC ... -I/home/&xslt4c-unix_root;/src -I/home/&xslt4c-unix_root;/src/xalanc |
| mysrc.cpp</code></p --> |
| </s3> |
| |
| <anchor name="locale"/> |
| <s3 title="Steps for doing a Build with Message Localization Support"> |
| <p>Message Localization Support is a new feature to allow users to build &xslt4c; such that diagnostic messages are issued |
| in the language of their choice. Message localization support comes in three flavours:</p> |
| <ul> |
| <li>Building static messages in the form of a library (DLL or shared object) which can be bound |
| to the Xalan executable. This method is referred to as "in memory". By default, &xslt4c; is built using "in memory" |
| method.</li> |
| <li>Building messages in the form of a library using localization support provided by the International Components for |
| Unicode (ICU). </li> |
| <li>Building messages in the form of a message catalog. This method utilizes the localization support provided by the Unix |
| National Language Support (NLS) system. This method is supported for UNIX platforms only. </li> |
| </ul> |
| <p>Regardless of which method you choose, a message file containing translated messages in the language of your choice must |
| be provided. The standard message file provided in the &xslt4c-current; source package is in XML Localization Interchange |
| File Format (XLIFF) format and conforms to the XLIFF 1.1 standard (please see |
| <jump href="http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm"> |
| http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm</jump> for more information.) All message files |
| must be written and conform with the XLIFF 1.1 standard.</p> |
| <p>Once an XLIFF message file has been created, the XLIFF file should be stored under &xslt4c-unix_root;/src/xalanc/NLS/<locale_name> |
| directory (for example, the default XLIFF message file provided is XalanMsg_en_US.xlf). To build, you will need to follow the |
| same steps as shown above for building in Unix or Windows but with a small change.</p> |
| <p>For building on Windows platform with "In Memory" method:</p> |
| <ol> |
| <li>Create the environment variable XERCESCROOT and set it to the path to the root directory of &xml4c;.</li> |
| <li>Create the environment variable ICUROOT and set it to the path to the ICU root directory.</li> |
| <li>Open the Xalan.dsw workspace using Microsoft Visual C++. The "inmem" localization method should be configured by default.</li> |
| <li>Select the Localization project, and go to Settings and click on the "General" tab. Verify |
| the build command line to use "nmake /f BuildMessages.mak TYPE=inmem LOCAL=en_US"</li> |
| <li>Run "Build all" with the configuration of your choice. </li> |
| </ol> |
| <p>For building on the Windows platform with ICU method:</p> |
| <ol> |
| <li>Create the environment variable XERCESCROOT and set it to the path to the root directory of &xml4c;.</li> |
| <li>Create the environment variable ICUROOT and set it to the path to the ICU root directory.</li> |
| <li>Open the XalanICU.dsw workspace using Microsoft Visual C++. </li> |
| <li>Select the AllInOneWithICU project, and ensure that the project depends on the LocalizationWithICU |
| project. </li> |
| <li>Select the LocalizationWithICU project, and go to Settings and click on the "General" tab. Modify |
| the build command line to use "nmake /f BuildMessages.mak TYPE=icu LOCAL=en_US"</li> |
| <li>Open the tools.ini file under Projects\Win32\VC6\Utils\Localization and add the ICU root |
| directory to the ICUROOT variable setting.</li> |
| <li>Run "Build all" with the configuration of your choice. </li> |
| </ol> |
| <p>For building on the Unix platform:</p> |
| <ol> |
| <li>Repeat steps 1 through 5 as outlined under "Steps for doing a UNIX Build" </li> |
| <li>Run the runConfigure and provide the platform, C compiler, C++ compiler, the message locale |
| system flavour you are intending to build, and the locale support.<br/><br/> |
| Example 1: to use the NLS method for localization support using the default locale en_US:<br/><br/> |
| <ref>AIX (32-bit):</ref> <code>./runConfigure -p aix -c xlc_r -x xlC -m nls</code><br/><br/> |
| <ref>AIX (64-bit):</ref> .<code>/runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m nls</code><br/><br/> |
| Example 2: to use the 'icu' method for localization support using the locale fr_FR:<br/><br/> |
| <ref>AIX (32-bit):</ref> <code>./runConfigure -p aix -c xlc_r -x xlC_r -m icu -M fr_Fr</code><br/><br/> |
| <ref>AIX (64-bit):</ref> <code>./runConfigure -p aix -c xlc_r -x xlC_r -b 64 -m icu -M fr_Fr</code><br/><br/> |
| </li> |
| <li>Perform steps 7 and 8 as outlined under "Steps for doing a UNIX Build" </li> |
| </ol> |
| <p>After &xslt4c; and associated libraries have been successfully built, the message catalog will be stored in the directory |
| &xslt4c-unix_root;/bin.<br/><br/> |
| <table> |
| <tr><th>Localization Build Type</th><th>File Name</th></tr> |
| <tr><td><ref>ICU or "in memory" method:</ref></td><td>&xslt4c-msgsho; (for UNIX)<br/> |
| &xslt4c-msgdll; and &xslt4c-msglib; (for Windows)</td></tr> |
| <tr><td><ref>NLS method:</ref></td><td>&xslt4c-msgcat; can be found in $XALANCROOT/nls/<locale_name>/ directory</td></tr> |
| </table> |
| </p> |
| <p>The location of the message library, &xslt4c; and &xml4c; binaries need to be added to the PATH and library path variables. |
| Depending on the Message Localization Support method you've chosen, the following steps will need to be performed such that |
| &xslt4c; will be able to utilize the message library. </p> |
| <ul> |
| <li>For an "in memory" or "icu" build, the location of the &xslt4c; and &xml4c; executables need to be added to the PATH variable. |
| The location of the message library will need to be added to: |
| <ul> |
| <li>the LIBPATH variable for AIX users </li> |
| <li>the LD_LIBRARY_PATH variable for RedHat, SuSE, and Solaris users </li> |
| <li>the SHLIB_PATH variable for HP-UX users. </li> |
| </ul> |
| </li> |
| <li>For an NLS build, the message catalog will need to be added to the NLSPATH. </li> |
| </ul> |
| </s3> |
| |
| <anchor name="xercesdepdom"/> |
| <s3 title="Steps for doing a Build with Xerces Deprecated DOM Support"> |
| <p>If your application is dependent on the XercesBridge classes to interface with the deprecated Xerces DOM, then the following |
| steps must be taken.</p> |
| <p>For a Windows build using Microsoft Visual C++ version 6.0:</p> |
| <ol> |
| <li>Open the Xalan.dsw workspace</li> |
| <li>Go to "Projects" and select "Settings". From the "Project Settings panel", highlight the AllInOne project.</li> |
| <li>Click on the "C/C++" tab on the right hand side. From the "Category" pull down menu, scroll down to find "Preprocessor" |
| and click to highlight this category.</li> |
| <li>Under the "Preprocessor Definitions" box, add "XALAN_BUILD_DEPRECATED_DOM_BRIDGE" to the list of definitions.</li> |
| <li>Rebuild &xslt4c; as described under <link anchor="win32">"Steps for doing a Windows Build"</link></li> |
| </ol> |
| <p>For a UNIX build, the following parameter should be added to your runConfigure step: <code>-z -DXALAN_BUILD_DEPRECATED_DOM_BRIDGE</code>. |
| For example,</p> |
| <code>./runConfigure -p aix -c xlc_r -x xlC_r -z -DXALAN_BUILD_DEPRECATED_DOM_BRIDGE</code><br/><br/> |
| </s3> |
| |
| </s1> |