Unsupported GNU Make options and features

2 minute read

Unsupported GNU Make options

Option eMake response if specified

-d (debug)

Error message

-j (run parallel)

Ignored

-l (load limit)

Ignored

-o (old file)

Error message

-p (print database)

Error message

-q (question)

Error message

-t (touch)

Error message

GNU Make 3.81 support

eMake does not support the following GNU Make 3.81 features:

  • Though $(eval) is allowed in rule bodies, any variables created by the $(eval) exist only in the scope of the rule being processed, not at the global scope as in GNU Make. For example, the following is not supported:

all: $(eval foo: bar)
  • Using ` $*` for an archive member target

GNU Make 3.82 Support

GNU Make 3.82 emulation supports the following GNU Make 3.82 features:

  • Multi-line variable definition types

  • Behavior in which pattern rule searches prefer the most-specific matching pattern, rather than the first matching pattern. For example, for a target {{foo.o}} and patterns {{%.o}} and {{f%.o}}, in that order, gmake 3.81 uses the {{%.o}} pattern, because it is the first match, but gmake 3.82 uses the {{f%.o}} pattern, because it is a more specific match

Other GNU Make 3.82 features are not supported.

GNU Make 4.0 and 4.1 support

GNU Make 4.0 and 4.1 emulation supports the GNU Make 4.0 shell assignment feature, where VAR!=<command> is equivalent to VAR:=$(<shell command>). Other GNU Make 4.0 features are not supported.

GNU Make 4.2 support

GNU Make 4.2 emulation supports the GNU Make 4.2 $(.SHELLSTATUS) variable. This variable is set to the exit status of the last != or $(shell …​) function invoked in this instance of Make. The value is 0 if successful or > 0 if not successful. The value is unset if the != or $(shell …​) function was not invoked. Other GNU Make 4.2 features are not supported.