CMTDownload

You can download the sources of the version v1r8 of CMT or prebuilt binaries for some plateforms :

DEC-alpha (OSF1 V4.0 878 alpha - cxx)
Linux-i686 (Linux 2.2.13 i686 - g++)
i386_linux22 (Linux 2.2.13 i686 - g++)
hp9000s735 (HP-UX B.10.20 A 9000/735 - aCC)
hp9000s780 (HP-UX B.10.20 A 9000/780 - aCC)
Sun (SunOS papou1 5.7 Generic sun4u sparc SUNW,Ultra-4)
VisualC (NT4.0 - Visual C++)
LynxOS-PowerPC (LynxOS 2.5.1 PowerPC - g++)

The changes for this version

New features

  1. append, prepend and remove are available for sets as well

    It is now possible to specify set_append, set_prepend and set_remove similarly to the macro equivalents. One should be aware with this respect that appending and prepending strings to set definitions is done without any separator (as for macros but conversely to what happens for paths where a path separator is assumed). Therefore extensions to sets should explicitly include for instance space characters when required.

  2. Order of clean targets

    The default clean target is now triggering the set of <constituent>clean targets but in the reverse order of the specification order. This is to account for intermediate source file generation.

    Therefore if the three constituents A, B and C are declared, requesting a gmake clean would launch Cclean, Bclean and Aclean in that order.

    This new feature applies to groups through the <group>clean target.

  3. Cleaning old makefile fragments using cmt config

    The cmt config command now cleans up all previous makefile fragments, ie. files suffixed with .make or .nmake (possibly generated using other versions of CMT).

  4. Generation of expanded setup scripts

    It is possible to produce tag-specific expanded versions of the setup scripts (taking the form <tag>.[c]sh) through the specialized make targets csh and sh. The resulting scripts only contain environment variable and alias assignments, and the calls to the setup scripts declared in the requirements.

  5. New command to list the include_dirs specifications

    The cmt show include_dirs command displays the current specification for include_dirs.

  6. New command to list the pattern names

    The cmt show pattern names command displays names of all patterns (needed for shell completion mechanisms).

  7. Search path automatically induced by current working area improved

    The search path addition (to CMTPATH) induced by the current package is now the higher parent directory which is not itself a CMT package. Therefore if one works in a package A which is located within another package B in our current development area, then the path addition will consider the development area rather than the context of the B package.

    This used to puzzle the -local option of the cmt broadcast command.

  8. New generic facility for generating documents

    The new command cmt expand model "<model text>" provides a new generic facility for generating documents from a templated textual model. This facility introduces a (very primitive) support of XML syntax combined with the already existing and well known concepts or features of CMT that are:

    .

    The model to be expanded may be as simple as a normal text (possible containing CMT macros enclosed as usual between $(...), ${...} or %...%), in which case this text is simply echoed (after the proper macro expansion according to their current definition available through the cmt show macros command), eg;

    > cmt expand model 'The current cppflags is $(cppflags)'
    The current cppflags is -KPIC -features=no%anachronisms -O3
    

    But in addition to this trivial expansion mechanism, the text may also include XML-like constructs enclosed in <.../>. In this case, the construct is expected to take the following format:

    <fragment-name variable=value variable=value .../>
    

    and will be interpreted as follows:

    Associated with this new facility, a new document type named generator, provides its default minimal support in Makefiles. When used in a requirements file it must be customized therough the two following parameters:

Internal changes or bug fixing

  1. The missing source files produced missing make fragments for documents (this had been already fixed for applications and libraries in previous releases). Now the make fragment is correctly instanciated although the corresponding source file is not available at generation time.

    This implies that the responsibility of detecting a missing file (or a mistyped source file name) is assigned to the build procedure rather than to CMT.

  2. The make fragment containing the macro expansions (ie. <tag>.[n]make) is now unconditionally re-generated at each gmake session. The former behaviour was somewhat unspecified.

  3. Completion for tcsh and zsh have been improved

  4. Bug in Pattern::add : overridden patterns were not cleared

  5. The cmt config command was not recursively getting the used packages (this was required to properly define all patterns)

  6. The strategy for detecting and showing the syntax errors in the parser command line is more explicit and less aggressive.

  7. The symbolic links to shared libraries now considers $(<package>_tag) rather than $(CMTCONFIG)

  8. A new source file cmt_model.cxx [.h] has been added to handle the new model expansion facility.

  9. The shared library builder script for Windows (cmt_make_shlib.bat) is protected against missing static library (which is the source for creating a shared library).

    The mechanism used to create such a shared library (on Windows) requires to define all exported symbols. Two scenarios are possible:

  10. Two new queries have been added to the CmtSystem class:

  11. In cmt_pattern.cxx, the XML pattern <.../> is now protected against confusion with CMT patterns <...[^/]>

  12. The internal buffers in cmt_awk.cxx have been expanded. In addition, a (warning) message is echoed when the buffers are exhausted (which should not happen in normal situations)

  13. In cmt_fragment class, all copy functions have been replicated to fill in a cmt_string buffer rather than sending to standard output.

  14. In cmt_generator.cxx, the PACKAGE variable (assigned to the current package name) is now provided to all Visual fragments (ie. for building dsp and dsw files)

  15. In cmt_cvs.cxx, manage the file separator by CmtSystem::file_separator () (to le cmt cvs actions operate in a Windows environment).

  16. In fragments/nmake/library use $(tag) instead of Win32Debug

Last modified: Fri May 11 15:10:38 MET DST 2001