platform(n) Tcl Bundled Packages platform(n)

```

```

# [NAME](#NAME)

platform - System identification support code and utilities

# [SYNOPSIS](#SYNOPSIS)

```
package require platform ?1.0.10?
platform::generic
platform::identify
platform::patterns identifier
```

```

```

# [DESCRIPTION](#DESCRIPTION)

The **platform** package provides several utility commands useful for the identification of the architecture of a machine running Tcl.

Whilst Tcl provides the **tcl\_platform** array for identifying the current architecture (in particular, the platform and machine elements) this is not always sufficient. This is because (on Unix machines) **tcl\_platform** reflects the values returned by the **uname** command and these are not standardized across platforms and architectures. In addition, on at least one platform (AIX) the **tcl\_platform(machine)** contains the CPU serial number.

Consequently, individual applications need to manipulate the values in **tcl\_platform** (along with the output of system specific utilities) - which is both inconvenient for developers, and introduces the potential for inconsistencies in identifying architectures and in naming conventions.

The **platform** package prevents such fragmentation - i.e., it establishes a standard naming convention for architectures running Tcl and makes it more convenient for developers to identify the current architecture a Tcl program is running on.

# [COMMANDS](#COMMANDS)

[**platform::identify**](#platform::identify)

This command returns an identifier describing the platform the Tcl core is running on. The returned identifier has the general format *OS*-*CPU*. The *OS* part of the identifier may contain details like kernel version, libc version, etc., and this information may contain dashes as well. The *CPU* part will not contain dashes, making the preceding dash the last dash in the result.

[**platform::generic**](#platform::generic)

This command returns a simplified identifier describing the platform the Tcl core is running on. In contrast to **platform::identify** it leaves out details like kernel version, libc version, etc. The returned identifier has the general format *OS*-*CPU*.

[**platform::patterns identifier**](#platform::patterns)

This command takes an identifier as returned by **platform::identify** and returns a list of identifiers describing compatible architectures.

# [EXAMPLE](#EXAMPLE)

This can be used to allow an application to be shipped with multiple builds of a shared library, so that the same package works on many versions of an operating system. For example:

```
package require platform
# Assume that app script is .../theapp/bin/theapp.tcl
set binDir [file dirname [file normalize [info script]]]
set libDir [file join $binDir .. lib]
set platLibDir [file join $libDir [platform::identify]]
load [file join $platLibDir support[info sharedlibextension]]
```

# [KEYWORDS](#KEYWORDS)

operating system, cpu architecture, platform, architecture

1.0.4 platform

---

Document: platform(n) from tcl 9.1.0-r2 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/tcl/Tcl/9.1.0/tcl9.1.0-src.tar.gz
