You can configure eMake options from the command line for a specific build and can also use eMake environment variables or the emake.conf
configuration file to make options persistent.
Following are caveats for using these methods for setting options:
-
The environment variable
EMAKEFLAGS
can be used to set any command-line option. For example, this emake invocation:
% emake --emake-cm=mycm --emake-root=/home/joe
is equivalent to the following in csh
:
% setenv EMAKEFLAGS "--emake-cm=mycm --emake-root=/home/joe" % emake
The Bash shell equivalent is:
$ export "EMAKEFLAGS=--emake-cm=mycm --emake-root=/home/joe" $ emake
The Windows command shell equivalent is:
C:\> set EMAKEFLAGS=--emake-cm=mycm --emake-root=C:\home\joe C:\> emake
-
The hierarchy or precedence for setting an eMake option is:
-
Command-line options
-
Options set using the
EMAKEFLAGS
environment variable -
Options set using other CloudBees Build Acceleration environment variables
Command-line options as well as options in the
EMAKEFLAGS
environment variable override options in theemake.conf
configuration file.
-
Editing the eMake configuration file
The path to the eMake configuration file is <InstallDir>/<arch>/conf/emake.conf
(on Linux and UNIX) or <InstallDir>\<arch>\conf\emake.conf
(on Windows), where <InstallDir>
is the top installation directory containing the eMake program, and <arch>
is the architecture (such as i686_Linux
).
If you run an eMake executable that is not within a CloudBees Build Acceleration installation, it will not use the installed configuration file (but will still use environment variables and options entered from the command line).
The configuration file has the following formatting rules:
-
Only eMake-specific command line arguments are allowed (not those specific to GNU Make, NMAKE, and so on).
-
One option (a switch-argument pair) is allowed per line.
-
All allowed switches must be separated from their arguments by
=
(an equal sign). -
All text between
=
and the end of the line (including spaces and terminal spaces) is part of the argument. -
File order determines the option order (for many kinds of options, the final occurrence overrides all earlier ones).
-
NUL
characters are not allowed. -
Empty lines are ignored.
-
Lines beginning with
#
are comment lines and are ignored.
Configuration file syntax errors (but not necessarily semantic ones) are warnings and cause the configuration file to be skipped (as if it was not present, except for the warnings).
List of eMake command-line options and environment variables
Command-line options are listed in alphabetical order except for platform-specific options that are listed after platform-independent options. Debug options are listed at the end of the table.
The --emake-volatile command-line option is deprecated and no longer has any effect. If the option is specified, it is ignored.
|
Command-Line Option | Environment Variable | Description | ||||||
---|---|---|---|---|---|---|---|---|
– |
|
Always set to local. Specifies that an individual eMake invocation on the Agent does not enter stub mode, but instead behaves like a local (non-cluster) make. eMake automatically uses local mode when the |
||||||
|
– |
Specifies the location of your Android source files. For details, see Using --emake-android-root for Builds That Do Not Start in the Android Source Root. |
||||||
|
– |
Specifies your Android version. The available values are |
||||||
|
– |
Specifies the level of detail to include in annotation output—a comma-separated list for any of the following values:
This option overrides the build class annotation settings set on the Cluster Manager. |
||||||
|
– |
Specifies the name of the XML-formatted log output file. By default, the annotation file, The following macros are available:
Example: results in: |
||||||
|
– |
Enables ( This option overrides the build class annotation upload setting set on the Cluster Manager. |
||||||
|
– |
Enables ( |
||||||
|
– |
Sets the minimum file size (in bytes) to send through Agent-to-Agent transfers for direct file sharing between hosts. Default= |
||||||
|
|
Sets a customized build label. These labels are literal strings and do not use available tags when defining labels for build classes. |
||||||
|
|
Specifies the build class for the current build. The class must match an existing Cluster Manager class previously created by a user. If this option is not used, or if the class does not match, eMake assigns the default class to the build. |
||||||
|
|
Turns on support for specified ClearCase features—a comma-separated list of any of the following values: |
||||||
|
– |
If no Agents are available when the build starts, this option specifies the number of seconds to try to acquire Agents before giving up. The default is |
||||||
|
|
Sets the host name (either the IP address or machine name) and port for Cluster Manager. Note that you cannot use
|
||||||
|
|
Security level of emake to Cluster Manager communication. Level is one of:
|
||||||
|
– |
Turns history collapsing on or off. When collapsing is enabled, dependencies between a single or several jobs in another make instance are replaced with a serialization between the job and the other Make instance. This action typically results in significant history file size reduction, but might cause some over-serialization. In most builds, this has little or no impact on build time. In some builds, disabling collapsing improves performance at the cost of increased history file size. Default= |
||||||
|
– |
Turns the option to create output directories on or off. When enabled, a unique job is created for each output target (and its prerequisites), which ensures that any necessary output directories are created beforehand. This job is serialized with the jobs that require it, resulting in all of the necessary output directories being created early in the build process if they do not already exist. This can help avoid conflicts among highly-parallelized jobs that create output directories manually before doing their work. Since the creation of the jobs that ensure the directories exist is processed at parse time, this is quite efficient and unlikely to slow down the overall build. This option is only effective in GNU Make emulation; for other emulation, it is ignored. Default= |
||||||
|
– |
Comma-separated list of pragma directives to ignore—can be one or more of: |
||||||
|
– |
Disables variable table pruning. Default= |
||||||
|
– |
Changes the mode that Electrify uses for monitoring. Add the |
||||||
|
|
Sets Make-type emulation to a specific mode. Default emulation type is Available modes: If specifying |
||||||
|
– |
Configures default emulation modes for Make programs. TABLE is a comma-separated list of NAME=MODE, where NAME is the name of a Make executable and MODE is the emulation mode to use if |
||||||
|
|
Specifies which environment variables must not be replicated to the hosts. |
||||||
|
|
Hides one or more CloudBees Build Acceleration-generated warning numbers. |
||||||
|
– |
Specifies the history mode creation model. Default= |
||||||
|
– |
Honors history mode even if the build fails. Default= |
||||||
|
– |
Specifies which history file to use for a specific build. Allows you to change the default name and path for the history file The following macros are available:
Example: results in: |
||||||
|
– |
Sets the number of seconds ( |
||||||
|
– |
Causes eMake to not treat .SECONDARY targets having no prerequisites as meaning that all targets are intermediate. This option might increase performance on certain large builds with thousands of targets and reduce eMake runtime memory requirements (but breaks strict compatibility with GNU Make when emulating GNU Make 3.81 and later). |
||||||
|
|
Run the build as this Cluster Manager user.
For additional information, see the online help topic, “Permissions.” |
||||||
|
– |
Limits the maximum number of uncommitted jobs to |
||||||
|
The number of seconds to allow a job to run before considering it timed out, after which it terminates and all output from the job is discarded. A message is logged in the job output indicating that the job timed out. Although the option is specified in seconds, by default the timeout is only checked at roughly 60 second intervals, so the granularity is really at the level of minutes. For example, a job that specifies a 90 second timeout really times out after a bit more than 120 seconds. Although this option can be used in any mode, it is suggested to use with |
|||||||
|
|
Enables the ledger capability. |
||||||
|
|
The name of the ledger file. Default= |
||||||
|
– |
Limits the number of Agents used by this build. This option overrides the build class Max Agents setting if This behavior prevents a user from overriding the upper limit for a class that was set up by the build administrator. |
||||||
|
– |
Controls the amount of memory eMake devotes to uncommitted jobs. When the limit is exceeded, eMake stops parsing new Make instances. Default= `1,000,000,000 ` (1 GB). |
||||||
|
|
Indicates whether to merge the |
||||||
|
– |
Sets the hostname/IP and port of the system from where you want to view the live monitor data in the CloudBees Insight tool. To monitor live build data, you must launch the Insight live monitor before you start the build. |
||||||
|
– |
Turns pedantic mode on ( |
||||||
|
- |
On Windows, specifies the semantics to use for interpreting filesystem paths. Valid options are |
||||||
|
– |
Specifies the pragma addendum file to use. This is a file containing additional pragma declarations to apply to the build. eMake with Ninja emulation supports pragmas. Using pragmas for builds with the eMake Ninja emulation mode enabled ( Pragma addendum files are optional with any other emulation mode. For more information about pragma addendum files, see Specifying Pragmas in an Addendum File. |
||||||
|
– |
Sets the priority for the current build’s use of Agents in the cluster. When set to This option overrides the priority associated with a build class but can be used to lower the build priority only. |
||||||
|
|
All paths starting at the directories specified in |
||||||
|
– |
Explicitly enables conflict detection on directory-read operations (commonly called “glob conflicts,” which is only one manifestation of the problem). Allowed values are If your build is susceptible to readdir conflict failures, you can enable these checks and get a correct build even if you do not conduct a single-agent build. The resulting history file is identical to a single-agent build result. Though the initial run with this feature might be over-serialized (a consequence of readdir conflicts), a good history file allows builds to run full speed, without conflicts, the next time. You do not want to enable this option all the time. Instead, you should enable it for one run if you suspect a globbing problem, and then disable it, but use the history file generated by the previous run. Another possible strategy to use, if you are not familiar with your build, is to enable the option until you get a successful build, and then disable it after you have a complete, good history file.
|
||||||
|
– |
This option defaults to |
||||||
|
|
The resource requirement for this build. This option overrides the build class resource request setting set on the Cluster Manager. |
||||||
|
|
Specifies the eMake root directory(s) location. Particularly on Windows, this parameter should not be used to virtualize your toolchain. Tools should be installed on each agent host for performance reasons and to avoid having to virtualize registry parts. The semi-colon is the delimiter between drives. Example:
In this example, the C: drive is mounted on /c. |
||||||
|
– |
Turns build information reporting on ( |
||||||
|
– |
Outputs the build progress, the number of agents running jobs, and other statistics as well as error messages and the latest warning to the console. This feature requires a VT100 or compatible terminal. This feature is enabled by default, but it requires that stdout is not piped to a file, you are in cluster mode, All errors and the latest warning encountered during the build appear on the console. The build log is saved in |
||||||
|
– |
Enables ( If you switch the value of the |
||||||
|
– |
Skip matching makefile includes (such as generated dependencies). Generally, you should not suppress makefile includes unless they are generated dependency files, and you have enabled automatic dependencies as an alternative way of handling dependencies.
This option is most often used along with |
||||||
|
– |
Turns test case mode on ( In test case mode, file system (and registry for Windows) updates from each job are discarded to disable conflict detection, history, and file-level annotation. This mode discards intermediate test results to restore agents to a pristine file system state after each test to ensure that each job runs as if no other tests ran. The results on You must create a makefile specifically for this mode. You can use this mode with eMake in any emulation mode. |
||||||
|
|
Sets the eMake file temporary directory. |
||||||
|
- |
Enable ( |
||||||
|
- |
(cluster mode only) Enable/disable uploading of build reports to the cluster manager. The default is |
||||||
TLS Configuration Commands For more information, see Configuring TLS between eMake and Agents and Configuring TLS between eMake and the Cluster Manager |
||||||||
|
- |
Path to the combined certificate and keystore file used to identify eMake to the Cluster Manager. For example, |
||||||
|
- |
List of common names or organizational units (or both) that eMake will accept in Cluster Manager certificates and thus permitted to connect to the Cluster Manager, where |
||||||
|
- |
Path to the certificate authority bundle file. For example, If you use TLS for eMake, all agents must be configured as well. For details about configuring agent machines, see eMake Command-Line Options, Variables, and Configuration File. |
||||||
|
- |
Path to the combined certificate and keystore file used to identify eMake to agents. For example, If you use TLS for eMake, all agents must be configured as well. For details about configuring agent machines, see eMake Command-Line Options, Variables, and Configuration File. |
||||||
|
- |
List of common names or organizational units (or both) that eMake will accept in agent certificates and thus permitted to connect to the agents, where For details about configuring agent machines for use with TLS, see eMake Command-Line Options, Variables, and Configuration File. |
||||||
JobCache and Parse Avoidance Caching Commands |
||||||||
|
– |
Use the specified directory for cache locations for saved dependencies (for dependency optimization), JobCache, parse avoidance, and schedule optimization. The default name of this directory is You can also use this option with the dependency optimization and schedule optimization features. |
||||||
|
– |
Enables the JobCache feature for all make invocations in a build. This option works for recursive and nonrecursive builds. You can specify any comma-separated list that includes one or more of the following values:
For details about these compiler options, see Job Caching. When you use
|
||||||
|
– |
Avoid parsing makefiles when prior parse results remain up-to-date and cache new parse results when appropriate. |
||||||
|
– |
Ignore the named environment variable when searching for applicable cached parse results. To ignore more than one variable, use this option multiple times. |
||||||
|
– |
Ignore this file or directory when checking whether cached parse results are up-to-date. Append % for prefix matching. To ignore more than one path or prefix, use this option multiple times. |
||||||
Dependency Optimization and Schedule Optimization Commands |
||||||||
|
– |
Use the specified directory for cache locations for saved dependencies (for dependency optimization), JobCache, parse avoidance, and schedule optimization. The default name of this directory is You can also use this option with the JobCache and parse avoidance features. |
||||||
|
– |
Use the saved dependency information file for a makefile when dependencies are the same and save new dependency information when appropriate. |
||||||
|
– |
Turns the schedule optimization feature on ( |
||||||
UNIX-Specific Commands |
||||||||
|
– |
Use this option to choose the Linux operating system, so the Cluster Manager will use Linux hosts, specifically. |
||||||
– |
|
Allows you to set the iconv locale. Use NOTE: If you receive an emake assertion failure that contains information similar to:
This could mean that your system is missing an internationalization package, or the locale package has a different name for ISO 8859-1. (This issue is because of the conversion between 8-bit strings and UTF-8.) For example, your system recognizes “ISO8859-1”, “ISO_8859-1”, and “ISO-8859-1” only. Set |
||||||
|
– |
Sets case sensitivity for target and pattern name matching. This is inherited by all submakes in the build. The option applies when using gmake or cygwin emulation modes only; nmake mode is not affected. The default for gmake and cygwin is on ( |
||||||
|
|
|
||||||
|
|
Comma-separated list of Cygwin mounts to ignore. Unless listed, Cygwin mount points are replicated on the Agent. |
||||||
|
– |
Limits the number of registry keys sent automatically for each key. Default= |
||||||
|
– |
Sets the registry virtualization path on Windows machines. The syntax is Do not use this parameter to virtualize your toolchain. Tools must be installed on each agent host for performance reasons and to avoid figuring out which registry parts to virtualize. |
||||||
Debug Commands |
||||||||
|
|
Sets the local debug log level(s). For a list of possible values, see the `emake --help ` message. |
||||||
|
|
Sets the debug log file name. Default is The following macros are available:
Example: results in: |
||||||
|
|
Sets the remote debug log level(s). For a list of possible values, see the `emake --help ` message. Enabling this option disables parse avoidance. |
||||||
|
|
Sets the directory for remote debug logs. |
||||||
Local Agent Commands |
||||||||
|
– |
Instructs eMake to use any available local agents. The default is:
If you have installed local agents (and they are currently running), but you do not want to use them, then specify If neither is specified but eMake detects that agents are running on the host, eMake uses them as if you specified You cannot use Local agents appear on the Cluster Manager with no special configuration needed. You can enable and disable local agents from cmtool just like remote agents.
|