Xace is a notation to specify the information needed to compile an Eiffel program.
It stands for XML Assembly of Classes in Eiffel. It was initially designed to be
independent of Eiffel compilers and then be converted to the supported Eiffel
compilers' own notations with the tool gexace. That
way only one file needs to be written and maintained. Xace is also natively supported
by the Gobo tools without the need to be converted first.
Options
Following is the list of options supported in Xace (of the form
<option name="..." value="..."/>) at the
various levels (system/library, cluster, class and feature), and
how they are translated to the Eiffel compiler dependent notations.
"N/A" does not necessarily mean that the corresponding Eiffel compiler does not
support this facility, it could just be that the facility is not parameterizable
or is activated from the command-line or from a separate tool rather than from
the Eiffel configuration file. When an entry is marked "N/A" the option
will be silently ignored and nothing will be generated in the Eiffel compiler
dependent configuration file for this option. Likewise when the name of an
option is not supported in Xace.
The Default section shows Xace default value
when this option is not explicitly specified in the Xace file. It can be different
from the default value used by the various Eiffel compiler dependent notations.
For further details about each option, please refer to the
documentation provided with the Eiffel compilers.
- abstract
-
- Values:
- true | false
- Default:
- false
- Scope:
- cluster
- Description:
-
Specify that this cluster should not be searched
for Eiffel classes (but its subclusters can if they
don't have this option set).
- ISE ECF:
-
- true =>
-
-
if there is at least one non-abstract subcluster =>
-
<cluster name="..." location="..."/>
-
if there is no non-abstract subcluster =>
-
No output
-
false => <cluster name="..." location="..."/>
- address_expression
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Enable expressions of the form '$(s.to_c)' instead
of having to declare 'a' of type ANY, and then having to
assign 's.to_c' to 'a' and passing '$a'. Turn this option on
only if you have advanced knowledge of the garbage collector
insides, since using this syntax illegally can lead to bugs
very hard to trace.
- ISE ECF:
-
-
true => <setting name="address_expression" value="true"/>
-
false => <setting name="address_expression" value="false"/>
- array_optimization
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
-
Enable array optimization in loops when the array
has been declared as local variable or formal argument.
-
The system needs to be compiled in finalized mode
in order for this option to have any effect.
- ISE ECF:
-
-
true => <setting name="array_optimization" value="true"/>
-
false => <setting name="array_optimization" value="false"/>
- assembly
-
- Values:
- Name
- Default:
- No default
- Scope:
- cluster
- Description:
-
-
Specify that the cluster is in fact a .NET assembly.
- ISE ECF:
-
-
name => <assembly name="cluster_name" location="cluster_pathname" assembly_name="name"/>
- assertion
-
- Values:
-
none | generate | require | supplier_precondition | ensure | invariant | loop_invariant | loop_variant | check | all
- Default:
- require
- Scope:
- system/library, cluster, class
- Description:
-
-
Set default assertion level.
-
The purpose of 'generate' is to generate the code of
the assertions in the generated code even if these assertions
are turned off.
-
Several of these options can be specified.
- ISE ECF:
-
-
none => <option/>
-
generate => <option/>
-
require => <option><assertions precondition="true"/></option>
-
supplier_precondition => <option><assertions supplier_precondition="true"/></option>
-
ensure => <option><assertions ensure="true"/></option>
-
invariant => <option><assertions invariant="true"/></option>
-
loop_invariant => <option><assertions loop="true"/></option>
-
loop_variant => <option><assertions loop="true"/></option>
-
check => <option><assertions check="true"/></option>
-
all => <option><assertions precondition="true" supplier_precondition="true" ensure="true" invariant="true" loop="true" check="true"/></option>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- attached_by_default
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library, cluster, class
- Description:
-
Are types attached by default when no attachment mark is specified?
- ISE ECF:
-
-
true => <option is_attached_by_default="true"/>
-
false => <option is_attached_by_default="false"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- automatic_backup
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Automatically generate a backup during recompilation.
- ISE ECF:
-
-
true => <setting name="automatic_backup" value="true"/>
-
false => <setting name="automatic_backup" value="false"/>
- c_compiler_options
-
- Values:
- C options
- Default:
- No default
- Scope:
- system/library
- Description:
-
-
Specify options to be passed to the C compiler
which is responsible for compiling the C code that has been
generated from the Eiffel system.
-
Several of these options can be specified.
-
This option makes only sense for Eiffel compilers which generate C code.
- ISE ECF:
-
-
options => <external_cflag value="options"/>
- check_generic_creation_constraint
-
- Values:
- true | false
- Default:
- true
- Scope:
- system/library
- Description:
-
Check generic creation constraint.
- ISE ECF:
-
-
true => <setting name="check_generic_creation_constraint" value="true"/>
-
false => <setting name="check_generic_creation_constraint" value="false"/>
- check_vape
-
- Values:
- true | false
- Default:
- true
- Scope:
- system/library
- Description:
-
Report VAPE validity errors (ETL 2nd edition page 122).
- ISE ECF:
-
-
true => <setting name="check_vape" value="true"/>
-
false => <setting name="check_vape" value="false"/>
- cls_compliant
-
- Values:
- true | false
- Default:
- true
- Scope:
- system/library
- Description:
-
When compiling to the .NET framework. Is the generated
code CLS compliant?
- ISE ECF:
-
-
true => <setting name="cls_compliant" value="true"/>
-
false => <setting name="cls_compliant" value="false"/>
- console_application
-
- Values:
- true | false
- Default:
- true
- Scope:
- system/library
- Description:
-
Under Windows, generate either a console or a windows application.
- ISE ECF:
-
-
true => <setting name="console_application" value="true"/>
-
false => <setting name="console_application" value="false"/>
- culture
-
- Values:
- Culture
- Default:
- neutral
- Scope:
- cluster
- Description:
-
-
Specify the culture of the .NET assembly.
-
The option 'assembly' should be set in order for this
option to have any effect.
- ISE ECF:
-
-
culture => <assembly name="cluster_name" location="cluster_pathname" assembly_culture="culture"/>
- dead_code_removal
-
- Values:
- none | low_level | feature | class | all
- Default:
- all
- Scope:
- system/library
- Description:
-
-
Do not include dead code in the generated application.
-
'low_level' means that unreachable chuncks of code are not included.
-
'feature' means that features which are never called are not included.
-
'class' means the classes which are in the system but which are
never instanciated in the living code are not included.
-
The system needs to be compiled in finalized mode
in order for this option to have any effect.
-
Several of these options can be specified.
- ISE ECF:
-
-
none => <setting name="dead_code_removal" value="false"/>
-
low_level => <setting name="dead_code_removal" value="false"/>
-
feature => <setting name="dead_code_removal" value="true"/>
-
class => <setting name="dead_code_removal" value="false"/>
-
all => <setting name="dead_code_removal" value="true"/>
-
If several occurrences of ECF options would need to be generated,
only one occurrence would actually be generated with value 'true'
if there is at least one 'true' and 'false' otherwise.
- debug
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library, cluster, class
- Description:
-
Enable debug instructions.
- ISE ECF:
-
-
true => <option debug="true"/>
-
false => <option debug="false"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- debug_tag
-
- Values:
- Debug tag
- Default:
- No default
- Scope:
- system/library, cluster, class
- Description:
-
-
Enable debug instructions with tag 'tag'.
-
Several of these options can be specified.
- ISE ECF:
-
-
tag => <option><debug name="tag" enabled=true"/></option>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- dotnet_naming_convention
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
When compiling to the .NET framework. Should the
Eiffel code use .NET naming convention when calling routines
from the assembly (use Eiffel naming convention otherwise)?
- ISE ECF:
-
-
true => <setting name="dotnet_naming_convention" value="true"/>
-
false => <setting name="dotnet_naming_convention" value="false"/>
- dynamic_runtime
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Enable the use of the Eiffel runtime as a
DLL or shared library.
- ISE ECF:
-
-
true => <setting name="dynamic_runtime" value="true"/>
-
false => <setting name="dynamic_runtime" value="false"/>
- ecf_library
-
- Values:
- Pathname
- Default:
- No default
- Scope:
- cluster
- Description:
-
-
Specify that the cluster is the root of a library
that is otherwise described by the ECF file 'pathname'.
- ISE ECF:
-
-
pathname => <library name="cluster_name" location="pathname"/>
- enforce_unique_class_names
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Should class names be unique even across libraries?
- ISE ECF:
-
-
true => <setting name="enforce_unique_class_names" value="true"/>
-
false => <setting name="enforce_unique_class_names" value="false"/>
- exception_trace
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Enable to see a complete exception trace
when a finalized application is crashing.
The system needs to be compiled in finalized mode
in order for this option to have any effect.
- ISE ECF:
-
-
true => <setting name="exception_trace" value="true"/>
-
false => <setting name="exception_trace" value="false"/>
- exclude
-
- Values:
- Pathname
- Default:
- No default
- Scope:
- system/library, cluster
- Description:
-
-
Specify a filename, or a directory name, that should not be taken into
account when searching the clusters for Eiffel classes.
-
Several of these options can be specified.
- ISE ECF:
-
-
pathname => <file_rule><exclude>/pathname$</exclude></file_rule>
- export
-
- Values:
- External name
- Default:
- No default
- Scope:
- class, feature
- Description:
-
-
Specify that this class (and its features) or this feature
should be visible from C when using Cecil for example.
- ISE ECF:
-
-
external_class_name => <visible class="CLASS_NAME" class_rename="external_class_name"/>
-
external_feature_name => <visible class="CLASS_NAME" feature="feature_name" feature_rename="external_feature_name"/>
- external_runtime
-
- Values:
- Pathname
- Default:
- No default
- Scope:
- system/library
- Description:
-
Use external runtime located in 'pathname'.
- ISE ECF:
-
-
pathname => <setting name="external_runtime" value="pathname"/>
- force_32bits
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Force compilation for 32bits (.NET only).
- ISE ECF:
-
-
true => <setting name="force_32bits" value="true"/>
-
false => <setting name="force_32bits" value="false"/>
- full_class_checking
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library, cluster, class
- Description:
-
Run flat Degree 3.
- ISE ECF:
-
-
true => <option full_class_checking="true"/>
-
false => <option full_class_checking="false"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- garbage_collector
-
- Values:
- none | internal | boehm
- Default:
- internal
- Scope:
- system/library
- Description:
-
Select garbage collector.
- ISE ECF:
-
N/A
- header
-
- Values:
- Pathname
- Default:
- No default
- Scope:
-
-
system/library
-
Accepted at the cluster-level for backward compatibility.
- Description:
-
-
Specify a directory containing C header files.
-
Several of these options can be specified.
- ISE ECF:
-
-
pathname => <external_include location="pathname"/>
- il_verifiable
-
- Values:
- true | false
- Default:
- true
- Scope:
- system/library
- Description:
-
When compiling to the .NET framework.
Is the generated code IL verifiable?
- ISE ECF:
-
-
true => <setting name="il_verifiable" value="true"/>
-
false => <setting name="il_verifiable" value="false"/>
- include
-
- Values:
- Pathname
- Default:
- No default
- Scope:
- system/library, cluster
- Description:
-
-
Specify a filename that should be taken into
account when searching the clusters for Eiffel classes,
even though it does not necessarily have a .e extension.
-
Several of these options can be specified.
- ISE ECF:
-
-
pathname => <file_rule><include>/pathname$</include></file_rule>
- inlining
-
- Values:
- none | array | constant | once | all
- Default:
- all
- Scope:
- system/library
- Description:
-
-
Enable inlining. 'array' means ARRAY and STRING
inlining, 'constants' means constant inlining, 'once' means
once-feature inlining, and 'all' means anything that can
be inlined.
-
Several of these options can be specified.
- ISE ECF:
-
-
none => <setting name="inlining" value="false"/>
-
array => <setting name="inlining" value="true"/>
-
constant => <setting name="inlining" value="true"/>
-
once => <setting name="inlining" value="true"/>
-
all => <setting name="inlining" value="true"/>
-
If several occurrences of ECF options would need to be generated,
only one occurrence would actually be generated with value 'true'
if there is at least one 'true' and 'false' otherwise.
-
The option has effect only in finalized mode.
- inlining_size
-
- Values:
- Integer value >= 0 and <= 100
- Default:
- 0
- Scope:
- system/library
- Description:
-
-
Specify maximum size of routines to be inlined.
-
No effect if 'inlining' is disabled.
- ISE ECF:
-
-
value => <setting name="inlining_size" value="value"/>
-
The default value in ECF is 4.
- line_generation
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Generate C pragmas '#line x' in generated C code.
- ISE ECF:
-
-
true => <setting name="line_generation" value="true"/>
-
false => <setting name="line_generation" value="false"/>
- link
-
- Values:
- Pathname
- Default:
- No default
- Scope:
-
-
system/library
-
Accepted at the cluster-level for backward compatibility.
- Description:
-
-
Specify object files, library files or command
line options to be passed to the linker.
-
Several of these options can be specified.
- ISE ECF:
-
-
pathname => <external_library location="pathname"/>
- metadata_cache_path
-
- Values:
- Pathname
- Default:
- No default
- Scope:
- system/library
- Description:
-
-
When compiling to the .NET framework. Specify pathname
where XML files describing DLLs assemblies will be generated.
- ISE ECF:
-
-
pathname => <setting name="metadata_cache_path" value="pathname"/>
-
ISE's default: $ISE_EIFFEL\dotnet\assemblies
- msil_classes_per_module
-
- Values:
- Integer value > 0
- Default:
- 5
- Scope:
- system/library
- Description:
-
-
Number of classes generated per .NET module during
incremental compilation. Increasing this value will slow down
the incremental recompilation, but speed up the time to load
the assembly while debugging in workbench mode.
- ISE ECF:
-
-
value => <setting name="msil_classes_per_module" value="value"/>
- msil_clr_version
-
- Values:
- Version
- Default:
- No default
- Scope:
- system/library
- Example:
- v1.1.4322
- Description:
-
-
When compiling to the .NET framework. Specify version
of .NET framework to be used.
- ISE ECF:
-
-
version => <setting name="msil_clr_version" value="version"/>
-
ISE's ECF default: highest installed .NET version.
- msil_culture
-
- Values:
- Culture
- Default:
- No default
- Scope:
- system/library
- Description:
-
-
When compiling to the .NET framework. MSIL culture.
- ISE ECF:
-
-
culture => <setting name="msil_culture" value="culture"/>
- msil_generation
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Compile to the .NET framework.
- ISE ECF:
-
-
true => <setting name="msil_generation" value="true"/>
-
false => <setting name="msil_generation" value="false"/>
- msil_key_file_name
-
- Values:
- Pathname
- Default:
- No default
- Scope:
- system/library
- Description:
-
-
When compiling to the .NET framework. Key to be
able to add the generated binary to the Global Assembly
Cache (GAC).
- ISE ECF:
-
-
pathname => <setting name="msil_key_file_name" value="pathname"/>
- msil_use_optimized_precompile
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
When compiling to the .NET framework. Use an
optimized version of a precompile.
- ISE ECF:
-
-
true => <setting name="msil_use_optimized_precompile" value="true"/>
-
false => <setting name="msil_use_optimized_precompile" value="false"/>
- multithreaded
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Enable generation of a multithreaded application.
- ISE ECF:
-
-
true => <capability><concurrency use="thread" support="thread"/></capability>
-
false => <capability><concurrency use="none" support="none"/></capability>
- namespace
-
- Values:
- Namespace
- Default:
- No default
- Scope:
- system/library, cluster, class
- Description:
-
-
When compiling to the .NET framework. Specify the
namespace to be used for the classes.
- ISE ECF:
-
-
namespace => <option namespace="namespace"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- old_verbatim_strings
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library
- Description:
-
Use the old format for verbatim strings.
- ISE ECF:
-
-
true => <setting name="old_verbatim_strings" value="true"/>
-
false => <setting name="old_verbatim_strings" value="false"/>
- override_cluster
-
- Values:
- Cluster name
- Default:
- No default
- Scope:
- system/library
- Description:
-
-
Enable all classes of 'cluster_name' to override
the classes with the same names located in other clusters.
-
Several of these options can be specified.
- ISE ECF:
-
-
cluster_name => <override name="cluster_name" location="..."/>
- prefix
-
- Values:
- Prefix
- Default:
- No default
- Scope:
- cluster
- Description:
-
-
Specify the class name prefix for classes of this
cluster or .NET assembly.
- ISE ECF:
-
-
assembly_prefix => <assembly name="cluster_name" location="cluster_pathname" prefix="assembly_prefix"/>
-
cluster_prefix => <cluster name="cluster_name" location="cluster_pathname" prefix="cluster_prefix"/>
- profile
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library, cluster, class
- Description:
-
Enable Eiffel profiling.
- ISE ECF:
-
-
true => <option profile="true"/>
-
false => <option profile="false"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- public_key_token
-
- Values:
- Public key token
- Default:
- b77a5c561934e089
- Scope:
- cluster
- Description:
-
-
Specify the public_key_token of the .NET assembly.
-
The option 'assembly' should be set in order for this
option to have any effect.
- ISE ECF:
-
-
public_key_token => <assembly name="cluster_name" location="cluster_pathname" assembly_key="public_key_token"/>
- read_only
-
- Values:
- true | false
- Default:
- false
- Scope:
- cluster
- Description:
-
-
Specify that the classes in the cluster
directory should be considered as read-only by the
underlying Eiffel tool.
-
This option is only supported by ISE's EiffelStudio
when the cluster is also 'recursive'. Otherwise it
has no effect
- ISE ECF:
-
-
true => <cluster readonly="true"/>
-
false => <cluster readonly="false"/>
- recursive
-
- Values:
- true | false
- Default:
- false
- Scope:
- cluster
- Description:
-
-
Specify that the cluster directory and its
subdirectories should be recursively traversed to find
Eiffel classes.
- ISE ECF:
-
-
true => <cluster recursive="true"/>
-
false => <cluster recursive="false"/>
- shared_library_definition
-
- Values:
- filename.def
- Default:
- No default
- Scope:
- system/library
- Description:
-
-
Specify the file where the Eiffel compiler will
look when generating the exported functions of a
shared library.
- ISE ECF:
-
-
filename.def => <setting name="shared_library_definition" value="filename.def"/>
- syntax
-
- Values:
- obsolete | transitional | standard | provisional
- Default:
- standard
- Scope:
- system/library, cluster, class
- Description:
-
Instruct the Eiffel parser to accept or reject some
syntax notations for some Eiffel constructs. This is typically
used during transitional periods.
- ISE ECF:
-
-
obsolete => <option syntax="obsolete"/>
-
transitional => <option syntax="transitional"/>
-
standard => <option syntax="standard"/>
-
provisional => <option syntax="provisional"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- target
-
- Values:
- exe | dll | com | no_main
- Default:
- exe
- Scope:
- system/library
- Description:
-
Specify the output target of the application.
- ISE ECF:
-
-
exe => <setting name="msil_generation_type" value="exe"/>
-
dll => <setting name="msil_generation_type" value="dll"/>
-
com => <setting name="msil_generation_type" value="exe"/>
-
no_main => <setting name="msil_generation_type" value="exe"/>
- trace
-
- Values:
- true | false
- Default:
- false
- Scope:
- system/library, cluster, class
- Description:
-
Enable trace mode.
- ISE ECF:
-
-
true => <option trace="true"/>
-
false => <option trace="false"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.
- use_cluster_name_as_namespace
-
- Values:
- true | false
- Default:
- true
- Scope:
- system/library
- Description:
-
When compiling to the .NET framework. Should the
cluster name be used as namespace (e.g. base.STRING)?
- ISE ECF:
-
-
true => <setting name="use_cluster_name_as_namespace" value="true"/>
-
false => <setting name="use_cluster_name_as_namespace" value="false"/>
- use_full_cluster_name_as_namespace
-
- Values:
- true | false
- Default:
- true
- Scope:
- system/library
- Description:
-
When compiling to the .NET framework. Should the
cluster name be used as namespace (e.g. base.STRING)?
- ISE ECF:
-
-
true => <setting name="use_all_cluster_name_as_namespace" value="true"/>
-
false => <setting name="use_all_cluster_name_as_namespace" value="false"/>
- version
-
- Values:
- Version
- Default:
- 1.0.5000.0
- Scope:
- cluster
- Description:
-
-
Specify the version of the .NET assembly.
-
The option 'assembly' should be set in order for this
option to have any effect.
- ISE ECF:
-
-
version => <assembly name="cluster_name" location="cluster_pathname" assembly_version="version"/>
- void_safety
-
- Values:
- none | on_demand | complete
- Default:
- none
- Scope:
- system/library
- Description:
-
Should void-safety rules be checked?
- ISE ECF:
-
-
none => <option void_safety="none"/>
-
on_demand => <option void_safety="initialization"/>
-
complete => <option void_safety="all"/>
- warning
-
- Values:
- none | style | default | all
- Default:
- default
- Scope:
- system/library, cluster, class
- Description:
-
-
Specify warning level.
-
'style' means that Eiffel style warnings (e.g. having
feature names in all upper-case) are emitted.
-
'default' means that warnings such as local
variables unused are emitted.
-
'all' means that all warnings are emitted.
- ISE ECF:
-
-
none => <option warning="false"/>
-
style => <option warning="true"/>
-
default => <option warning="true"/>
-
all => <option warning="true"/>
-
Replace <option> by <class_option class="..."> in case of class-level option.