Home    Product Info    Orders    Downloads    About Us    Contact Us


 

Appendix A: Errors and Warnings

Make    MKMF

When Make or MKMF encounters a problem it produces an error, warning or report:

 

A.1 Make Error and Warning Messages [Top]

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 Make’s "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 target’s 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.

 

A.2 MKMF Error and Warning Messages [Top]

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