# ve |

## Description

Invoke Object Tools's Visual Eiffel Compiler.

## Parameters

esd
  Description: Name of esd file

  Domain: Valid filename pointing to existing file

  Default: empty string

xace
  Description: Name of Xace file

  Domain: Valid filename pointing to existing file

  Default: empty string

recursive
  Description: recursive

  Domain: Boolean (true|false)

  Default: false

tune
  Description: tune

  Domain: Boolean (true|false)

  Default: false

level
  Description: level

  Domain: large|huge

  Default: -

clean
  Description: clean

  Domain: valid system name

  Default: empty string

exit_code_variable
  Description: Name of variable holding the compiler process's return code after it's run

  Domain: Intgeger (usually 0 for OK, and any other number for not OK)

  Default: `Void' (no variable is set if attribute is not specified)

Note: In mode 'clean' the directory 'eCluster' and the files Result.out', 'vec.xcp' are deleted as well if they exist. If 'recursive' is set to 'true' 'clean' is applied to each subdirectory recursively. In mode tune the Eiffel System is tuned with Visual Eiffel's tuner. Visual Eiffel 5.0 uses Xace files. When both 'esd' and 'xace' attributes are specified, only 'esd' is taken into account.

## RNG Specification

      <define name="ve">
        <element name="ve">
          <ref name="dir_if_unless"/>
          <choice>
            <attribute name="esd"/>
            <attribute name="xace"/>
            <group>
              <attribute name="clean"/>
              <optional>
                <attribute name="recursive"/>
              </optional>
            </group>
            <group>
              <attribute name="tune"/>
              <optional>
                <attribute name="level">
                  <!-- runtime evaluation
                  <choice>
                    <value>large</value>
                    <value>huge</value>
                  </choice>
                  -->
                </attribute>
              </optional>
            </group>
          </choice>
        </element>
      </define>

## Examples

      <ve esd="compile_ve.esd"/>

      <ve xace="compile_ve.xace"/>

      <ve clean="kernel" recursive="true"/>

      <ve tune="${system}${exe}" level="${vetuner}" if="${vetuner}"/>