---
name: "tomr"
section: "1"
platform: "linux"
package: "tom"
version: "1.1.1-2"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/tomr"
---

# tomr(1)

TOM resolver

## NAME

tomr - TOM resolver

## SYNOPSIS

*tomr* \[*options*\]

## DESCRIPTION

*tomr* is the TOM resolver.  The resolver converts the info files produced by [tomc(1)](/tomc/1.md) to a C source and accompanying header file.  These output files contain information on the on the units being resolved.\
 The output from the resolver must be compiled and linked with the object files to form a runnable program.  The resolver output contains information needed by the TOM runtime library on all classes, extensions, methods, selectors, etc., present in the program or unit.

## COMMON OPTIONS

- **-I dir**

  Add the directory *dir* to the search path.  A unit *foo* is searched for in the directories along the search path.  If it is not found, it is searched for in the subdirectory *foo* of every directory along the search path.\
   The default search path is *.* (the current directory) and */usr/tom*.

- **-u unit**

  Name the unit for which to compile.  A unit is defined by its unit file, a file with the extension `.u`.

- **--version**

  Output the version information and exit.

## TOMR OPTIONS

- **-1**

  Resolve only the indicated unit, not all of them.  This is needed when creating shared libraries.  It also makes resolution faster, since it only has to be done for modified units, instead of all of them.\
   If this option is specified, all TOM files in the current unit must have been compiled with the **-1** flag to [tomc(1)](/tomc/1.md).

- **-n**

  Do not output the definition file; only create the declaration file.  This file can be #included into C sources depending on the functionality of the unit.

- **-static**

  Statically resolve the unit.  This builds the method dispatch tables which thus need not be built at run time.  Though this option saves something in the order of a few centi seconds at run time, the time needed by the resolver is increased a factor of 10 or more.  In addition, the subsequent run of GCC on the output also takes much longer for a statically resolved unit.\
   Static resolution is intended for production code, i.e. it can be part of the release procedure of a program; the developer will normally employ dynamic, per-unit, resolution.\
   It should be noted that, when resolving statically, deferred objects are flagged as such and can not be allocated at run time.  This is in contrast with the behaviour of a program built for dynamic resolution, where deferred objects can be allocated, and only the invocation of a deferred method will raise a condition.

- **-Y**

  Create the output for dynamic resolution.  This causes the method dispatch tables to be built at run time.  This option is on by default.  It can be switched off by *-static*.

- **-y unit**

  Create output for dynamically loading the unit being resolved into the *unit*.

- **-v**

  Increase verbosity.

- **-v-deferred**

  Report the deferred selectors of each object (class or instance).  A deferred selector is a selector corresponding to a method declared for or inherited by an object, but not defined.  Such methods are declared with the deferred qualifier.

- **-v-deferred-instances**

  List the deferred instances.  A deferred instance is an instance having at least one deferred selector, either directly or by inheritance.

- **-v-non-deferred-instances**

  List all but the deferred instances.

## SEE ALSO

[gi(1)](/gi/1.md), [tomc(1)](/tomc/1.md), [gcc(1)](/gcc/1.md).

## AUTHOR

 Pieter J. Schoenmakers `<tiggr@gerbil.org>`\
  Department of Electrical Engineering, room EH 9.26\
  Eindhoven University of Technology\
  P.O. Box 513\
  NL-5600 MB  Eindhoven\
  the Netherlands

## BUG REPORTS

Bugs can be reported to the author, at `tiggr@gerbil.org`.

## MORE INFORMATION

For more information, visit the TOM homepage at `http://www.gerbil.org/tom/`.  To subscribe to the TOM mailing list, send mail to `tom-request@gerbil.org`.
