Next: , Up: Shell commands   [Contents][Index]


13.1 Determining the platform

Sometimes it is desirable for an input file to know which platform m4 is running on. GNU m4 provides several macros that are predefined to expand to the empty string; checking for their existence will confirm platform details.

Optional builtin: __gnu__
Optional builtin: __os2__
Optional builtin: os2
Optional builtin: __unix__
Optional builtin: unix
Optional builtin: __windows__
Optional builtin: windows

Each of these macros is conditionally defined as needed to describe the environment of m4. If defined, each macro expands to the empty string. For now, these macros silently ignore all arguments, but in a future release of M4, they might warn if arguments are present.

When GNU extensions are in effect (that is, when you did not use the -G option, see Invoking m4), GNU m4 will define the macro __gnu__ to expand to the empty string.

$ m4
__gnu__
⇒
__gnu__(`ignored')
⇒
Extensions are ifdef(`__gnu__', `active', `inactive')
⇒Extensions are active
$ m4 -G
__gnu__
⇒__gnu__
__gnu__(`ignored')
⇒__gnu__(ignored)
Extensions are ifdef(`__gnu__', `active', `inactive')
⇒Extensions are inactive

On UNIX systems, GNU m4 will define __unix__ by default, or unix when the -G option is specified.

On native Windows systems, GNU m4 will define __windows__ by default, or windows when the -G option is specified.

On OS/2 systems, GNU m4 will define __os2__ by default, or os2 when the -G option is specified.

If GNU m4 does not provide a platform macro for your system, please report that as a bug.

define(`provided', `0')
⇒
ifdef(`__unix__', `define(`provided', incr(provided))')
⇒
ifdef(`__windows__', `define(`provided', incr(provided))')
⇒
ifdef(`__os2__', `define(`provided', incr(provided))')
⇒
provided
⇒1

Next: , Up: Shell commands   [Contents][Index]