Home Product Info Orders Downloads About Us Contact Us
Appendix A: Errors
and Warnings
When Make or MKMF encounters a problem it
produces an error, warning or report:
- Errors are the most severe, causing
Make or MKMF to display a message followed by the
word "Stop." Make or MKMF does some
deinitialization then quits.
- Warnings are less severe. A message
followed by the text string "(warning)" is
displayed and Make or MKMF continues.
- Reports are the least severe. A
message is displayed and Make or MKMF continues.
The style of the message is one of:
OPUS MAKE: message.
OPUS MAKE: file (line number): message.
where number indicates the line in
makefile file that produced the diagnostic. Make will
display the additional file and line information when possible.
Reducing Message Severity
Using the "i" command-line
flag or "" shell-line prefix to ignore the
exit status downgrades some error messages into report
messages. For example, if a shell line returned an exit
status of 4, Make would display the following error
message, then quit:
OPUS MAKE: Shell
line exit status 4. Stop.
However, if the shell line was prefixed
with "" the report message would be
OPUS MAKE: Shell
line exit status 4 (ignored)
and Make would continue.
A second common mode is Makes
"keep working" mode, specified with the
"k" command-line flag or .KEEPWORKING
directive. If Make is in this mode and it encounters a
problem when executing a targets shell lines, Make
stops updating the target immediately. In this mode some
error messages are downgraded into report messages.
For example, the previous error message would now be:
OPUS MAKE: Shell
line exit status 4 (keep working)
The List Of Messages
In the list of diagnostic messages that
follows, 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"
modes are in effect.
| Message |
Description and possible
corrections |
Severity |
| 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 or SourceSafe project name cannot be read
with the "@" macro modifier.
|
|
| Can't create lock in
'directory' |
error |
Make 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 non-existing 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 / report |
Make couldn't execute the current shell line
because the program couldn't be 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 can not be mixed.
|
|
| Can't have both .PATH.ext
and VPATH.ext |
error |
Both a .PATH.ext and VPATH.ext macro were
specified, but Make does not know which macro to use
for determining the search directories.
|
|
| Can't open file |
report / error |
The version control or library file cannot be
opened for reading or writing. For version control
files this is an error if the ".VCS_MODE :
ErrorIfAbsent" directive is used.
|
|
| Can't open batch file 'file' |
error |
When executing multiple commands (cf. Page 96) 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 could not be opened
for writing.
|
|
| Can't open response file
'name' |
warning |
The automatic response file name could not be
opened for writing.
|
|
| Can't read makefile 'name' |
warning |
The makefile name cannot be read.
|
|
| Can't read response file
'name' |
warning |
The response file indicated on the command line by
"@name" cannot be read.
|
|
| Can't redirect 'file' |
error |
The redirection for file was specified
incorrectly. Can't touch 'file' Make could not modify
the timestamp of file. If file is a library object
module, the module inside the library had an invalid
timestamp.
|
|
| Can't undefine macro 'name' |
warning |
The macro name cannot be undefined because it is a
predefined macro.
|
|
| Can't VCSTOUCH 'file' |
warning |
Make could not modify the timestamp of file.
VCSTOUCH updates the file with the version control
system timestamp as kept in VCS storage.
|
|
| 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 / report |
Execution of the shell line caused a device error.
|
|
| Directive failed [ (ignored)
| (keep going) ] |
error / report |
The directive on this shell line 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 "=" that is
needed for its definition. The most probable cause is
that there are spaces around the "=". If
you need spaces the spaces (or the whole macro
definition) must be enclosed in double quotes.
|
|
| Don't know how to make
'target' [ (keep working) ] |
error / report |
Make has exhausted all means of making target. If
Make is in keep-working mode it marks this target as
unusable and abandons work on it. The "-d"
(debug) and "-p" (print info.) flags are
helpful in tracking down the cause.
|
|
| else without if |
error |
An %else directive has occurred without a
preceding %if.
|
|
| elseif without if |
error |
An %elseif directive has occurred without a
preceding %if.
|
|
| end without while/foreach |
error |
An %end directive has occurred without a preceding
%while or %foreach.
|
|
| endif without if |
error |
An %endif directive has occurred without a
preceding %if.
|
|
| Exec 'command' failed |
error |
The %exec command directive could not be executed.
|
|
| Inline failed |
warning |
The current inline response file could not be
generated correctly.
|
|
| Internal error: number |
error |
The internal error number should be reported to
OPUS Software.
|
|
| Invalid executable 'program'
[ (ignored) | (keep working) ] |
error / report |
The specified program was 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 was used before its value was
set.
|
|
| Macro 'name' not found |
warning |
The macro called name is undefined. This message
is only seen when the .DEBUG directive or
"-#" command line flag has been set to
"2". When debugging your makefiles, this
helps catch simple errors in misspelling.
|
|
| 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 shell line resulted in the
generation of more than the maximum of 8 response
files.
|
|
| Miser: All modes failed |
error |
All methods of swapping Make out of memory failed.
|
|
| Miser: Can't free XMS memory |
warning |
Make cannot return allocated memory to the XMS
memory manager. This memory will be unavailable until
you reboot your machine.
|
|
| Miser: Can't read swap file |
error |
Make stops instantly because it can't read the
contents of memory it had written to the swap file. A
possible cause is that the swap file was accidentally
deleted.
|
|
| Miser: Can't read XMS memory |
error |
Make stops instantly because it can't read the
contents of memory it had written to XMS memory.
|
|
| Miser: Can't realloc memory |
error |
Make stops instantly because it can't recover the
memory it freed to MS-DOS. The probable cause is
damage to MS-DOS's memory arena caused by the program
that Make was trying to execute.
|
|
| Miser: Can't write file |
error |
The memory miser couldn't write to the swap file.
The probable cause is that there is not enough disk
space for the file.
|
|
| Missing character in 'name' |
error |
Make 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-hand side.
|
|
| No version 'ver' in VCS file
file |
warning / error |
The indicated version ver was not found in the
version control system VCS file named file. This is a
warning unless the ".VCS_MODE :
ErrorIfAbsent" directive was used, in which case
this is an error.
|
|
| Not enough memory to exec
'name' [ (ignored) | (keep working) ] |
error / report |
There is not enough memory for Make to execute the
specified program called name. Try using Make's
memory miser (cf. Page 174) to swap Make out of
memory before the shell line is executed.
|
|
| Nothing to make |
error |
Make has nothing to do because no target was
specified on the command line, and no default target
exists in the makefiles.
|
|
| Option 'letter' needs value |
error |
The command-line option "-letter" takes
an argument which was not supplied.
|
|
| Out of memory |
error |
Make ran out of memory. If you are doing recursive
makes ensure the calling Make uses the memory miser
on the called Make. Another possible cause is that
your makefile is too large to fit into memory or that
Make installed a TSR.
|
|
| Recursive macro 'name=value' |
warning |
The macro called name has a recursive value. That
is, the value of the macro refers to itself. Make
ignores the recursion.
|
|
| Regex: message |
warning |
The regular expression could not be interpreted
correctly and the message gives an indication of the
reason.
|
|
| Removing target |
report |
The target is removed because it was modified when
an error occurred in one of the shell lines that
updated it. This is to prevent partially written
files (such as object files) from being left behind
when a compilation fails. Targets that are given the
.PRECIOUS attribute are protected from being removed.
|
|
| Resident program installed |
error |
Make installed terminate-and-stay-resident
program. This may cause an out-of-memory error from
Make and your system may hang when Make terminates.
|
|
| Shell line exit status
number [ (ignored) | (keep working) ] |
error / report |
The most recently executed shell line had a
non-zero exit status of number.
|
|
| Shell line too long [
(ignored) | (keep working) ] |
error / report |
The shell line exceeded the command-line limit.
You should use a response file. See Page 145.
|
|
| Shell line without target |
error |
There is no target to which this shell line
belongs. Shell lines are indented from the left
column by a tab or space character.
|
|
| SourceSafe: Initialization
failed. Disabling support |
warning / error |
Make could not initialize SourceSafe, usually
because the SSDATA macro is not set properly. This is
an error if the ".VCS_MODE : ErrorIfAbsent"
directive is used, otherwise it is a warning.
|
|
| SourceSafe: SSDATA not set.
Disabling support |
warning / error |
The SSDATA macro must be set before Make can
access SourceSafe's data base. This is an error if
the ".VCS_MODE : ErrorIfAbsent" directive
is used, otherwise it is a warning.
|
|
| SourceSafe: SSPROJECT not
set. Disabling support |
warning / error |
The SSPROJECT must be set if any files or
extensions of the .SS_STORAGE directive lack a
project specification. This is an error if the
".VCS_MODE : ErrorIfAbsent" directive is
used, otherwise it is a warning.
|
|
| Test: bad expression
"exp" |
error |
This, and all other messages that start with
"Test:" are errors in the conditional
expression tester. For this error, the expression exp
could not be parsed.
|
|
| Test: bad first operand
"op" |
error |
In a comparison, the first argument op could not
be parsed.
|
|
| Test: bad operator
"op" |
error |
The op was not one of the acceptable logical
operators &&, | | and = =.
|
|
| Test: bad second operand
"op" |
error |
In a comparison, the second argument op could not
be parsed.
|
|
| Test: no operand before
"text" |
error |
There was no argument in a previous built-in
function.
|
|
| 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 are used to
delimit strings which contain whitespace. A quote in
text was not matched.
|
|
| Test: unknown function
"name" |
error |
An expression of the form name() had an
unrecognized name.
|
|
| Test: unknown operator
"op" |
error |
The operator op was not recognized.
|
|
| Test: ')' expected; got
"text" |
error |
A right parenthesis was expected but text was
found instead.
|
|
| Too many %do macros. Max of
10. |
error |
At most 10 macro definitions can be specified for
each %do directive.
|
|
| Too many shell lines for
'target' |
warning |
A target on a regular (single colon) dependency
line can only be given shell lines one time. The
additional shell lines are ignored.
|
|
| Unexpected what |
error |
The what is either "end" or
"endif" and there was no previous %foreach,
%while or %if directive. Unknown option 'letter' Only
the command-line options listed by "make
-h" are acceptable.
|
|
| Unknown status [ (ignored) |
(keep working) ] |
error / report |
The shell line returned an unknown status.
|
|
| Unmade 'target' due to
source errors |
warning |
The "-k" flag was being used to do the
maximum useful work. One of target's sources 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 |
Make could not 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 left unterminated by the time the end
of the makefile was reached.
|
|
| User interrupt |
error |
You hit CTRL+BREAK or CTRL+C while Make was
executing a shell line.
|
The styles of the error messages produced by
MKMF are:
OPUS MKMF: message.
OPUS MKMF: file
(line num): message.
The styles of warning messages are:
OPUS MKMF: message
(warning).
OPUS MKMF: file (line num): message
(warning).
If the message is an error, MKMF will quit.
Otherwise, MKMF will continue. If you don't find an MKMF message
in the following list, check the Make error and warning messages
since MKMF and Make share many of the same messages.
| Message |
Description and possible
corrections |
Severity |
| file (line num): Can't find
filename. |
warning / report / error |
In file name on line num, the included file
filename cannot be found along the
.HDRPATH.source_file_extension. In verbose mode this
message is a report. With the "- x"
command-line flag, this message is an error.
|
|
| Can't enter 'name' into hash
table |
warning |
This can only happen with the "-c" flag
and the only recourse is to stop using it. Please
report this error to us.
|
|
| Can't open 'file' for
writing |
error |
MKMF could not open makefile file for writing.
Make file writable.
|
|
| Can't open 'name' with mode
'mode' |
error |
The file name can't be opened with mode
"r" (reading) or "w" (writing).
|
|
| Can't read 'template'.
Starting with empty 'makefile'. |
warning |
The template cannot be read, so the makefile
starts out empty.
|
|
| Creating 'makefile' from
'template' |
warning |
The makefile was initially empty and MKMF copies
template into makefile.
|
|
| Don't know what .ext builds |
warning |
There is no "%.object_extension : %.ext"
rule to transform source file .ext into an object
file. Object file extensions are defined by the
.TYPE.OBJ macro.
|
|
| #elif with no #if |
warning |
An "#elif" directive in a C source file
didn't have a preceding "#if".
|
|
| #else with no #if |
warning |
An "#else" directive in a C source file
didn't have a preceding "#if". Message
Description and possible corrections Severity
|
|
| #endif with no #if |
warning |
An "#endif" directive in a C source file
didn't have a preceding "#if".
|
|
| #ifdef overflow. Max 32
levels. |
error |
(C-mode only) A C source file has too deep of
#ifdef nesting for MKMF.
|
|
| #if with no value |
warning |
There is nothing after the "#if"
directive in a C source file.
|
|
| Ignoring .BUILD.ext=value |
warning |
MKMF no longer uses the .BUILD.ext macros.
|
|
| Ignoring
MKMF_CDEFINES, defined at file (line #). Using
.CDEFINES.ext |
warning |
MKMF no longer uses the MKMF_CDEFINES macro.
|
|
| Ignoring rule '%.to-1 :
%.from' (using '%.to-2 : %.from') |
warning |
Two rules with the same .from but different .to
exist. The first rule is used.
|
|
| Missing project source file
name |
warning |
The project source file name could not be scanned
because it is missing.
|
|
| No project source files
match 'spec' |
warning |
The spec did not match any actual files.
|
|
| No project source files were
specified |
error |
MKMF could not find any project source files.
|
|
| Nonstandard include |
warning |
Neither double quotes nor angle brackets surround
an included file name.
|
|
| Out of memory |
error |
MKMF ran out of memory. If you're using the
"-c" flag, try running without it.
Otherwise the makefile is too large or there are too
many header files.
|
|
| Unknown operator 'letter'
(number) |
warning |
The MKMF C preprocessor cannot decode the line. A
possible cause is the use of the ANSI C stringizing
or token-pasting operators, which are not supported.
|
|
| Unknown option 'letter' |
error |
Only the command-line options listed by "mkmf
-h" are acceptable.
|
|
| name (line num):
Unmatched #if |
warning |
The "#if" from line num was not
matched with an "#endif"
|
|
| Unterminated character
constant |
warning |
A character constant on this line is unterminated.
|
|
| Unterminated string |
warning |
A string on this line is unterminated.
|
|
Home Product Info Orders Downloads About Us Contact Us
Opus Software, Inc.
1032 Irving Street, Suite 439 San Francisco, CA 94122 USA
Phone: 415-485-9703 Fax: 415-485-9704 Email:biz@opussoftware.com