# UseEcos

This module defines variables and provides commands required to build an eCos application.

Load this module in a CMake project with:

    include(UseEcos)

## Commands

This module provides the following commands:

### Building an eCos Application

ecos_add_include_directories

  Adds the eCos include directories for the current `CMakeLists.txt` file:

      ecos_add_include_directories()

ecos_adjust_directory

  Adjusts the paths of given source files:

      ecos_adjust_directory(<var> <sources>...)

  This command modifies the paths of the source files `<sources>...` to make them suitable for use with `ecos_add_executable()`, and stores them in the variable `<var>`.

  `<var>`

    Result variable name holding a new list of source files with adjusted paths.

  `<sources>...`

    A list of relative or absolute source files to adjust their paths.

  Use this command when the actual sources are located one level upwards. A `../` has to be prepended in front of every source file that is given as a relative path.

ecos_add_executable

  Creates an eCos application executable:

      ecos_add_executable(<name> <sources>...)

  `<name>`

    The name of the executable.

  `<sources>...`

    A list of all source files, where the path has been adjusted beforehand by calling the `ecos_adjust_directory()`.

  This command also sets the `ECOS_DEFINITIONS` local variable, holding some common compile definitions.

### Selecting the Toolchain

ecos_use_arm_elf_tools

  Enables the ARM ELF toolchain for the directory where it is called:

      ecos_use_arm_elf_tools()

  Use this command, when compiling for the xscale processor.

ecos_use_i386_elf_tools

  Enables the i386 ELF toolchain for the directory where it is called:

      ecos_use_i386_elf_tools()

ecos_use_ppc_eabi_tools

  Enables the PowerPC toolchain for the directory where it is called:

      ecos_use_ppc_eabi_tools()

## Variables

This module also defines the following variables:

`ECOSCONFIG_EXECUTABLE`

  Cache variable that contains a path to the `ecosconfig` executable (the eCos configuration program).

`ECOS_CONFIG_FILE`

  A local variable that defaults to `ecos.ecc`. If eCos configuration file has a different name, adjust this variable before calling the `ecos_add_executable()`.

## Examples

The following example demonstrates defining an eCos executable target in a project that follows the common eCos convention of listing source files in a `ProjectSources.txt` file, located one directory above the current `CMakeLists.txt`:

`CMakeLists.txt`

    include(UseEcos)

    # Add the eCos include directories.
    ecos_add_include_directories()

    # Include the file with the eCos sources list. This file, for example, defines
    # a list of eCos sources:
    #   set(sources file_1.cxx file_2.cxx file_3.cxx)
    include(../ProjectSources.txt)

    # When using such directory structure, relative source paths must be adjusted:
    ecos_adjust_directory(adjusted_sources ${sources})

    # Create eCos executable.
    ecos_add_executable(ecos_app ${adjusted_sources})