A.2 Error Messages and Explanations

In Table 19, the diagnostic messages that are followed with the text [ (ignored) | (keep working) ] are error messages that are downgraded to report messages if either the ignore exit status or keep working mode is in effect.

NOTE: All messages that start with Test: are errors in the conditional expression tester.

Table 19 Error Messages


Message

Severity

Explanation

Bad foreach 'line'


error


The foreach line has an incorrect syntax. The correct syntax is

%foreach name [ in ] list_of_values


Bad transformation macro


error


The PM/CB transformation macro had an incorrect specification.


break/continue without while/foreach


error


A %break or %continue has occurred without a preceding %while or %foreach.


Can't @include 'name'


warning


File cannot be read with the @ macro modifier.


Can't create lock in 'directory'


error


omake creates a lock file in the directory and bases the name of its response, swap, and batch files on the name of the lock file. The directory is either the value of the MAKE_TMP macro (if defined) or the current directory.


Can't %do 'name'


warning


The %do directive specified a nonexistent target name. Use @ as a shell-line prefix before the %do to inhibit this warning.


Can't find 'program' on PATH
[ (ignored) | (keep working) ]


error or report


omake cannot execute the current build script because the program was not found in any of the directories specified in the PATH environment variable.


Can't have : and :: dependencies for 'target'


warning


The target was given on the left side of a regular (single colon) dependency and also on the left side of a double-colon dependency. These cannot be mixed.


Can't have both .PATH.ext and VPATH.ext


error


Both .PATH.ext and VPATH.ext macros were specified, but omake does not know which macro to use to determine the search directories.


Can't open file


report or error


The version control or library file can't be opened for reading or writing.


Can't open batch file 'file'


error


When executing multiple commands (see Using Multiple-Command Build-Script Lines) the commands are written to a batch file and the batch file is then executed. The probable cause of this error is that the MAKE_TMP macro has not been set properly.


Can't open inline response file 'name'


warning


The inline response file name can't be opened for writing.


Can't open response file 'name'


warning


The automatic response file name can't be opened for writing.


Can't read makefile 'name'


warning


The makefile name can't be read.


Can't read response file 'name'


warning


The response file indicated on the command line by @name can't be read.


Can't redirect 'file'


error


The redirection for file was specified incorrectly.


Can't undefine macro 'name'


warning


The macro name can't be undefined because it is a predefined macro.


COMSPEC not found


error


The COMSPEC environment variable, used to initialize the name and flags of the shell program, was not found in the environment.


Dependency-line wildcard 'spec' is null


warning


The wildcard specification spec didn't expand to any file names.


Device error
[ (ignored) | (keep working) ]


error or report


Execution of the build script caused a device error.


Directive failed
[ (ignored) | (keep working) ]


error or report


The directive on this build script failed.


Directive nesting too deep. Max 31 levels.


error


Only 31 levels of foreach, if, and while nesting are supported, and your makefile has more than this.


%do macro missing '='


error


A %do macro was missing the equal sign that is needed for its definition. The most probable cause is that there are spaces around it. If you need spaces, enclose them (or the macro definition) in double quotes.


Don't know how to make 'target'
[ (keep working) ]


error or report


omake has exhausted all means of making target. If omake is in keep-working mode, it marks this target as unusable and abandons work on it. Use the -d (debug) and -p (print info) options to determine the cause.


else without if


error


An %else directive encountered without a preceding %if.


elseif without if


error


An %elseif directive encountered without a preceding %if.


end without while/foreach


error


An %end directive encountered without a preceding %while or %foreach.


endif without if


error


An %endif directive encountered without a preceding %if.


Exec 'command' failed


error


The %exec command directive cannot be executed.


Inline failed


warning


The current inline response file couldn't be generated correctly.


Internal error: number


error


Report the internal error number to Customer Support.


Invalid executable 'program'
[ (ignored) | (keep working) ]


error or report


The specified program is not a valid executable.


Invalid SHELL 'program'


warning


The specified shell program was not found.


Macro 'name' has no value


warning


A run-time macro is used before its value was set.


Macro 'name' not found


warning


The macro called name is undefined. This message appears only when the .DEBUG directive or -# command line flag has been set to 2. When debugging your makefiles, this helps catch misspellings.


Maketmp failed


error


The routine that generates temporary file names failed, probably because the directory for the temporary files is full.


Max 8 response files for 'cmd'


error


The multiple-command build script generated more than eight (the maximum) response files.


Missing character in 'name'


error


omake was looking for character to mark the end of macro name but came to the end of the line instead.


No targets on dependency line


error


The dependency line being processed had no targets on the left side.


Not enough memory to exec 'name'
[ (ignored) | (keep working) ]


error or report


There is not enough memory to execute the specified program name.


Nothing to make


error


No target was specified on the command line, and no default target exists in the makefiles.


Option 'letter' needs value


error


A required argument with the command-line option -letter was not specified.


Out of memory


error


omake ran out of memory. Your makefile may be too large, or omake may have installed a TSR.


Recursive macro 'name=value'


warning


The macro called name has a recursive value; the value of the macro refers to itself. omake ignores the recursion.


Regex: message


warning


The regular expression cannot be interpreted correctly; message describes the reason.


Removing target


report


The target is removed because it was modified when an error occurred in one of the build scripts that updated it. Removal prevents partially written files (such as object files) from being left behind when a compilation fails. Targets with the .PRECIOUS attribute are not removed.


Shell line exit status number
[ (ignored) | (keep working) ]


error or report


The most recently executed build script had a nonzero exit status of number.


Shell line too long
[ (ignored) | (keep working) ]


error or report


The build script exceeded the command-line limit. Use a response file. See Response Files.


Shell line without target


error


There is no target to which this build script belongs. Build scripts are indented from the left column by a tab or space character.


Test: bad expression "exp"


error


The expression exp cannot be parsed.


Test: bad first operand "op"


error


In a comparison, the first argument op cannot be parsed.


Test: bad operator "op"


error


The op is not one of the acceptable logical operators: &&, | |, and = =.


Test: bad second operand "op"


error


In a comparison, the second argument op cannot be parsed.


Test: no operand before "text"


error


There was no argument in a previous functional operator.


Test: unexpected "text"


error


The expression is finished logically, but there was more text on the line.


Test: unmatched quote "text"


error


Pairs of single or double quotes delimit strings that contain white space. A quote in text was not matched.


Test: unknown function "name"


error


An expression of the form name() has an unrecognized name.


Test: unknown operator "op"


error


The operator op is not recognized.


Test: ')' expected; got "text"


error


A right parenthesis is expected, but text was found instead.


Too many %do macros. Max of 10.


error


More than 10 macro definitions were specified for each %do directive.


Too many shell lines for 'target'


warning


A target on a regular (single colon) dependency line can be given build scripts one time only. The additional build scripts are ignored.


Unexpected what


error


The what is either end or endif, and there is no previous %foreach, %while, or %if directive.


Unknown option 'letter'



Only the command-line options listed by omake -h are acceptable.


Unknown status
[ (ignored) | (keep working) ]


error or report


The build script returned an unknown status.


Unmade 'target' due to source errors


warning


The -k flag was used to do the maximum useful work. One of target's dependencies was not made because of an error, so the target cannot be made.


Unrecognized .RESPONSE keyword 'word'


warning


The .RESPONSE directive does not accept the keyword word.


Unrecognized line 'line'


warning


omake cannot parse this line.


Unterminated inline from line number


error


The inline response file was not terminated before the end of the makefile.


Unterminated what from line number


error


The what of if, elif, or else that started on line number was not balanced before the end of the makefile was reached.


User interrupt


error


The user typed <CTRL-BREAK> or <CTRL-C> while omake was executing a build script.