# Green Hills MULTI

Added in version 3.3.

Added in version 3.15: Linux support.

Generates Green Hills MULTI project files (experimental, work-in-progress).

> The buildsystem has predetermined build-configuration settings that can be controlled via the `CMAKE_BUILD_TYPE` variable.

## Platform Selection

Added in version 3.13.

The variable `GHS_PRIMARY_TARGET` can be used to select the target platform.

> Sets `primaryTarget` entry in project file.

For example:

- `cmake -G "Green Hills MULTI" -D GHS_PRIMARY_TARGET=ppc_integrity.tgt`

Otherwise the `primaryTarget` will be composed from the values of `CMAKE_GENERATOR_PLATFORM` and `GHS_TARGET_PLATFORM`. Defaulting to the value of `arm_integrity.tgt`

- The `CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps via the `cmake -A` option.

  Typical values of `arm`, `ppc`, `86`, etcetera, are used.

- The variable `GHS_TARGET_PLATFORM` may be set, perhaps via the `cmake -D` option.

  Defaults to `integrity`.
  Usual values are `integrity`, `threadx`, `uvelosity`, `velosity`, `vxworks`, `standalone`.

For example:

- `cmake -G "Green Hills MULTI"` for `arm_integrity.tgt`.

- `cmake -G "Green Hills MULTI" -A 86` for `86_integrity.tgt`.

- `cmake -G "Green Hills MULTI" -D GHS_TARGET_PLATFORM=standalone` for `arm_standalone.tgt`.

- `cmake -G "Green Hills MULTI" -A ppc -D GHS_TARGET_PLATFORM=standalone` for `ppc_standalone.tgt`.

## Toolset Selection

Added in version 3.13.

The generator searches for the latest compiler or can be given a location to use. `GHS_TOOLSET_ROOT` is the directory that is checked for the latest compiler.

- The `CMAKE_GENERATOR_TOOLSET` option may be set, perhaps via the `cmake -T` option, to specify the location of the toolset. Both absolute and relative paths are valid. Paths are relative to `GHS_TOOLSET_ROOT`.

- The variable `GHS_TOOLSET_ROOT` may be set, perhaps via the `cmake -D` option.

  Root path for toolset searches and relative paths.
  Defaults to `C:/ghs` in Windows or `/usr/ghs` in Linux.

For example, setting a specific compiler:

- `cmake -G "Green Hills MULTI" -T comp_201754` for `/usr/ghs/comp_201754`.

- `cmake -G "Green Hills MULTI" -T comp_201754 -D GHS_TOOLSET_ROOT=/opt/ghs` for `/opt/ghs/comp_201754`.

- `cmake -G "Green Hills MULTI" -T /usr/ghs/comp_201554`

- `cmake -G "Green Hills MULTI" -T C:/ghs/comp_201754`

For example, searching for latest compiler:

- `cmake -G "Green Hills MULTI"` for searching `/usr/ghs`.

- `cmake -G "Green Hills MULTI -D GHS_TOOLSET_ROOT=/opt/ghs"` for searching `/opt/ghs`.

Note

The `CMAKE_GENERATOR_TOOLSET` should use CMake style paths.

## OS and BSP Selection

Added in version 3.3.

Certain target platforms, like Integrity, require an OS. The RTOS directory path can be explicitly set using `GHS_OS_DIR`. Otherwise `GHS_OS_ROOT` will be searched for the latest Integrity RTOS.

If the target platform, like Integrity, requires a BSP name then it can be set via the `GHS_BSP_NAME` variable.

- `GHS_OS_DIR` and `GHS_OS_DIR_OPTION`

  Sets `-os_dir` entry in project file.
  `GHS_OS_DIR_OPTION` default value is `-os_dir`.

  Added in version 3.15: The `GHS_OS_DIR_OPTION` variable.

  For example:

  - `cmake -G "Green Hills MULTI" -D GHS_OS_DIR=/usr/ghs/int1144`

- `GHS_OS_ROOT`

  Root path for RTOS searches.
  Defaults to `C:/ghs` in Windows or `/usr/ghs` in Linux.

  For example:

  - `cmake -G "Green Hills MULTI" -D GHS_OS_ROOT=/opt/ghs`

- `GHS_BSP_NAME`

  Sets `-bsp` entry in project file.
  Defaults to `sim<arch>` for `integrity` platforms.

  For example:

  - `cmake -G "Green Hills MULTI"` for `simarm` on `arm_integrity.tgt`.

  - `cmake -G "Green Hills MULTI" -A 86` for `sim86` on `86_integrity.tgt`.

  - `cmake -G "Green Hills MULTI" -A ppc -D GHS_BSP_NAME=sim800` for `sim800` on `ppc_integrity.tgt`.

  - `cmake -G "Green Hills MULTI" -D GHS_PRIMARY_TARGET=ppc_integrity.tgt -D GHS_BSP_NAME=fsl-t1040` for `fsl-t1040` on `ppc_integrity.tgt`.

## Target Properties

Added in version 3.14.

The following properties are available:

- `GHS_INTEGRITY_APP`

- `GHS_NO_SOURCE_GROUP_FILE`

## MULTI Project Variables

Added in version 3.3.

Adding a Customization file and macros are available through the use of the following variables:

- `GHS_CUSTOMIZATION` - CMake path name to Customization File.

- `GHS_GPJ_MACROS` - CMake list of Macros.

Note

This generator is deemed experimental as of CMake 3.29.6 and is still a work in progress. Future versions of CMake may make breaking changes as the generator matures.