makefile_smake

clearmake compatibility with IRIX smake (on SGI hosts)

APPLICABILITY

ProductCommand type
ClearCasedata structure
ClearCase LTdata structure

Platform
UNIX

SYNOPSIS

clearmake –C sgismake

DESCRIPTION

Note: The distinctive features of clearmake, such as build auditing, derived object sharing, and build avoidance, are supported in dynamic views only. In addition, while parallel building is supported in ClearCase snapshot views, it is not supported in ClearCase LT.

The clearmake program has been designed for compatibility with existing make programs, minimizing the work necessary to switch to clearmake. There are many independently evolving variants of make, which provide different sets of extended features. clearmake does not support all features of all variants, and absolute compatibility is not guaranteed.

If your makefiles use only the common extensions, they will probably work with clearmake. If you must use features that clearmake does not support, consider using another make program in a clearaudit shell. This alternative provides build auditing (configuration records), but does not provide build avoidance (winkin).

Note: When building with configuration records, clearmake handles double-colon rules differently than other make programs. For details, see Building Software.

Compatibility

The following features are enabled when you specify –C sgismake:

  • All extended macro-assignment operators:
    ?= Assign if undefined
    := Expand RHS immediately
    += Append to macro
    != Assign result of shell command
  • All extended macro-expansion operators:

    $(VAR:T)
    $(
    VAR:S/pattern/replace/)
    $(
    VAR:H)
    $(
    VAR:R)
    $(
    VAR:Mpattern)
    $(
    VAR:E)
    $(
    VAR:Npattern) 

  • Most makefile conditional directives (expressions may contain defined operator and defined operator):

    #if
    #ifdef, #ifndef
    #ifmake, #ifnmake
    #else 
    #elif 
    #elifmake, #elifnmake
    #elifdef, #elifndef
    #endif 

  • Makefile inclusion with search rules similar to those of cpp(1):
#include <file>
Look for file in /usr/include/make

#include "file"
Look for file in current directory, then in directories specified with –I command-line options, then in /usr/include/make

  • Command line option –I, for use with #include statements
  • Aliases for internal make macros:
    $(.TARGET) Alias for $@
    $(.PREFIX) Alias for $*
    $(.OODATE) Alias for $?
    $(.IMPSRC) Alias for $<
    $(.ALLSRC) Alias for $>

    Note: $> is not supported by standard make (1).

  • smake-specific built-ins file: /usr/include/make/system.mk
  • Inference rules with nonexistent intermediates
  • Search paths for dependencies (.PATH and .PATH.suffix)
  • Deferring build script commands (“...” in build script)
  • .NULL target: specifies suffix to use when target has no file-name suffix
  • .NOTPARALLEL target: disables parallel building
  • .MAKE target: specifies that a target corresponds to a sub-make; that target's build script is be invoked even when –n is used
  • The –q command-line option (see the clearmake reference page)

Limitations

Using –C –sgismake on a non-IRIX system may cause errors because different systems have different names for their built-in makefiles. You can disable use of built-in rules with clearmake –r.

SEE ALSO

clearmake, clearmake.options, makefile_ccase



Copyright© 2003 Rational Software. All Rights Reserved.