Home Product Info Orders Downloads About Us Contact Us
Overview List of Features What's New
Tutorial Quick Reference Guide
Year 2000 (Y2K) Compliance
The Opus Make software package comes with two principle tools: Opus Make and Opus MKMF.
Opus Make is a programming utility designed to speed program development. Make keeps track of the files that comprise the project, recompiling and relinking them only when required. Moreover, Make maintains important information, such as compiler and linker options, in an editable text file called a makefile. If youve ever returned to a project after being absent for a while, you know how hard is to remember all the parameters that were used the last time the project was built. Make remembers everything about the project for you.
Opus MKMF is a utility that helps with the maintenance of makefiles. Its principal duty is to determine the dependency information used by Make. MKMF fully supports C and C++ source files by understanding C-preprocessor directives. MKMF also supports Resource Compiler and other language files. In addition to this built-in support, MKMF can be extended to handle other languages you use.
Take a look at our Questions and Answers to see if Opus Make and MKMF are what you need.
Here are the list of Opus Make and MKMF features up through
the current version, v6.12. Features added with this version
are indicated with a
. Features added in the last minor
upgrade, v6.11 are shown with a
. Features introduced in our last major
upgrade, v6.10, are shown with a
. Details of the new features can be found
on the What's New page.
General Properties
- Portable makefiles across operating systems.
- Extensive set of Macros and Macro Modifiers.
- Multiple-directory support (Search paths).
- Long filename support.
- Self-extract makefiles from version control.
Shell Lines
- Automatic generation of response files give unlimited command-line length.
- Multiple compile lines automatically rolled into single invocation of compiler.
Version Control Systems Emulation and Compatibility
- PolyMake v4.0 and Intersolv PVCS Configuration Builder v5.x compatibility and emulation.
- Microsoft NMAKE compatibility and emulation
Dependency Generation
- Source files are scanned for dependencies.
- Supports C and C++ preprocessor directives.
- Supports Resource Compiler files.
- Extensible for other languages.
- Dependency output portable to similar and dissimilar file systems.
General Makefile Properties
- Portable makefiles. Makefiles created on one operating system can be read by Opus Make on any other operating system.
- Makefiles can contain conditionally read sections, can include other makefiles and can iterate sections.
- An automatically included initialization file can be customized by you.
- On shell lines, directives provide conditional and iteration capability independent of the underlying operating system shell.
- The "%do" directive executes the shell lines of another target, like a subroutine call. This subroutine call can pass along macro definitions which the called target can act on.
- With a command-line option Make shows each makefile read and each conditional evaluated, with full macro expansion, for easier makefile debugging.
Long filename support. Target names can be double quoted, supporting target names with spaces in them.
The "\" and "/" characters can be considered equivalent in target names.
For Win95 and
WinNT, mixed-case file names are supported.
The "SH" (execute shell) macro modifier executes the shell line defined by a macro and returns the output of the shell line.
Macro Definitions
- Macros can be defined with the following makefile statements:
Statement Type Makefile Appearance standard <name> = <value> conditional <name> ?= <value> right-side expanding <name> := <value> incremental <name> += <value> recursively
<name> = ... $(<name>) ... at "run-time" %set <name> = <value> -or-
%set <name> += <value>
- Macros can be undefined with the "%undef" directive.
- Environment variables become like-named macros.
- There is an extensive list of predefined macros.
All predefined macros can be redefined.
- An extensive set of Macro Modifiers take a macro value and return the macro value modified:
Modifier Class Modifiers Filename components Seven modifiers return the directory and filename components Absolute path name Convert the value to an absolute pathname Append & Prepend strings Add strings to the front or back of each macro element Change case Lower and raise the case of each macro element Execute a shell line Execute the macro value as a shell line and return the text output of the shell line as the value of the expansion.
Expand path name Return the actual path to a target Include file contents Read in the contents of a file or version control project. Or, read in the contents of a file using regular expression substitution Member & Non-member Select macro elements that match or do not match a pattern. Select a numbered element Select the Nth macro element String substitution Do a regular-expression or literal substitution Tokenize Replace space between macro elements with your own string Wild-card expand Use the macro value as a file-system pattern and return the list of files or directories that match.
- Predefined State Macros for every command-line flag and directive allow access to the status of Make.
Allow double quotes around macro elements that contain spaces.
Unknown or misspelled macro modifiers are now detected and reported.
Multiple Directory Support (Search Directories)
- Targets without explicit paths can be searched for in directories other than the current directory.
- The .PATH.xxx macros specify directories that targets with extension xxx may reside. The UNIX VPATH (view path) is also supported..
The .SEARCH directive adds file-specific search directories. This enhances the extension-specific search directories of the .PATH macros.
.SEARCH is now a true superset of the .PATH macros.
Inference Rules and Targets
- Inference rules are pattern-based, rather than only suffix-based. One such use of these rules could be to make some file from the same-named file in another directory.
- Targets can be grouped so updating one of the group updates them all.
- Inference rules can be defined for grouped targets.
- Automatic dependency information stored in object files created by Borland and Watcom compilers can be processed.
Shell Lines
- Extensive set of shell-line modifiers give you control far beyond the '@' and '-' modifiers of standard makes -- you can even do your own error processing based on the exit status of the previous command.
- Make generates response files automatically for long shell lines.
- Response files can be encoded inline, in the makefile.
In inline response files, "\!" quotes an initial "!" character.
- Multiple shell lines can be queued then executed in a single invocation of the compiler, all automatically.
An arbitrary number of targets can be queued (the prior limit was 32).
- MS-DOS Opus Make can swap itself out of memory before executing shell lines.
Better support of multiple-command shell lines to ease the use of MS-DOS, Win95 and UNIX makefiles under WinNT.
For Win95 the ".SHELL : .NOOPUSERRH" directive lets Make better support 4DOS.
Version Control Systems
- Make's version control support consists of the ability to look in the version control system for timestamps of source files stored therein and the ability to read project file lists.
- Supports Intersolv PVCS Version Manager.
- Supports Microsoft SourceSafe 3.x. Make can access the list of files in a SourceSafe project for true project control.
Supports Microsoft Visual SourceSafe 4.x,
v5.x and v6.0. Make can access the list of files and subprojects in a SourceSafe 4.x project for true project control and can recurse through subprojects.
- Supports Burton Systems Software TLIB v5.0. Make can access the list of files in a TLIB project for true project control.
- Supports MKS and GNU RCS.
Enhanced for proper handling of GMT-based storage file timestamps.
Supports MKS Source Integrity. Make can access file lists from Source Integrity projects and sandboxes.
The version control support directives now can look more like inference rules because of more liberal use of the "%" rule-matching character. As well, newly added to our Intersolv Version Manager and TLIB support is the ability to use unmangled storage-file names.
"Make makefile" mode
- Self-extracting projects. The makefile can be "made" before Make reads it. This can be used to have Make check the makefile out of version control.
Emulation and Compatibility
- PolyMake v4.0 and Intersolv PVCS Configuration Builder v5.x compatibility and emulation, including using Make as a drop-in replacement.
- Microsoft NMAKE compatibility and emulation, including using Make as a drop-in replacement. Make v6.12 is compatible with the NMAKE distributed with Microsoft Visual C++ 5.x.
- Compatibility with Visual C++ 2.x and 4.x makefiles and integration into the Visual C++ IDE.
Support for Microsoft Visual C++ v5.x.
- Some Borland Make and UNIX Make compatibility.
Object and Library Support
- Object libraries are maintained directly from their sources (no separate object files needed).
- Intel-platform Make supports OMF object libraries produced by 16-bit versions of Microsoft librarian (and other librarians).
- Intel-platform Make supports OMF86 object libraries produced by XLIB386 (and other librarians).
All platforms of Make support COFF (32-bit) object libraries including those produced by 32-bit Microsoft librarian and the UNIX archiver, ar.
General Features
- Source files are scanned for statements that include header files and dependencies are added to the corresponding object file. Included header files are scanned recursively and the resulting dependency information is added to the makefile
- Full treatment of C-preprocessor directives for C/C++ language files.
- MKMF has special handling for Resource Compiler files to add the proper dependency information that result from Resource Compiler statements.
- Extensibility for other programming languages.
- Automatic update of several important makefile macros so they reflect a growing project. In particular, MKMF updates the SRCS, OBJS, HDRS and EXTHDRS macro definitions in the makefile
MKMF can do dependencies for listed object files, from which it determines the source files to be scanned. This has the advantage that object files with path names show up in the makefile. Previously, source files were given to MKMF and their resultant object files never had path names: you had to use a .PATH macro to locate the object files.
The RC file support has been enhanced to recognize more Resource Compiler keywords.
Trigraph support of ??= (which represents the # character), ?? (^) and ??! (|) has been added.
MKMF now uses exactly the same rule finding mechanism as does Make for mapping between object files and source files.
Much faster dependency determination than in the past, especially for networked files. The "-s" flag now caches included files in memory. The new "-S" flag is the same as old "-s" flag, specifying slow scanning without include file caching.
Various double-quoted file name bugs have been fixed.
For Win95 and
WinNT, better support of mixed-case file names.
The "SH" (execute shell) macro modifier executes the shell line defined by a macro and returns the output of the shell line.
The "%exec" directive is now supported (just like Make).
MKMF's makefile emulation can now be set (just like Make).
Dependency Output
- Dependencies are output with the path part of the dependency represented as one of:
- Absolute paths all paths are fully qualified.
- Parameterized paths providing makefile portability between dissimilar file systems (for example, between MS-DOS and UNIX).
- Relative paths providing makefile portability between similar file systems (for example, between two MS-DOS directory trees with a different drive letter)
- Standard paths the default method.
- Dependencies are output to the makefile or to a file included from the makefile.
- Dependencies can be output in the standard, alphabetically-sorted fashion or
hierarchically.
The source file name can appear in the object-file dependencies.
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