Using clearmake or omake instead of other make programs

clearmake and omake ensure correct reuse decisions of different versions of files selected by a config spec, determine the complete dependency list accurately with build auditing, and allow identical derived objects from other views to be winked in to the current view.

However, using another make program might be desirable for performance or compatibility reasons. If you use other make programs, do so with caution.

A standard make program compares the date and time of the target with that of its dependencies. If any dependency is newer than the target, make rebuilds the target. Because of configuration specifications and the winkin feature, the set of files visible in a view at any given time is very dynamic. It is common to rebuild a target because the view selects a dependency that is different, though not necessarily newer, than the one used in the previous build of the target. The HCL VersionVault build avoidance mechanism provides a more precise method of determining whether targets are up to date during builds by using the information stored in configuration records (CRs) to make correct decisions about reuse. CRs record the versions of all dependencies (whether listed in the makefile or not) of a target, rather than only the date and time of its last modification. If the version of a dependency from a CR does not match the version of the file selected by the view, clearmake or omake rebuilds the target.

The problem with using a make tool other than clearmake or omake is that the tool might make incorrect rebuild decisions if the config spec of the view is changed and different file versions are selected. However, if you are sure that the config spec will not change and that any labels used in it will not be moved to versions with earlier dates, a standard make program will make correct reuse decisions. Using the rmver command to remove a version used in a build can also change the modification time and cause make to fail to rebuild when necessary. However, this is not a recommended practice; you do not obtain the benefits of CRs and it is not realistic to assume that no one will change the config spec or move any referenced labels improperly. Because it is somewhat risky to use common make programs, use them for debug builds, not for production.