SYNOPSIS

ecs [-t target-platform]

    [-name]
    [-console]
    [-dynamiclib|-staticlib]
    input [input]* -o output
    [-symbols intermediate-dir]

DESCRIPTION

ecs generates a symbol loader for an eC module (shared/static library or executable).

OVERVIEW

The symbol loader is what allow for eC runtime module importing and ejection, as well as its reflection capabilities. It is an eC source file with a .main.ec suffix, which must itself be compiled and linked into the target.

ecs also takes care of the eC Distributed Objects binding mechanism and will include the client and/or server bindings as appropriate within the symbol loader source file.

Additionally, ecs takes care of assembling the individual internationalizable string catalogs (.bowl) into translation templates (.pot). The generated translation templates are compatible with the GNU gettext format. Translations however are handled internally by the Ecere runtime library, and can be embedded within eC libraries and executables under the locale/ module resources folder using the Ecere Archiver (ear).

For an executable, the symbol loader implements the program's entry point at the C level (main() function). For shared libraries, the symbol loader implements an exported __ecereDll_Load function. For static libraries, the symbol loader implements a __ecereDll_Load_[module-name] function.

The input list of files specified should include all symbol files (.sym), import files (.imp) and partial translation string catalogs (.bowl) produced by ecp and ecc for every eC source file within the project.

Output file

-o output

The location and name for the symbol loader generated.

The name is normally module-name.main.ec

OPTIONS

Platform

-t target-platform

Where target-platform is one of: win32 linux apple

(Defaults to the host platform if not specified)

Module Options

-console Specifies that this application is a console application (Windows only)

-dynamiclib Specifies that this module is a dynamic (shared) library

-staticlib Specifies that this module is a static library

Module Name

-name module-name

Name to be used for static library entry point, internally by the eC Distributed Objects bindings, as well as for the generated translation template (locale/module-name.pot). (Defaults to the output file name stripped of the main.ec suffix)

Miscellaneous Options

-symbols intermediate-dir

Specifies the location of the intermediate directory. Note: Currently this is only used to check the currently built config, and only generate translation template (.pot) if we are building Release. Since the output file name could be checked instead, this option should probably be phased out entirely as it is otherwise not required for ecs.