<?xml version="1.0"?>
<!--
SPDX-FileCopyrightText: Copyright The SCons Foundation (https://scons.org)
SPDX-License-Identifier: MIT
SPDX-FileType: DOCUMENTATION

This file is processed by the bin/SConsDoc.py module.
-->

<!DOCTYPE sconsdoc [
<!ENTITY % scons SYSTEM '../../doc/scons.mod'>
%scons;
<!ENTITY % builders-mod SYSTEM '../../doc/generated/builders.mod'>
%builders-mod;
<!ENTITY % functions-mod SYSTEM '../../doc/generated/functions.mod'>
%functions-mod;
<!ENTITY % tools-mod SYSTEM '../../doc/generated/tools.mod'>
%tools-mod;
<!ENTITY % variables-mod SYSTEM '../../doc/generated/variables.mod'>
%variables-mod;
]>

<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">

<tool name="jar">
<summary>
<para>
Sets construction variables for the &jar; utility.
</para>
</summary>
<sets>
<item>JAR</item>
<item>JARFLAGS</item>
<item>JARCOM</item>
<item>JARSUFFIX</item>
</sets>
<uses>
<item>JARCOMSTR</item>
</uses>
</tool>

<builder name="Jar">
<summary>
<para>
Builds a Java archive (<filename>.jar</filename>) file
from the specified list of sources.
Any directories in the source list
will be searched for <filename>.class</filename> files).
Any <filename>.java</filename> files in the source list
will be compiled  to <filename>.class</filename> files
by calling the &b-link-Java; Builder.
</para>

<para>
If the &cv-link-JARCHDIR; value is set, the
&jar;
command will change to the specified directory using the
<option>-C</option>
option.
If &cv-JARCHDIR; is not set explicitly,
&SCons; will use the top of any subdirectory tree
in which Java <filename>.class</filename>
were built by the &b-link-Java; Builder.
</para>

<para>
If the contents any of the source files begin with the string
<literal>Manifest-Version</literal>,
the file is assumed to be a manifest
and is passed to the
&jar;
command with the
<option>m</option>
option set.
</para>

<example_commands>
env.Jar(target = 'foo.jar', source = 'classes')

env.Jar(target = 'bar.jar',
        source = ['bar1.java', 'bar2.java'])
</example_commands>
</summary>
</builder>

<cvar name="JAR">
<summary>
<para>
The Java archive tool.
</para>
</summary>
</cvar>

<cvar name="JARCHDIR">
<summary>
<para>
The directory to which the Java archive tool should change
(using the
<option>-C</option>
option).
</para>
</summary>
</cvar>

<cvar name="JARCOM">
<summary>
<para>
The command line used to call the Java archive tool.
</para>
</summary>
</cvar>

<cvar name="JARCOMSTR">
<summary>
<para>
The string displayed when the Java archive tool
is called
If this is not set, then &cv-link-JARCOM; (the command line) is displayed.
</para>

<example_commands>
env = Environment(JARCOMSTR="JARchiving $SOURCES into $TARGET")
</example_commands>
</summary>
</cvar>

<cvar name="JARFLAGS">
<summary>
<para>
General options passed to the Java archive tool.
By default, this is set to
<option>cf</option>
to create the necessary
<command>jar</command>
file.
</para>
</summary>
</cvar>

<cvar name="JARSUFFIX">
<summary>
<para>
The suffix for Java archives:
<filename>.jar</filename>
by default.
</para>
</summary>
</cvar>

</sconsdoc>
