Changeset 83


Ignore:
Timestamp:
Sep 5, 2005, 12:45:14 PM (19 years ago)
Author:
arnault
Message:

Add structure_strategy - see CL#278

Location:
CMT/HEAD
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • CMT/HEAD/ChangeLog

    r82 r83  
     12005-09-05    <arnault@lal.in2p3.fr> 278
     2
     3        * source\cmt_parser.cxx (do_create): Make use of the
     4        structure strategy for creating package directory structure.
     5
     6        * source\cmt_cvs.cxx (class CvsImplementation): Make use of the
     7        structure strategy for creating package directory structure.
     8
     9        * source\cmt_parser.cxx (do_show_strategies): Display the structure strategy
     10
     11        * source\cmt_syntax.cxx (class KwdStructureStrategy): Create the
     12        parsing function for Structure strategies
     13
     14        * source\cmt_parser.h (enum CmtStructuringStyle): By default the
     15        structuring style is initialized with default_structuring_style
     16        instead of with_version_directory in order to remember whether the
     17        default has been overridden using EV or command option.
     18
     19        * source\cmt_project.cxx (configure): Initialize the VersionDirectory strategy
     20        (StrategyMgr): Create the VersionDirectory strategy entry.
     21
     22        * source\cmt_parser.h (enum): Add a StructureStrategy to define with/out version directory.
     23
    1242005-09-05  Christian Arnault  <arnault@lal.in2p3.fr> 277
    225
  • CMT/HEAD/doc/CMTDoc.html

    r46 r83  
    44<head>
    55 <style type="text/css">
    6    tt {color:#006600; font-weight: normal; %background-color: #eeffee}
    7    tt.cmt {color:#00AA00; font-weight: normal; %background-color: #eeeeee}
     6   body {font-face: Arial, Helvetica, Comic Sans MS, Times; color: #000000}
     7   tt {color:#00AA00; font-weight: normal; background-color: #eeeeee}
    88   pre {color:#FF0000; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4}
    99   pre.cmt {font-family: courier; color:#00AA00; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4}
     
    1717</head>
    1818<body bgcolor="#ffffff" link="#550088" alink="#007777" alink="#007777">
    19 <font face="Arial, Helvetica, Comic Sans MS, Times" color="#000000">
    2019<h1><center>CMT</center>
    2120<center>Configuration Management Tool</center></h1>
    22 <h2><center>Version v1r18p20050501</center>
     21<h2><center>Version v1r18p20050901</center>
    2322<center>Christian Arnault</center>
    2423<center><tt>arnault@lal.in2p3.fr</tt></center></h2>
    25 <center><i>Document revision date : 2005-05-02</i></center><hr><h2><a href="#index">General index</a></h2>
     24<center><i>Document revision date : 2005-09-05</i></center><hr><h2><a href="#index">General index</a></h2>
    2625<hr><h2><a name="Presentation"></a><a href="#index"><tt>&nbsp;1</tt></a> - Presentation</h2>
    2726<blockquote>
     
    142141  <p>Following these definitions, the basic configuration management
    143142      operations involved here (and serviced by the <tt>CMT</tt>
    144   ' tools)
     143  tools)
    145144      consist of :
    146145    <ul>
     
    438437  . It can receive the following
    439438    specifications:</p>
    440 <pre class="cmt">
     439<pre>
    441440project &lt;project-name&gt;          [1]
    442441<i>project-use specifications...</i>   [2]
    443 <i>strategy specifications...</i>      [3]
    444 </pre>
     442<i>strategy specifications...</i>      [3]</pre>
    445443  <ol>
    446444    <li>The project name specified here takes precedence over the
     
    473471           strategies to different sub-projects. The strategy
    474472           specifications may appear in requirements file of any package
    475     of a project or in the <tt>cmt/project.cmt</tt>
     473       of a project or in the <tt>cmt/project.cmt</tt>
    476474     project file.
    477475      <p>By default a project inherits the strategies of its
     
    487485<p>The project file can be created using the command:</p>
    488486<pre>
    489 &gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;]</pre>
     487&gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;]
     488&gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;] [-use=&lt;package&gt;:&lt;version&gt;:&lt;path&gt;]...</pre>
    490489  <p>This will create the complete directory hierarchy from the
    491490        current directory (or, when it is specified from the optional
    492491        project path). It will also create a project file containing the
    493       project name.</p>
     492        project name, and optionnally will initialize it with some use
     493      statements.</p>
    494494    <blockquote><i>Note that the &lt;release&gt; argument may be
    495495          left empty (or to an empty string). In this case, the directory
    496           hierarchy will be limited to one level devoted to the project
     496          hierarchy will be limited to the single level of the project
    497497        name.</i>
    498498</blockquote>
     
    505505&gt; cmt create_project ProjectA 1.0 /test
    506506&gt; cmt create_project ProjectB 1.0 /test</pre>
    507   <p>And we fill <tt>CMTPATH</tt>
     507  <p>And we manually fill <tt>CMTPATH</tt>
    508508 with:</p>
    509509<pre>
    510510/test/WorkArea:/test/ProjectA/1.0:/test/ProjectB/1.0</pre>
    511   <p>Then the following projects will appear displayed from bottom
    512       to top as</p>
     511  <p>Then, when standing in the <tt>WorkArea</tt>
     512   the following
     513      projects will appear displayed from bottom to top as</p>
    513514<pre>
    514515&gt; cd /test/WorkArea
     
    534535<pre>
    535536/test</pre>
     537<p>This complete sequence may also be shortened as follows:</p>
     538<pre>
     539&gt; cmt create_project ProjectB 1.0 /test
     540&gt; cmt create_project ProjectA 1.0 /test -use=ProjectB:1.0
     541&gt; cmt create_project WorkArea "" /test -use=ProjectA:1.0</pre>
    536542</blockquote>
    537543<hr><h3><a name="Projects and strategies"></a><a href="#index"><tt>&nbsp;4.&nbsp;2</tt></a> - Projects and strategies</h3>
    538544<blockquote>
    539   <p>Every strategy setting defines two mutually exclusive tags
    540       and activates one of them.</p>
     545  <p>Few behaviours of the configuration management process can be
     546        tailored with respect to CMT, via means of defining
     547  <i>strategies</i>
     548  . Then according to these strategies, CMT will
     549      behave in well defined ways.</p>
     550  <p>Every strategy setting is a boolean value, instructing CMT to
     551        activate or not a given behaviour. As such it defines two
     552        mutually exclusive CMT <i>tags</i>
     553   and it activates one of
     554      them.</p>
    541555<pre class="cmt">
    542556&lt;project&gt;_&lt;have_item&gt;
     
    544558<p>Examples</p>
    545559<pre class="cmt">
    546 &lt;project&gt;_prototypes
    547 &lt;project&gt;_no_prototypes
    548560&lt;project&gt;_with_install_area
    549561&lt;project&gt;_without_install_area
     
    553565&lt;project&gt;_no_root
    554566&lt;project&gt;_cleanup
    555 &lt;project&gt;_no_cleanup</pre>
    556   <p>In particular, the installation area mechanism is strongly
    557         connected with the project hierarchy. This happens through
    558       several mechanisms:</p>
     567&lt;project&gt;_no_cleanup
     568&lt;project&gt;_prototypes
     569&lt;project&gt;_no_prototypes</pre>
     570  <p>In the context of a hierarchy - <i>a graph</i>
     571   - of projects,
     572        strategies are transmitted along the graph, according to the use
     573        relationships specified between the projects. A project
     574        transmits its strategies to its clients except when one of them
     575      overrides those strategies.</p>
     576  <p>Several mechanisms help defining project specific properties,
     577      and more specifically making use of the strategies:</p>
    559578  <ul>
    560579    <li>The <tt>&lt;project&gt;</tt>
     
    586605     is
    587606    <tt>${cmt_installarea_prefix}</tt>
    588     <p></p>
     607     (which itself is a global
     608            macro that receives a default value from CMT )<p></p>
    589609  </li>
    590610</ul>
     
    594614  <p>This is an environment variable containing a search list,
    595615        very similar to the well know Unix or Windows <tt>PATH</tt>
    596         environment variable, containing a list of file paths where CMT
    597         projects can be found. The syntax of this search list follows
    598         the standard syntax of search lists, i.e. items are separated
    599         using a <tt>:</tt>
     616        environment variable. It specifies a list of file paths where
     617        CMT projects can be found. The syntax of this search list
     618        follows the standard syntax of search lists, i.e. items are
     619        separated using a <tt>:</tt>
    600620   character on Unix and a <tt>;</tt>
    601    character
    602       on Windows.</p>
     621      character on Windows.</p>
    603622      <p><blockquote><i>One should understand this search list as the
    604623            primary mechanism to locate sub-projects in the software base,
     
    652671                             /PB_A/...
    653672                             /PB_B/...   </pre>
     673<p>In this example:</p>
    654674  <ul>
    655     <li>there are two project areas, one for the main
    656           developments, and another one for managing external products</li>
     675    <li>there are two project areas, one for the main developments
     676            (<tt>/project-area1</tt>
     677    ), and another one for managing
     678            external products (<tt>/project-area1</tt>
     679  )</li>
    657680    <li><tt>project-area1</tt>
    658681     offers three sub-projects
     
    822845    utilities, using for example the shell command: </p>
    823846<pre>
    824 csh&gt; source /lal/CMT/v1r18p20050501/mgr/setup.csh
     847csh&gt; source /lal/CMT/v1r18p20050901/mgr/setup.csh
    825848
    826849or
    827850
    828 ksh&gt; . /lal/CMT/v1r18p20050501/mgr/setup.sh
     851ksh&gt; . /lal/CMT/v1r18p20050901/mgr/setup.sh
    829852
    830853or
    831854
    832 dos&gt; call \lal\CMT\v1r18p20050501\mgr\setup.bat</pre>
     855dos&gt; call \lal\CMT\v1r18p20050901\mgr\setup.bat</pre>
    833856  <p>Obviously, this operation <i>must</i>
    834857   be performed (once)
     
    872895<i><font COLOR="#000077" face="courier new, courier">------------------------------------------
    873896Configuring environment for project Dev
    874 CMT version v1r18p20050501.
     897CMT version v1r18p20050901.
    875898------------------------------------------
    876899Installing the cmt directory
     
    896919<i><font COLOR="#000077" face="courier new, courier">------------------------------------------
    897920Configuring environment for package Foo version v1.
    898 CMT version v1r18p20050501.                              [1]
     921CMT version v1r18p20050901.                              [1]
    899922Root set to /home/arnault/Dev.
    900923System is Linux-i686                                     [2]
     
    932955<i><font COLOR="#007700" face="courier new, courier">------------------------------------------
    933956Configuring environment for package Foo version v1.
    934 CMT version v1r18p20050501.
     957CMT version v1r18p20050901.
    935958Root set to /ProjectB.
    936959System is Linux-i686
     
    955978    <tt>requirements</tt>
    956979    ) installed in the <tt>cmt</tt>
    957    branch.  </li>
     980  branch.  </li>
    958981  <p></p>
    959982    <li> A minimal <tt>Makefile</tt>
     
    10271050<i><font COLOR="#000077" face="courier new, courier">------------------------------------------
    10281051Removing package Foo version v1.
    1029 CMT version v1r18p20050501.
     1052CMT version v1r18p20050901.
    10301053Root set to /home/arnault/mydev.
    10311054System is Linux-i686
     
    10371060<i><font COLOR="#000077" face="courier new, courier">------------------------------------------
    10381061Removing package Foo version v1.
    1039 CMT version v1r18p20050501.
     1062CMT version v1r18p20050901.
    10401063Root set to /ProjectB.
    10411064System is Linux-i686
     
    13371360  <li>compiler and linker options</li>
    13381361    <li>run time settings such as environment variable definitions
    1339         (PATH, LD_LIBRARY_PATH, etc..)</li>
     1362        (<tt>PATH</tt>
     1363    , <tt>LD_LIBRARY_PATH</tt>
     1364  , etc..)</li>
    13401365  <li>data file access</li>
    13411366    <li>specification of local installation according to the
     
    19922017     component. This is done using one
    19932018    <tt>library</tt>
    1994    statement.  </li>
     2019  statement.  </li>
    19952020</ol>
    19962021  <p>The <tt>cmt create</tt>
     
    24132438            same subdirectory, one of them will be the <i>header</i>
    24142439     of
    2415      the generated complete fragment, the other will be its
     2440            the generated complete fragment, the other will be its
    24162441    <i>trailer</i>
    24172442  </li>
     
    30033028                features, graphical libraries) and therefore might require a
    30043029                controled re-build. This is especially useful for having these
    3005       constituents only rebuilt on demand rather than rebuilt
     3030                constituents only rebuilt on demand rather than rebuilt
    30063031              automatically when the default make command is run.</p>
    30073032<p>One could, for instance specify within the requirements file :</p>
     
    31753200            defined by a used package).</p>
    31763201  <p>The translations occur while running either the setup
    3177                 scripts (for alias, set or path) or the make command (for
     3202      scripts (for alias, set or path) or the make command (for
    31783203              macro and actions).</p>
    31793204<p>All these definitions follow the same pattern:</p>
     
    35823607            generic syntax is :</p>
    35833608<pre class="cmt">
    3584 use &lt;package&gt; [ &lt;version&gt; [ &lt;offset&gt; ] ]</pre>
     3609use &lt;package&gt; [ &lt;version&gt; [ &lt;offset&gt; ] ] [ -no_auto_imports=&lt;package&gt; ... ]</pre>
    35853610  <p>Omitting the version specification means that the most
    35863611              recent version (ie. the one with highest ids) that can be
     
    35963621              precedence over the standard search path list (see
    35973622            CMTPATH).</p>
     3623  <p>The additional <tt>-no_auto_imports</tt>
     3624   options
     3625              suppress the automatic inheritance of some standard
     3626              parameters from the specified used packages, such as
     3627            include paths, compiler flags, ... </p>
    35983628<p> Examples of such relationships are :</p>
    35993629<pre class="cmt">
     
    37813811  <p>Then, in addition, user defined templates can be installed
    37823812                within the pattern definitions. Their actual value will be
    3783 provided as arguments to the apply_pattern statement.</p>
     3813              provided as arguments to the apply_pattern statement.</p>
    37843814  <p>User defined templates that have not been assigned a
    37853815              value when the pattern is applied are simply ignored
     
    41344164  <tt>include_dirs</tt>
    41354165 instead).</p>
     4166    <blockquote><i>
     4167      <p>Note that this behaviour is expected to become
     4168                    obsolete in some next release of CMT. The default
     4169                    include search path of <tt>../src</tt>
     4170       will then simply
     4171                    disappear, and the <tt>include_path</tt>
     4172       statement will
     4173                    become meaningless. When this happens, include search
     4174                    paths will always have to be explicitly specified using the
     4175      <tt>include_dirs</tt>
     4176       statement. In order to anticipate
     4177                    this evolution, it is suggested to always use
     4178      <tt>include_path none</tt>
     4179       and add all include search
     4180                    directories using the <tt>include_dirs</tt>
     4181                  statement.</p>
     4182  </i>
     4183</blockquote>
    41364184</blockquote>
    41374185<hr><h4><a name="include_dirs"></a><a href="#index"><tt>13.&nbsp;2.15</tt></a> - include_dirs</h4>
    41384186<blockquote>
    4139 <p>Add explicit specifications for include access paths.</p>
     4187  <p>Add explicit specifications for include access
     4188              paths. The value may be provided through a macro
     4189            reference.</p>
     4190<p>The statement is sensitive to private scoping.</p>
    41404191</blockquote>
    41414192<hr><h4><a name="make_fragment"></a><a href="#index"><tt>13.&nbsp;2.16</tt></a> - make_fragment</h4>
     
    42974348  <li>the declaration of make fragments</li>
    42984349  <li>the declaration of patterns</li>
     4350    <li>the declaration of include search paths (via the
     4351    <tt>include_dirs</tt>
     4352   statement)</li>
    42994353</ul>
    43004354  <p>Public definitions are meant to be exported to any
     
    47664820                        per constituent source file), each containing the set of
    47674821                      found dependencies. </p>
     4822      <p>CMT is able to recursively compute the dependencies
     4823                      implied by the <tt>include</tt>
     4824       statements found in
     4825                      the source files. However it's also possible to make
     4826                      plain use of the standard mechanisms provided by some
     4827                      standard tools like <tt>cpp -M</tt>
     4828      . In this case, it
     4829                      will be required to <i>format</i>
     4830       the output produced
     4831                      by the selected tool so as to let CMT parse it and
     4832                      properly deduce the dependencies. Formatting the
     4833                      output of external tools may require to interface the
     4834                    tool itself e.g. using a shell script.</p>
     4835      <p>The standard CMT macro
     4836      <tt>$(build_dependencies)</tt>
     4837       must be used to specify
     4838                    an alternate dependency builder. The default value is:</p>
     4839<pre>$(cmtexe) -quiet -tag=$(tags) build dependencies</pre>
     4840    <p>The expected output format from any dependency builder is as follows:</p>
     4841      <ul>
     4842      <li>Each file corresponds to one single dependency line in the output</li>
     4843        <li>A dependency line should be formatted as follows:
     4844<pre>&lt;file-name&gt;_&lt;file_suffix&gt;_dependencies = &lt;source&gt; &lt;file&gt; ... </pre>
     4845        <p>Where:</p>
     4846          <ul>
     4847            <li><tt>&lt;file-name&gt;</tt>
     4848           is given without the file suffix</li>
     4849            <li><tt>&lt;file_suffix&gt;</tt>
     4850           is given without the dot</li>
     4851            <li><tt>&lt;source&gt;</tt>
     4852           is the path to the source file</li>
     4853            <li>the list of <tt>&lt;file&gt;</tt>
     4854           paths corresponds to the effective list of dependent files. This is a list of reative or absolute file paths.</li>
     4855        </ul>
     4856      </li>
     4857    </ul>
     4858      <p>A Unix shell script in
     4859      <tt>${CMTROOT}/mgr/cmt_build_deps.sh</tt>
     4860       is offered
     4861                        as an example of how to interface the standard <tt>cpp
     4862                      -M</tt>
     4863       command with CMT. It can be declared as a
     4864                    substitute to the internal mechanism as follows:</p>
     4865<pre>macro build_dependencies "${CMTROOT}/mgr/cmt_build_deps.sh"</pre>
     4866      <p>Of course this shell script should be considered as
     4867                      an example and might have to be adapted for other
     4868                    dependency builders, or for Windows.</p>
    47684869  </li>
    47694870    <li><tt>library_links</tt>
     
    48274928      . The build strategy may be
    48284929                        freely and globally overridden from any &nbsp;<a HREF='#The requirements file'>requirements</a>&nbsp; file,
    4829                using the <tt>build_strategy</tt>
     4930                        using the <tt>build_strategy</tt>
    48304931       cmt statement, providing
    48314932                      either the "prototypes" or the "no_prototypes" values. </p>
     
    48464947    <li><tt>tag_makefile</tt>
    48474948      <p> This command produces onto the standard output, the
    4848                         exhaustive list of all macros controled by <tt>CMT</tt>
     4949             exhaustive list of all macros controled by <tt>CMT</tt>
    48494950      ,
    48504951                        ie. those defined in the requirements files as well as the
     
    49405041<pre>
    49415042csh&gt; cmt create Foo v1 </pre>
    4942             or:
     5043or:
    49435044<pre>
    49445045csh&gt; cmt create Foo v1 ~/dev</pre>
     
    49725073<pre>
    49735074&gt; cmt expand model "abcd $(CMTVERSION) efgh"
    4974 <i><font COLOR="#000077" face="courier new, courier">abcd v1r18p20050501 efgh</font></i></pre>
     5075<i><font COLOR="#000077" face="courier new, courier">abcd v1r18p20050901 efgh</font></i></pre>
    49755076  </li>
    49765077    <li><i>Recursively</i>
     
    53985499      <p>This command displays the current knowledge of
    53995500                      sub-project definitions and settings. It shows the
    5400           project names and their location (ie the corresponding
     5501                      project names and their location (ie the corresponding
    54015502                      item in <tt>CMTPATH</tt>
    54025503    </p>
     
    54585559#
    54595560# Selection :                                    [4]
    5460 use CMT v1r18p20050501 (/afs/cern.ch/sw/contrib)
     5561use CMT v1r18p20050901 (/afs/cern.ch/sw/contrib)
    54615562use ExternalLibs v4r2p0  (/afs/cern.ch/atlas/offline/external/Gaudi/0.12.1.5)    [5]
    54625563use CLHEP v2r1820p0  (/afs/cern.ch/atlas/offline/external/Gaudi/0.12.1.5)
     
    60566157<p>the basics of the mechanisms supported by CMT are the following:</p>
    60576158  <ol>
    6058     <li><p></p>
    6059     All mechanisms are customizable on a per-project basis,
    6060       so as to easily follow the project specific conventions</li>
    6061     <li><p></p>
    6062     However CMT proposes a minimal default behaviour based on the
     6159    <li>The installation area mechanism is activated on demand via a
     6160        dedicated strategy specification, that can be written either in a
     6161        requirements file or in a project file. By default the mechanism
     6162        is <i>not</i>
     6163     active.<p></p>
     6164  </li>
     6165    <li>All mechanisms are customizable on a per-project basis,
     6166        so as to easily follow the project specific conventions<p></p>
     6167  </li>
     6168    <li>However CMT proposes a minimal default behaviour based on the
    60636169        concrete experience in large projects, as well as frequently met
    6064       practices</li>
    6065     <li><p></p>
    6066     A typical well supported convention is to map the set of
     6170        practices<p></p>
     6171  </li>
     6172    <li>A typical well supported convention is to map the set of
    60676173        installation areas onto the set of CMTPATH entries, associating the
    60686174        concept of CMTPATH splitting with the sub-project
    6069       organization</li>
    6070     <li><p></p>
    6071     A typical consequence of this approach is that many
     6175        organization<p></p>
     6176  </li>
     6177    <li>A typical consequence of this approach is that many
    60726178        configuration parameters need to be set according to the list of
    60736179        CMTPATH items. Eg on a Unix system, if one expects to find shared
     
    60766182        LD_LIBRARY_PATH entries accordingly. The mechanism of
    60776183    <tt>cmtpath_pattern</tt>
    6078    is exactly designed for that.</li>
    6079     <li><p></p>
    6080     The mechanism easily supports the extension for installing
     6184     is exactly designed for that.<p></p>
     6185  </li>
     6186    <li>The mechanism easily supports the extension for installing
    60816187        binary files (libraries, applications, java classes), runtime
    6082       files, documentation and header files.</li>
     6188        files, documentation and header files.<p></p>
     6189  </li>
    60836190</ol>
    60846191<hr><h3><a name="The default implementation"></a><a href="#index"><tt>16.&nbsp;1</tt></a> - The default implementation</h3>
     
    60876194  <ol>
    60886195    <li>
    6089     <p></p>
    60906196            A set of <tt>cmtpath_pattern</tt>
    60916197    s defined in the CMT requirements
     
    60936199<pre>
    60946200&gt; cmt show cmtpath_patterns</pre>
     6201    <p></p>
    60956202  </li>
    60966203    <li>
    6097     <p></p>
    60986204            A consistent set of actions added to the following make_fragments
    60996205      <table>
    6100         <tr><td>application</td>
     6206          <tr><td><tt>application</tt>
     6207        </td>
    61016208        <td>applications</td>
    61026209      </tr>
    6103         <tr><td>library</td>
     6210          <tr><td><tt>library</tt>
     6211        </td>
    61046212        <td>shared libraries</td>
    61056213      </tr>
    6106         <tr><td>library_no_share</td>
     6214          <tr><td><tt>library_no_share</tt>
     6215        </td>
    61076216        <td>static libraries</td>
    61086217      </tr>
    6109         <tr><td>java_header</td>
     6218          <tr><td><tt>java_header</tt>
     6219        </td>
    61106220        <td>Java applications</td>
    61116221      </tr>
    6112         <tr><td>jar</td>
     6222          <tr><td><tt>jar</tt>
     6223        </td>
    61136224        <td>Java libraries</td>
    61146225      </tr>
    61156226    </table>
     6227    <p></p>
    61166228  </li>
    61176229    <li>
    6118     <p></p>
    61196230    <p>One shell script for installing or uninstalling files or directories</p>
    61206231<pre>
     
    61236234${CMTROOT}/mgr/cmt_install_action.bat
    61246235${CMTROOT}/mgr/cmt_uninstall_action.bat</pre>
    6125   </li>
    6126     <p>The default architecture of this installation scheme is by
    6127         default set for each CMTPATH entry to:</p>
     6236    <p></p>
     6237  </li>
     6238    <li>
     6239      <p>The default architecture of this installation scheme is by
     6240          default set for each CMTPATH entry to:</p>
    61286241<pre>
    6129 &lt;path&gt;/InstallationArea/$(tag)/bin/...                [1]
    6130                        /$(tag)/lib/...                [2]
    6131                        /include/&lt;package&gt;/...         [3]
    6132                        /share/bin/...                 [4]
    6133                        /share/lib/...                 [5]
    6134                              /...                     [6]
    6135                        /doc/&lt;package&gt;/...             [7]
    6136                            /...                       [8]</pre>
    6137     <ol>
    6138     <li>Platform dependent executables</li>
    6139     <li>Platform dependent libraries</li>
    6140     <li>Public header files </li>
    6141     <li>Platform independent applications (eg Java applications)</li>
    6142     <li>Platform independent libraries (eg Java libraries)</li>
    6143     <li>other platform independent files</li>
    6144     <li>package specific documentations</li>
    6145     <li>project-wide documentation</li>
    6146   </ol>
     6242&lt;path&gt;/$(&lt;project&gt;_installarea_prefix)/$(tag)/bin/...                [1]
     6243                                      /$(tag)/lib/...                [2]
     6244                                      /include/&lt;package&gt;/...         [3]
     6245                                      /share/bin/...                 [4]
     6246                                      /share/lib/...                 [5]
     6247                                            /...                     [6]
     6248                                      /doc/&lt;package&gt;/...             [7]
     6249                                          /...                       [8]</pre>
     6250      <ol>
     6251      <li>Platform dependent executables</li>
     6252      <li>Platform dependent libraries</li>
     6253      <li>Public header files </li>
     6254      <li>Platform independent applications (eg Java applications)</li>
     6255      <li>Platform independent libraries (eg Java libraries)</li>
     6256      <li>other platform independent files</li>
     6257      <li>package specific documentations</li>
     6258      <li>project-wide documentation</li>
     6259    </ol>
     6260      <p>The <tt>&lt;project&gt;_installarea_prefix</tt>
     6261       takes the
     6262            default value of <tt>$(cmt_installarea_prefix)</tt>
     6263       for all
     6264            projects, which itself takes the default value of
     6265      <tt>InstallArea</tt>
     6266      . Of course it can be overridden to other
     6267          values in each project</p>
     6268  </li>
    61476269</ol>
    6148   <p>The cmtpath_patterns are designed in this implementation for
    6149       constructing a proper and consistent sequence of system specific
    6150       environment variables (eg PATH, LD_LIBRARY_PATH, CLASSPATH) as
    6151       well as compiler or linker options so as to transparently refer to
    6152       the installation area only when it is appropriate to ovverride the
    6153     local patterns.</p>
     6270  <p>The <tt>cmtpath_patterns</tt>
     6271   are designed in this
     6272      implementation for constructing a proper and consistent sequence
     6273      of system specific environment variables (eg <tt>PATH</tt>
     6274  ,
     6275  <tt>LD_LIBRARY_PATH</tt>
     6276  , <tt>CLASSPATH</tt>
     6277  ) as well as compiler
     6278      or linker options so as to transparently refer to the installation
     6279      area only when it is appropriate to ovverride the local
     6280    patterns.</p>
    61546281</blockquote>
    61556282<hr><h3><a name="Tuning the installation area mechanisms"></a><a href="#index"><tt>16.&nbsp;2</tt></a> - Tuning the installation area mechanisms</h3>
     
    63266453csh&gt; cd /Packages
    63276454csh&gt; &lt;get the tar file from the Web&gt;
    6328 csh&gt; tar xzf CMTv1r18p20050501.tar.gz
    6329 csh&gt; cd CMT/v1r18p20050501/mgr
     6455csh&gt; tar xzf CMTv1r18p20050901.tar.gz
     6456csh&gt; cd CMT/v1r18p20050901/mgr
    63306457csh&gt; ./INSTALL
    63316458csh&gt; source setup.csh
     
    63546481 special application): </p>
    63556482  <UL>
    6356     <li>HKEY_LOCAL_MACHINE/Software/CMT/root will contain the root
    6357                   directory where <tt>CMT</tt>
    6358    is installed (eg. "e:"). </li>
    6359     <li>HKEY_LOCAL_MACHINE/Software/CMT/version will contain the
    6360                   current version tag of <tt>CMT</tt>
    6361    ("v1r18p20050501" for this version). </li>
    6362     <li>HKEY_LOCAL_MACHINE/Software/CMT/path/ may optionally
    6363                   contain a set of text values corresponding to the different
    6364                 package global access paths. </li>
    6365     <li>HKEY_LOCAL_MACHINE/Software/CMT/site will contain the
    6366                 conventional site name. </li>
    6367     <li>HKEY_CURRENT_USER/Software/CMT/path/ may contain a set of
    6368                   text of text values corresponding to the different package
    6369                 private access paths. </li>
     6483    <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/root</tt>
     6484     will
     6485                contain the root directory where <tt>CMT</tt>
     6486     is installed
     6487                (eg. <tt>"e:"</tt>
     6488  ). </li>
     6489    <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/version</tt>
     6490     will
     6491                contain the current version tag of <tt>CMT</tt>
     6492                (<tt>"v1r18p20050901"</tt>
     6493   for this version). </li>
     6494    <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/path/</tt>
     6495     may
     6496                optionally contain a set of text values corresponding to
     6497              the different package global access paths. </li>
     6498    <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/site</tt>
     6499     will
     6500              contain the conventional site name. </li>
     6501    <li><tt>HKEY_CURRENT_USER/Software/CMT/path/</tt>
     6502     may
     6503                contain a set of text of text values corresponding to the
     6504              different package private access paths. </li>
    63706505</UL>
    63716506  <p>CMT can also be configured to run on DOS-based environments
     
    63776512dos&gt; cd Packages
    63786513dos&gt; &lt;get the tar file from the Web&gt;
    6379 dos&gt; cd CMT\v1r18p20050501\mgr
     6514dos&gt; cd CMT\v1r18p20050901\mgr
    63806515dos&gt; call INSTALL
    63816516dos&gt; call setup.bat
     
    65346669      </td>
    65356670      <td>gives the current complete version tag of CMT</td>
    6536         <td><tt>v1r18p20050501</tt>
     6671        <td><tt>v1r18p20050901</tt>
    65376672      </td>
    65386673    </tr>
     
    71527287         to be rebuilt first (since each
    71537288                    constituent is associated with a target with the same
    7154         name). This is especially needed when one want to use
     7289                    name). This is especially needed when one want to use
    71557290                    the parallel gmake (ie. the -j option of gmake).
    71567291      </td>
     
    72327367        &gt;ROOT</tt>
    72337368      </td>
    7234       <td width="400">The access path of the package (including the version branch)</td>
     7369        <td width="400">The access path of the package (including
     7370                  the version branch). This is controlled by the
     7371        <tt>setup_strategy [no_]root</tt>
     7372       statement.</td>
    72357373    </tr>
    72367374      <tr>
     
    72507388        &gt;VERSION</tt>
    72517389      </td>
    7252       <td>The used version of the package</td>
     7390      <td>The used version of the package.</td>
    72537391    </tr>
    72547392      <tr>
     
    77827920    </tr>
    77837921      <tr>
    7784       <td>ADDINCLUDE</td>
     7922        <td><tt>ADDINCLUDE</tt>
     7923      </td>
    77857924      <td>additional include path</td>
    77867925        <td>&lt;<i>language</i>
     
    77887927    </tr>
    77897928      <tr>
    7790       <td>CONSTITUENT</td>
     7929        <td><tt>CONSTITUENT</tt>
     7930      </td>
    77917931      <td>name of the constituent</td>
    77927932        <td>&lt;<i>language</i>
     
    77947934    </tr>
    77957935      <tr>
    7796       <td>DATE</td>
     7936        <td><tt>DATE</tt>
     7937      </td>
    77977938      <td>now</td>
    77987939      <td>make_header</td>
    77997940    </tr>
    78007941      <tr>
    7801       <td>FILENAME</td>
     7942        <td><tt>FILENAME</tt>
     7943      </td>
    78027944      <td>file name without path</td>
    78037945        <td>buildproto &lt;<i>language</i>
     
    78067948    </tr>
    78077949      <tr>
    7808       <td>FILEPATH</td>
     7950        <td><tt>FILEPATH</tt>
     7951      </td>
    78097952      <td>file path</td>
    78107953        <td>buildproto &lt;<i>language</i>
     
    78137956    </tr>
    78147957      <tr>
    7815       <td>FILESUFFIX</td>
     7958        <td><tt>FILESUFFIX</tt>
     7959      </td>
    78167960      <td>file suffix (without dot)</td>
    78177961        <td>&lt;<i>language</i>
     
    78197963    </tr>
    78207964      <tr>
    7821       <td>FILESUFFIX</td>
     7965        <td><tt>FILESUFFIX</tt>
     7966      </td>
    78227967      <td>file suffix (with dot)</td>
    78237968        <td>&lt;<i>document</i>
     
    78257970    </tr>
    78267971      <tr>
    7827       <td>FULLNAME</td>
     7972        <td><tt>FULLNAME</tt>
     7973      </td>
    78287974      <td>complete file path and name</td>
    78297975        <td>&lt;<i>language</i>
     
    78327978    </tr>
    78337979      <tr>
    7834       <td>GROUP</td>
     7980        <td><tt>GROUP</tt>
     7981      </td>
    78357982      <td>group name</td>
    78367983      <td>constituents_header</td>
    78377984    </tr>
    78387985      <tr>
    7839       <td>LINE</td>
     7986        <td><tt>LINE</tt>
     7987      </td>
    78407988      <td>source files</td>
    78417989        <td>&lt;<i>language</i>
     
    78437991    </tr>
    78447992      <tr>
    7845       <td>LINKMACRO</td>
     7993        <td><tt>LINKMACRO</tt>
     7994      </td>
    78467995      <td>link macro</td>
    78477996      <td>application</td>
    78487997    </tr>
    78497998      <tr>
    7850       <td>NAME</td>
     7999        <td><tt>NAME</tt>
     8000      </td>
    78518001      <td>file name without path and suffix</td>
    78528002        <td>buildproto &lt;<i>language</i>
     
    78558005    </tr>
    78568006      <tr>
    7857       <td>OBJS</td>
     8007        <td><tt>OBJS</tt>
     8008      </td>
    78588009      <td>object files</td>
    78598010      <td>jar_header java_header jar library_no_share library application cleanup_java document_header trailer</td>
    78608011    </tr>
    78618012      <tr>
    7862       <td>OUTPUTNAME</td>
     8013        <td><tt>OUTPUTNAME</tt>
     8014      </td>
    78638015      <td>output file name</td>
    78648016      <td>java</td>
    78658017    </tr>
    78668018      <tr>
    7867       <td>PACKAGE</td>
     8019        <td><tt>PACKAGE</tt>
     8020      </td>
    78688021      <td>current package name</td>
    78698022        <td>&lt;<i>language</i>
     
    78718024    </tr>
    78728025      <tr>
    7873       <td>PACKAGEPATH</td>
     8026        <td><tt>PACKAGEPATH</tt>
     8027      </td>
    78748028      <td>current package location</td>
    78758029      <td>readme_use</td>
    78768030    </tr>
    78778031      <tr>
    7878       <td>PROTOSTAMPS</td>
     8032        <td><tt>PROTOSTAMPS</tt>
     8033      </td>
    78798034      <td>prototype stamp files</td>
    78808035      <td>protos_header</td>
    78818036    </tr>
    78828037      <tr>
    7883       <td>PROTOTARGET</td>
     8038        <td><tt>PROTOTARGET</tt>
     8039      </td>
    78848040      <td>prototype target name</td>
    78858041      <td>library_header application_header</td>
    78868042    </tr>
    78878043      <tr>
    7888       <td>SUFFIX</td>
     8044        <td><tt>SUFFIX</tt>
     8045      </td>
    78898046      <td>document suffix</td>
    78908047        <td>&lt;<i>document</i>
     
    78928049    </tr>
    78938050      <tr>
    7894       <td>TITLE</td>
     8051        <td><tt>TITLE</tt>
     8052      </td>
    78958053      <td>title for make header</td>
    78968054      <td>make_header</td>
    78978055    </tr>
    78988056      <tr>
    7899       <td>USER</td>
     8057        <td><tt>USER</tt>
     8058      </td>
    79008059      <td>user name</td>
    79018060      <td>make_header</td>
    79028061    </tr>
    79038062      <tr>
    7904       <td>VERSION</td>
     8063        <td><tt>VERSION</tt>
     8064      </td>
    79058065      <td>current package version tag</td>
    79068066      <td>readme_header readme readme_use</td>
     
    80288188</p>
    80298189</blockquote>
    8030 <hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>18.&nbsp;7</tt></a> - The complete requirements syntax</h3>
     8190<hr><h3><a name="The complete project file syntax"></a><a href="#index"><tt>18.&nbsp;7</tt></a> - The complete project file syntax</h3>
     8191<blockquote>
     8192  The syntax of specification statements that can be installed in a
     8193<tt>project.cmt</tt>
     8194 file are :
     8195<center>
     8196<table cols="3">
     8197<tr>
     8198<td width="220"></td>
     8199<td width="10"></td>
     8200<td></td>
     8201</tr>
     8202<tr>
     8203<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-cmt-statement"></a>cmt-statement</i></font></td>
     8204<td class="rule">:</td>
     8205<td class="rule">
     8206<font face="courier new, courier" COLOR="#770000"><i>
     8207<a href="#kwCMTProject-build_strategy">build_strategy</a>
     8208</i></font>
     8209</td>
     8210</tr>
     8211<tr>
     8212<td></td>
     8213<td>|</td>
     8214<td>
     8215<font face="courier new, courier" COLOR="#770000"><i>
     8216<a href="#kwCMTProject-container">container</a>
     8217</i></font>
     8218</td>
     8219</tr>
     8220<tr>
     8221<td></td>
     8222<td>|</td>
     8223<td>
     8224<font face="courier new, courier" COLOR="#770000"><i>
     8225<a href="#kwCMTProject-project">project</a>
     8226</i></font>
     8227</td>
     8228</tr>
     8229<tr>
     8230<td></td>
     8231<td>|</td>
     8232<td>
     8233<font face="courier new, courier" COLOR="#770000"><i>
     8234<a href="#kwCMTProject-setup_strategy">setup_strategy</a>
     8235</i></font>
     8236</td>
     8237</tr>
     8238<tr>
     8239<td></td>
     8240<td>|</td>
     8241<td>
     8242<font face="courier new, courier" COLOR="#770000"><i>
     8243<a href="#kwCMTProject-use">use</a>
     8244</i></font>
     8245</td>
     8246</tr>
     8247<tr>
     8248<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-build_strategy"></a>build_strategy</i></font></td>
     8249<td class="rule">:</td>
     8250<td class="rule">
     8251<font face="courier new, courier" COLOR="#FF0000">
     8252build_strategy
     8253</font>
     8254<font face="courier new, courier" COLOR="#770000"><i>
     8255build-strategy-name
     8256</i></font>
     8257</td>
     8258</tr>
     8259<tr>
     8260<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-build-strategy-name"></a>build-strategy-name</i></font></td>
     8261<td class="rule">:</td>
     8262<td class="rule">
     8263<font face="courier new, courier" COLOR="#FF0000">
     8264prototypes
     8265</font>
     8266</td>
     8267</tr>
     8268<tr>
     8269<td></td>
     8270<td>|</td>
     8271<td>
     8272<font face="courier new, courier" COLOR="#FF0000">
     8273no_prototypes
     8274</font>
     8275</td>
     8276</tr>
     8277<tr>
     8278<td></td>
     8279<td>|</td>
     8280<td>
     8281<font face="courier new, courier" COLOR="#FF0000">
     8282with_installarea
     8283</font>
     8284</td>
     8285</tr>
     8286<tr>
     8287<td></td>
     8288<td>|</td>
     8289<td>
     8290<font face="courier new, courier" COLOR="#FF0000">
     8291without_installarea
     8292</font>
     8293</td>
     8294</tr>
     8295<tr>
     8296<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-container"></a>container</i></font></td>
     8297<td class="rule">:</td>
     8298<td class="rule">
     8299<font face="courier new, courier" COLOR="#FF0000">
     8300container
     8301</font>
     8302<font face="courier new, courier" COLOR="#770000"><i>
     8303container-name
     8304</i></font>
     8305[&nbsp;
     8306<font face="courier new, courier" COLOR="#770000"><i>
     8307<a href="#kwCMTProject-version-tag">version-tag</a>
     8308</i></font>
     8309[&nbsp;
     8310<font face="courier new, courier" COLOR="#770000"><i>
     8311access-path
     8312</i></font>
     8313&nbsp;]&nbsp;
     8314&nbsp;]&nbsp;
     8315</td>
     8316</tr>
     8317<tr>
     8318<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-project"></a>project</i></font></td>
     8319<td class="rule">:</td>
     8320<td class="rule">
     8321<font face="courier new, courier" COLOR="#FF0000">
     8322project
     8323</font>
     8324<font face="courier new, courier" COLOR="#770000"><i>
     8325project-name
     8326</i></font>
     8327</td>
     8328</tr>
     8329<tr>
     8330<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-setup_strategy"></a>setup_strategy</i></font></td>
     8331<td class="rule">:</td>
     8332<td class="rule">
     8333<font face="courier new, courier" COLOR="#FF0000">
     8334setup_strategy
     8335</font>
     8336<font face="courier new, courier" COLOR="#770000"><i>
     8337setup-strategy-name
     8338</i></font>
     8339</td>
     8340</tr>
     8341<tr>
     8342<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-setup-strategy-name"></a>setup-strategy-name</i></font></td>
     8343<td class="rule">:</td>
     8344<td class="rule">
     8345<font face="courier new, courier" COLOR="#FF0000">
     8346config
     8347</font>
     8348</td>
     8349</tr>
     8350<tr>
     8351<td></td>
     8352<td>|</td>
     8353<td>
     8354<font face="courier new, courier" COLOR="#FF0000">
     8355no_config
     8356</font>
     8357</td>
     8358</tr>
     8359<tr>
     8360<td></td>
     8361<td>|</td>
     8362<td>
     8363<font face="courier new, courier" COLOR="#FF0000">
     8364root
     8365</font>
     8366</td>
     8367</tr>
     8368<tr>
     8369<td></td>
     8370<td>|</td>
     8371<td>
     8372<font face="courier new, courier" COLOR="#FF0000">
     8373no_root
     8374</font>
     8375</td>
     8376</tr>
     8377<tr>
     8378<td></td>
     8379<td>|</td>
     8380<td>
     8381<font face="courier new, courier" COLOR="#FF0000">
     8382cleanup
     8383</font>
     8384</td>
     8385</tr>
     8386<tr>
     8387<td></td>
     8388<td>|</td>
     8389<td>
     8390<font face="courier new, courier" COLOR="#FF0000">
     8391no_cleanup
     8392</font>
     8393</td>
     8394</tr>
     8395<tr>
     8396<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-use"></a>use</i></font></td>
     8397<td class="rule">:</td>
     8398<td class="rule">
     8399<font face="courier new, courier" COLOR="#FF0000">
     8400use
     8401</font>
     8402<font face="courier new, courier" COLOR="#770000"><i>
     8403project-name
     8404</i></font>
     8405[&nbsp;
     8406<font face="courier new, courier" COLOR="#770000"><i>
     8407<a href="#kwCMTProject-release-tag">release-tag</a>
     8408</i></font>
     8409[&nbsp;
     8410<font face="courier new, courier" COLOR="#770000"><i>
     8411access-path
     8412</i></font>
     8413&nbsp;]&nbsp;
     8414&nbsp;]&nbsp;
     8415</td>
     8416</tr>
     8417</table>
     8418</center>
     8419</blockquote>
     8420<hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>18.&nbsp;8</tt></a> - The complete requirements syntax</h3>
    80318421<blockquote>
    80328422  The syntax of specification statements that can be installed in a
     
    975810148</center>
    975910149</blockquote>
    9760 <hr><h3><a name="The default strategies defined in CMT"></a><a href="#index"><tt>18.&nbsp;8</tt></a> - The default strategies defined in CMT</h3>
     10150<hr><h3><a name="The default strategies defined in CMT"></a><a href="#index"><tt>18.&nbsp;9</tt></a> - The default strategies defined in CMT</h3>
    976110151<blockquote>
    976210152<pre class="cmt">
    9763   DefaultPrototypesStrategy = Prototypes,
    9764   DefaultInstallAreaStrategy = WithoutInstallArea</pre>
    9765 </blockquote>
    9766 <hr><h3><a name="The internal mechanism of cmt cvs operations"></a><a href="#index"><tt>18.&nbsp;9</tt></a> - The internal mechanism of cmt cvs operations</h3>
     10153  build_strategy prototypes | without_installarea
     10154  setup_strategy config | root </pre>
     10155</blockquote>
     10156<hr><h3><a name="The internal mechanism of cmt cvs operations"></a><a href="#index"><tt>18.10</tt></a> - The internal mechanism of cmt cvs operations</h3>
    976710157<blockquote>
    976810158  Generally, CVS does not handle queries upon the repository (such as
     
    981210202        built as follows:
    981310203<pre>
    9814 cvs -Q import -m cmt .cmtcvsinfos/&lt;<i>package-name</i>&gt; CMT v1 </pre>
     10204cvs -Q import -m cmt .cmtcvsinfos/&lt;protocol-level&gt;/&lt;<i>package-name</i>&gt; CMT v1 </pre>
    981510205      <p>Obviously this command is fake, since no file exist in the
    9816           temporary directory we have just created. However, </p>
    9817   </li>
    9818     <li>This action actually triggers the
     10206            temporary directory we have just created. The
     10207      <tt>protocol-level</tt>
     10208       referenced in this command is described
     10209            in the standard macro <tt>$(cmt_cvs_protocol_level)</tt>
     10210    .</p>
     10211  </li>
     10212    <li>This action actually triggers the CVS pluggin installed in the
     10213    <tt>loginfo</tt>
     10214     CVS metafile. A default pluggin is provided by
     10215        CMT implemented as a shell script,
    981910216    <tt>cmt_buildcvsinfos2.sh</tt>
    9820      script, which simply receives in
    9821           its argument the module name onto which we need
    9822           information. This information is obtained by scanning the files
    9823           into the repository, and an answer is built with the following
    9824           syntax:
     10217    , which simply receives in its
     10218          argument the module name onto which we need information. This
     10219          information is obtained by scanning the files into the
     10220          repository, and an answer is built with the following syntax:
    982510221<pre>
    982610222[error=<i>error-text</i>]            (1)
     
    983910235    </ol>
    984010236  </li>
     10237    <li>
     10238          Another version of this pluggin is also available as a C++
     10239          application. This application is available for download at the
     10240    <a href="http://www.cmtsite.org">CMT web site</a>
     10241    .
     10242  </li>
    984110243</ol>
    984210244</blockquote>
     
    1031510717<tr>
    1031610718<td width="100"><tt>18.&nbsp;7</tt></td>
     10719<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The complete project file syntax">The complete project file syntax</a></td>
     10720</tr>
     10721<tr>
     10722<td width="100"><tt>18.&nbsp;8</tt></td>
    1031710723<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The complete requirements syntax">The complete requirements syntax</a></td>
    1031810724</tr>
    1031910725<tr>
    10320 <td width="100"><tt>18.&nbsp;8</tt></td>
     10726<td width="100"><tt>18.&nbsp;9</tt></td>
    1032110727<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The default strategies defined in CMT">The default strategies defined in CMT</a></td>
    1032210728</tr>
    1032310729<tr>
    10324 <td width="100"><tt>18.&nbsp;9</tt></td>
     10730<td width="100"><tt>18.10</tt></td>
    1032510731<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The internal mechanism of cmt cvs operations">The internal mechanism of cmt cvs operations</a></td>
    1032610732</tr>
     
    1034110747</table>
    1034210748</blockquote>
    10343 </font>
    1034410749<address>
    1034510750<i>Christian Arnault</i>
  • CMT/HEAD/doc/CMTDoc.xml

    r46 r83  
    33  <!ENTITY nbsp "&nbsp;">
    44  <!ENTITY CMTrelease "18">
    5   <!ENTITY CMTVersion "v1r18p20050501">
     5  <!ENTITY CMTVersion "v1r18p20050901">
    66  <!ENTITY CMTvTag "CMTv1">
    77  <!ENTITY CMTrTag "CMTr18">
    8   <!ENTITY CMTpTag "CMTp20050501">
     8  <!ENTITY CMTpTag "CMTp20050901">
    99  <!ENTITY CMTrequirements "&nbsp;<a HREF='#The requirements file'>requirements</a>&nbsp;">
    1010]> 
     
    138138
    139139    <p>Following these definitions, the basic configuration management
    140     operations involved here (and serviced by the <tt>CMT</tt>' tools)
     140    operations involved here (and serviced by the <tt>CMT</tt> tools)
    141141    consist of :
    142142
     
    283283        <p>examples of such organization can be : </p>
    284284
    285         <cmt:image src="Images/PackageStructure.jpg" caption="Structuring a sofware base."/>
     285        <cmt:image src="Images/PackageStructure.jpg" caption="Structuring a sofware base."></cmt:image>
    286286
    287287      </li>
     
    465465    specifications:</p>
    466466
    467     <cmt:cmtcode>
     467    <cmt:code>
    468468project &lt;project-name&gt;          [1]
    469469<i>project-use specifications...</i>   [2]
    470 <i>strategy specifications...</i>      [3]
    471 </cmt:cmtcode>
     470<i>strategy specifications...</i>      [3]</cmt:code>
    472471
    473472    <ol>
     
    511510
    512511      <cmt:code>
    513 &gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;]</cmt:code>
     512&gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;]
     513&gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;] [-use=&lt;package&gt;:&lt;version&gt;:&lt;path&gt;]...</cmt:code>
    514514
    515515      <p>This will create the complete directory hierarchy from the
    516516      current directory (or, when it is specified from the optional
    517517      project path). It will also create a project file containing the
    518       project name.</p>
     518      project name, and optionnally will initialize it with some use
     519      statements.</p>
    519520
    520521      <blockquote><i>Note that the &lt;release&gt; argument may be
    521522      left empty (or to an empty string). In this case, the directory
    522       hierarchy will be limited to one level devoted to the project
     523      hierarchy will be limited to the single level of the project
    523524      name.</i></blockquote>
    524525
     
    534535&gt; cmt create_project ProjectB 1.0 /test</cmt:code>
    535536
    536       <p>And we fill <tt>CMTPATH</tt> with:</p>
     537      <p>And we manually fill <tt>CMTPATH</tt> with:</p>
    537538
    538539      <cmt:code>
    539540/test/WorkArea:/test/ProjectA/1.0:/test/ProjectB/1.0</cmt:code>
    540541
    541       <p>Then the following projects will appear displayed from bottom
    542       to top as</p>
     542      <p>Then, when standing in the <tt>WorkArea</tt> the following
     543      projects will appear displayed from bottom to top as</p>
    543544
    544545      <cmt:code>
     
    571572/test</cmt:code>
    572573
     574      <p>This complete sequence may also be shortened as follows:</p>
     575
     576      <cmt:code>
     577&gt; cmt create_project ProjectB 1.0 /test
     578&gt; cmt create_project ProjectA 1.0 /test -use=ProjectB:1.0
     579&gt; cmt create_project WorkArea "" /test -use=ProjectA:1.0</cmt:code>
     580
    573581    </cmt:section>
    574582
    575583    <cmt:section title="Projects and strategies">
    576584
    577       <p>Every strategy setting defines two mutually exclusive tags
    578       and activates one of them.</p>
     585      <p>Few behaviours of the configuration management process can be
     586      tailored with respect to CMT, via means of defining
     587      <i>strategies</i>. Then according to these strategies, CMT will
     588      behave in well defined ways.</p>
     589
     590      <p>Every strategy setting is a boolean value, instructing CMT to
     591      activate or not a given behaviour. As such it defines two
     592      mutually exclusive CMT <i>tags</i> and it activates one of
     593      them.</p>
    579594
    580595      <cmt:cmtcode>
     
    585600
    586601      <cmt:cmtcode>
    587 &lt;project&gt;_prototypes
    588 &lt;project&gt;_no_prototypes
    589602&lt;project&gt;_with_install_area
    590603&lt;project&gt;_without_install_area
     
    594607&lt;project&gt;_no_root
    595608&lt;project&gt;_cleanup
    596 &lt;project&gt;_no_cleanup</cmt:cmtcode>
    597 
    598       <p>In particular, the installation area mechanism is strongly
    599       connected with the project hierarchy. This happens through
    600       several mechanisms:</p>
     609&lt;project&gt;_no_cleanup
     610&lt;project&gt;_prototypes
     611&lt;project&gt;_no_prototypes</cmt:cmtcode>
     612
     613      <p>In the context of a hierarchy - <i>a graph</i> - of projects,
     614      strategies are transmitted along the graph, according to the use
     615      relationships specified between the projects. A project
     616      transmits its strategies to its clients except when one of them
     617      overrides those strategies.</p>
     618
     619      <p>Several mechanisms help defining project specific properties,
     620      and more specifically making use of the strategies:</p>
    601621
    602622      <ul>
     
    620640        <tt>&lt;project&gt;_installarea_prefix</tt> macro. The default
    621641        value of any <tt>&lt;project&gt;_installarea_prefix</tt> is
    622         <tt>${cmt_installarea_prefix}</tt> <p></p></li>
     642        <tt>${cmt_installarea_prefix}</tt> (which itself is a global
     643        macro that receives a default value from CMT )<p></p></li>
    623644
    624645      </ul>
     
    630651      <p>This is an environment variable containing a search list,
    631652      very similar to the well know Unix or Windows <tt>PATH</tt>
    632       environment variable, containing a list of file paths where CMT
    633       projects can be found. The syntax of this search list follows
    634       the standard syntax of search lists, i.e. items are separated
    635       using a <tt>:</tt> character on Unix and a <tt>;</tt> character
    636       on Windows.</p>
     653      environment variable. It specifies a list of file paths where
     654      CMT projects can be found. The syntax of this search list
     655      follows the standard syntax of search lists, i.e. items are
     656      separated using a <tt>:</tt> character on Unix and a <tt>;</tt>
     657      character on Windows.</p>
    637658
    638659      <p><blockquote><i>One should understand this search list as the
     
    695716                             /PB_B/...   </cmt:code>
    696717
     718      <p>In this example:</p>
     719
    697720      <ul>
    698721
    699         <li>there are two project areas, one for the main
    700         developments, and another one for managing external products</li>
     722        <li>there are two project areas, one for the main developments
     723        (<tt>/project-area1</tt>), and another one for managing
     724        external products (<tt>/project-area1</tt>)</li>
    701725
    702726        <li><tt>project-area1</tt> offers three sub-projects
     
    14441468
    14451469        <li>run time settings such as environment variable definitions
    1446         (PATH, LD_LIBRARY_PATH, etc..)</li>
     1470        (<tt>PATH</tt>, <tt>LD_LIBRARY_PATH</tt>, etc..)</li>
    14471471
    14481472        <li>data file access</li>
     
    36123636
    36133637            <cmt:cmtcode>
    3614 use &lt;package&gt; [ &lt;version&gt; [ &lt;offset&gt; ] ]</cmt:cmtcode>
     3638use &lt;package&gt; [ &lt;version&gt; [ &lt;offset&gt; ] ] [ -no_auto_imports=&lt;package&gt; ... ]</cmt:cmtcode>
    36153639
    36163640            <p>Omitting the version specification means that the most
     
    36273651            precedence over the standard search path list (see
    36283652            CMTPATH).</p>
     3653
     3654            <p>The additional <tt>-no_auto_imports</tt> options
     3655            suppress the automatic inheritance of some standard
     3656            parameters from the specified used packages, such as
     3657            include paths, compiler flags, ... </p>
    36293658
    36303659            <p> Examples of such relationships are :</p>
     
    41954224            <tt>include_dirs</tt> instead).</p>
    41964225
     4226            <blockquote><i>
     4227              <p>Note that this behaviour is expected to become
     4228              obsolete in some next release of CMT. The default
     4229              include search path of <tt>../src</tt> will then simply
     4230              disappear, and the <tt>include_path</tt> statement will
     4231              become meaningless. When this happens, include search
     4232              paths will always have to be explicitly specified using the
     4233              <tt>include_dirs</tt> statement. In order to anticipate
     4234              this evolution, it is suggested to always use
     4235              <tt>include_path none</tt> and add all include search
     4236              directories using the <tt>include_dirs</tt>
     4237              statement.</p>
     4238            </i></blockquote>
     4239
    41974240          </cmt:section>
    41984241
    41994242          <cmt:section title="include_dirs">
    42004243
    4201             <p>Add explicit specifications for include access paths.</p>
     4244            <p>Add explicit specifications for include access
     4245            paths. The value may be provided through a macro
     4246            reference.</p>
     4247
     4248            <p>The statement is sensitive to private scoping.</p>
    42024249
    42034250          </cmt:section>
     
    43684415
    43694416              <li>the declaration of patterns</li>
     4417
     4418              <li>the declaration of include search paths (via the
     4419              <tt>include_dirs</tt> statement)</li>
    43704420
    43714421            </ul>
     
    48364886                  found dependencies. </p>
    48374887
     4888                <p>CMT is able to recursively compute the dependencies
     4889                implied by the <tt>include</tt> statements found in
     4890                the source files. However it's also possible to make
     4891                plain use of the standard mechanisms provided by some
     4892                standard tools like <tt>cpp -M</tt>. In this case, it
     4893                will be required to <i>format</i> the output produced
     4894                by the selected tool so as to let CMT parse it and
     4895                properly deduce the dependencies. Formatting the
     4896                output of external tools may require to interface the
     4897                tool itself e.g. using a shell script.</p>
     4898
     4899                <p>The standard CMT macro
     4900                <tt>$(build_dependencies)</tt> must be used to specify
     4901                an alternate dependency builder. The default value is:</p>
     4902
     4903                <cmt:code>$(cmtexe) -quiet -tag=$(tags) build dependencies</cmt:code>
     4904
     4905                <p>The expected output format from any dependency builder is as follows:</p>
     4906
     4907                <ul>
     4908                  <li>Each file corresponds to one single dependency line in the output</li>
     4909                  <li>A dependency line should be formatted as follows:
     4910                    <cmt:code>&lt;file-name&gt;_&lt;file_suffix&gt;_dependencies = &lt;source&gt; &lt;file&gt; ... </cmt:code>
     4911                    <p>Where:</p>
     4912                    <ul>
     4913                      <li><tt>&lt;file-name&gt;</tt> is given without the file suffix</li>
     4914                      <li><tt>&lt;file_suffix&gt;</tt> is given without the dot</li>
     4915                      <li><tt>&lt;source&gt;</tt> is the path to the source file</li>
     4916                      <li>the list of <tt>&lt;file&gt;</tt> paths corresponds to the effective list of dependent files. This is a list of reative or absolute file paths.</li>
     4917                    </ul>
     4918                  </li>
     4919                </ul>
     4920
     4921
     4922                <p>A Unix shell script in
     4923                <tt>${CMTROOT}/mgr/cmt_build_deps.sh</tt> is offered
     4924                as an example of how to interface the standard <tt>cpp
     4925                -M</tt> command with CMT. It can be declared as a
     4926                substitute to the internal mechanism as follows:</p>
     4927
     4928                <cmt:code>macro build_dependencies "${CMTROOT}/mgr/cmt_build_deps.sh"</cmt:code>
     4929
     4930                <p>Of course this shell script should be considered as
     4931                an example and might have to be adapted for other
     4932                dependency builders, or for Windows.</p>
     4933
    48384934              </li>
    48394935
     
    62206316  <ol>
    62216317
    6222     <li><p></p>All mechanisms are customizable on a per-project basis,
    6223     so as to easily follow the project specific conventions</li>
    6224 
    6225     <li><p></p>However CMT proposes a minimal default behaviour based on the
     6318    <li>The installation area mechanism is activated on demand via a
     6319    dedicated strategy specification, that can be written either in a
     6320    requirements file or in a project file. By default the mechanism
     6321    is <i>not</i> active.<p></p></li>
     6322
     6323    <li>All mechanisms are customizable on a per-project basis,
     6324    so as to easily follow the project specific conventions<p></p></li>
     6325
     6326    <li>However CMT proposes a minimal default behaviour based on the
    62266327    concrete experience in large projects, as well as frequently met
    6227     practices</li>
    6228 
    6229     <li><p></p>A typical well supported convention is to map the set of
     6328    practices<p></p></li>
     6329
     6330    <li>A typical well supported convention is to map the set of
    62306331    installation areas onto the set of CMTPATH entries, associating the
    62316332    concept of CMTPATH splitting with the sub-project
    6232     organization</li>
    6233 
    6234     <li><p></p>A typical consequence of this approach is that many
     6333    organization<p></p></li>
     6334
     6335    <li>A typical consequence of this approach is that many
    62356336    configuration parameters need to be set according to the list of
    62366337    CMTPATH items. Eg on a Unix system, if one expects to find shared
     
    62386339    in a corresponding CMTPATH entry, one also expects to have
    62396340    LD_LIBRARY_PATH entries accordingly. The mechanism of
    6240     <tt>cmtpath_pattern</tt> is exactly designed for that.</li>
    6241 
    6242     <li><p></p>The mechanism easily supports the extension for installing
     6341    <tt>cmtpath_pattern</tt> is exactly designed for that.<p></p></li>
     6342
     6343    <li>The mechanism easily supports the extension for installing
    62436344    binary files (libraries, applications, java classes), runtime
    6244     files, documentation and header files.</li>
     6345    files, documentation and header files.<p></p></li>
    62456346       
    62466347  </ol>
     
    62546355      <li>
    62556356
    6256         <p></p>
    62576357        A set of <tt>cmtpath_pattern</tt>s defined in the CMT requirements
    62586358        file. This can be displayed using the command
     
    62616361&gt; cmt show cmtpath_patterns</cmt:code>
    62626362
     6363        <p></p>
    62636364      </li>
    62646365
    62656366      <li>
    62666367
     6368        A consistent set of actions added to the following make_fragments
     6369
     6370        <table>
     6371          <tr><td><tt>application</tt></td><td>applications</td></tr>
     6372          <tr><td><tt>library</tt></td><td>shared libraries</td></tr>
     6373          <tr><td><tt>library_no_share</tt></td><td>static libraries</td></tr>
     6374          <tr><td><tt>java_header</tt></td><td>Java applications</td></tr>
     6375          <tr><td><tt>jar</tt></td><td>Java libraries</td></tr>
     6376        </table>
     6377
    62676378        <p></p>
    6268         A consistent set of actions added to the following make_fragments
    6269 
    6270         <table>
    6271           <tr><td>application</td><td>applications</td></tr>
    6272           <tr><td>library</td><td>shared libraries</td></tr>
    6273           <tr><td>library_no_share</td><td>static libraries</td></tr>
    6274           <tr><td>java_header</td><td>Java applications</td></tr>
    6275           <tr><td>jar</td><td>Java libraries</td></tr>
    6276         </table>
    6277 
    62786379      </li>
    62796380
    62806381      <li>
    6281         <p></p>
    62826382        <p>One shell script for installing or uninstalling files or directories</p>
    62836383
     
    62886388${CMTROOT}/mgr/cmt_uninstall_action.bat</cmt:code>
    62896389
     6390        <p></p>
    62906391      </li>
     6392
     6393      <li>
    62916394
    62926395      <p>The default architecture of this installation scheme is by
     
    62946397
    62956398      <cmt:code>
    6296 &lt;path&gt;/InstallationArea/$(tag)/bin/...                [1]
    6297                        /$(tag)/lib/...                [2]
    6298                        /include/&lt;package&gt;/...         [3]
    6299                        /share/bin/...                 [4]
    6300                        /share/lib/...                 [5]
    6301                              /...                     [6]
    6302                        /doc/&lt;package&gt;/...             [7]
    6303                            /...                       [8]</cmt:code>
     6399&lt;path&gt;/$(&lt;project&gt;_installarea_prefix)/$(tag)/bin/...                [1]
     6400                                      /$(tag)/lib/...                [2]
     6401                                      /include/&lt;package&gt;/...         [3]
     6402                                      /share/bin/...                 [4]
     6403                                      /share/lib/...                 [5]
     6404                                            /...                     [6]
     6405                                      /doc/&lt;package&gt;/...             [7]
     6406                                          /...                       [8]</cmt:code>
    63046407
    63056408      <ol>
     
    63146417      </ol>
    63156418
     6419      <p>The <tt>&lt;project&gt;_installarea_prefix</tt> takes the
     6420      default value of <tt>$(cmt_installarea_prefix)</tt> for all
     6421      projects, which itself takes the default value of
     6422      <tt>InstallArea</tt>. Of course it can be overridden to other
     6423      values in each project</p>
     6424
     6425      </li>
     6426
    63166427    </ol>
    63176428
    6318     <p>The cmtpath_patterns are designed in this implementation for
    6319     constructing a proper and consistent sequence of system specific
    6320     environment variables (eg PATH, LD_LIBRARY_PATH, CLASSPATH) as
    6321     well as compiler or linker options so as to transparently refer to
    6322     the installation area only when it is appropriate to ovverride the
    6323     local patterns.</p>
     6429    <p>The <tt>cmtpath_patterns</tt> are designed in this
     6430    implementation for constructing a proper and consistent sequence
     6431    of system specific environment variables (eg <tt>PATH</tt>,
     6432    <tt>LD_LIBRARY_PATH</tt>, <tt>CLASSPATH</tt>) as well as compiler
     6433    or linker options so as to transparently refer to the installation
     6434    area only when it is appropriate to ovverride the local
     6435    patterns.</p>
    63246436
    63256437  </cmt:section>
     
    65296641          <UL>
    65306642
    6531             <li>HKEY_LOCAL_MACHINE/Software/CMT/root will contain the root
    6532               directory where <tt>CMT</tt> is installed (eg. "e:"). </li>
    6533 
    6534             <li>HKEY_LOCAL_MACHINE/Software/CMT/version will contain the
    6535               current version tag of <tt>CMT</tt> ("&CMTVersion;" for this version). </li>
    6536 
    6537             <li>HKEY_LOCAL_MACHINE/Software/CMT/path/ may optionally
    6538               contain a set of text values corresponding to the different
    6539               package global access paths. </li>
    6540 
    6541             <li>HKEY_LOCAL_MACHINE/Software/CMT/site will contain the
    6542               conventional site name. </li>
    6543 
    6544             <li>HKEY_CURRENT_USER/Software/CMT/path/ may contain a set of
    6545               text of text values corresponding to the different package
    6546               private access paths. </li>
    6547           </UL>
     6643            <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/root</tt> will
     6644            contain the root directory where <tt>CMT</tt> is installed
     6645            (eg. <tt>"e:"</tt>). </li>
     6646
     6647            <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/version</tt> will
     6648            contain the current version tag of <tt>CMT</tt>
     6649            (<tt>"&CMTVersion;"</tt> for this version). </li>
     6650
     6651            <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/path/</tt> may
     6652            optionally contain a set of text values corresponding to
     6653            the different package global access paths. </li>
     6654
     6655            <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/site</tt> will
     6656            contain the conventional site name. </li>
     6657
     6658            <li><tt>HKEY_CURRENT_USER/Software/CMT/path/</tt> may
     6659            contain a set of text of text values corresponding to the
     6660            different package private access paths. </li> </UL>
    65486661
    65496662          <p>CMT can also be configured to run on DOS-based environments
     
    72637376        <tr>
    72647377          <td width="200"><tt>&lt;<i>PACKAGE</i>&gt;ROOT</tt></td>
    7265           <td width="400">The access path of the package (including the version branch)</td>
     7378          <td width="400">The access path of the package (including
     7379          the version branch). This is controlled by the
     7380          <tt>setup_strategy [no_]root</tt> statement.</td>
    72667381        </tr>
    72677382        <tr>
     
    72767391        <tr>
    72777392          <td><tt>&lt;<i>PACKAGE</i>&gt;VERSION</tt></td>
    7278           <td>The used version of the package</td>
     7393          <td>The used version of the package.</td>
    72797394        </tr>
    72807395        <tr>
     
    77157830      </tr>
    77167831      <tr>
    7717         <td>ADDINCLUDE</td>
     7832        <td><tt>ADDINCLUDE</tt></td>
    77187833        <td>additional include path</td>
    77197834        <td>&lt;<i>language</i>&gt; java</td>
    77207835      </tr>
    77217836      <tr>
    7722         <td>CONSTITUENT</td>
     7837        <td><tt>CONSTITUENT</tt></td>
    77237838        <td>name of the constituent</td>
    77247839        <td>&lt;<i>language</i>&gt; java jar make_header jar_header java_header library_header application_header protos_header library_no_share library application dependencies cleanup_header cleanup_library cleanup_application check_application document_header &lt;document&gt; trailer dsw_all_project_dependency dsw_project dsp_library_header dsp_shared_library_header dsp_windows_header dsp_application_header dsp_trailer constituent check_application_header</td>
    77257840      </tr>
    77267841      <tr>
    7727         <td>DATE</td>
     7842        <td><tt>DATE</tt></td>
    77287843        <td>now</td>
    77297844        <td>make_header</td>
    77307845      </tr>
    77317846      <tr>
    7732         <td>FILENAME</td>
     7847        <td><tt>FILENAME</tt></td>
    77337848        <td>file name without path</td>
    77347849        <td>buildproto &lt;<i>language</i>&gt; &lt;<i>document</i>&gt;</td>
    77357850      </tr>
    77367851      <tr>
    7737         <td>FILEPATH</td>
     7852        <td><tt>FILEPATH</tt></td>
    77387853        <td>file path</td>
    77397854        <td>buildproto &lt;<i>language</i>&gt; &lt;<i>document</i>&gt;</td>
    77407855      </tr>
    77417856      <tr>
    7742         <td>FILESUFFIX</td>
     7857        <td><tt>FILESUFFIX</tt></td>
    77437858        <td>file suffix (without dot)</td>
    77447859        <td>&lt;<i>language</i>&gt;</td>
    77457860      </tr>
    77467861      <tr>
    7747         <td>FILESUFFIX</td>
     7862        <td><tt>FILESUFFIX</tt></td>
    77487863        <td>file suffix (with dot)</td>
    77497864        <td>&lt;<i>document</i>&gt;</td>
    77507865      </tr>
    77517866      <tr>
    7752         <td>FULLNAME</td>
     7867        <td><tt>FULLNAME</tt></td>
    77537868        <td>complete file path and name</td>
    77547869        <td>&lt;<i>language</i>&gt; cleanup &lt;<i>document</i>&gt; dsp_contents</td>
    77557870      </tr>
    77567871      <tr>
    7757         <td>GROUP</td>
     7872        <td><tt>GROUP</tt></td>
    77587873        <td>group name</td>
    77597874        <td>constituents_header</td>
    77607875      </tr>
    77617876      <tr>
    7762         <td>LINE</td>
     7877        <td><tt>LINE</tt></td>
    77637878        <td>source files</td>
    77647879        <td>&lt;<i>language</i>&gt; dependencies constituent</td>
    77657880      </tr>
    77667881      <tr>
    7767         <td>LINKMACRO</td>
     7882        <td><tt>LINKMACRO</tt></td>
    77687883        <td>link macro</td>
    77697884        <td>application</td>
    77707885      </tr>
    77717886      <tr>
    7772         <td>NAME</td>
     7887        <td><tt>NAME</tt></td>
    77737888        <td>file name without path and suffix</td>
    77747889        <td>buildproto &lt;<i>language</i>&gt; java &lt;<i>document</i>&gt;</td>
    77757890      </tr>
    77767891      <tr>
    7777         <td>OBJS</td>
     7892        <td><tt>OBJS</tt></td>
    77787893        <td>object files</td>
    77797894        <td>jar_header java_header jar library_no_share library application cleanup_java document_header trailer</td>
    77807895      </tr>
    77817896      <tr>
    7782         <td>OUTPUTNAME</td>
     7897        <td><tt>OUTPUTNAME</tt></td>
    77837898        <td>output file name</td>
    77847899        <td>java</td>
    77857900      </tr>
    77867901      <tr>
    7787         <td>PACKAGE</td>
     7902        <td><tt>PACKAGE</tt></td>
    77887903        <td>current package name</td>
    77897904        <td>&lt;<i>language</i>&gt; dsw_header dsw_all_project dsw_all_project_trailer dsw_trailer dsp_all readme_header readme readme_use readme_trailer</td>
    77907905      </tr>
    77917906      <tr>
    7792         <td>PACKAGEPATH</td>
     7907        <td><tt>PACKAGEPATH</tt></td>
    77937908        <td>current package location</td>
    77947909        <td>readme_use</td>
    77957910      </tr>
    77967911      <tr>
    7797         <td>PROTOSTAMPS</td>
     7912        <td><tt>PROTOSTAMPS</tt></td>
    77987913        <td>prototype stamp files</td>
    77997914        <td>protos_header</td>
    78007915      </tr>
    78017916      <tr>
    7802         <td>PROTOTARGET</td>
     7917        <td><tt>PROTOTARGET</tt></td>
    78037918        <td>prototype target name</td>
    78047919        <td>library_header application_header</td>
    78057920      </tr>
    78067921      <tr>
    7807         <td>SUFFIX</td>
     7922        <td><tt>SUFFIX</tt></td>
    78087923        <td>document suffix</td>
    78097924        <td>&lt;<i>document</i>&gt;</td>
    78107925      </tr>
    78117926      <tr>
    7812         <td>TITLE</td>
     7927        <td><tt>TITLE</tt></td>
    78137928        <td>title for make header</td>
    78147929        <td>make_header</td>
    78157930      </tr>
    78167931      <tr>
    7817         <td>USER</td>
     7932        <td><tt>USER</tt></td>
    78187933        <td>user name</td>
    78197934        <td>make_header</td>
    78207935      </tr>
    78217936      <tr>
    7822         <td>VERSION</td>
     7937        <td><tt>VERSION</tt></td>
    78237938        <td>current package version tag</td>
    78247939        <td>readme_header readme readme_use</td>
     
    79378052
    79388053</cmt:section>
     8054
     8055<cmt:section title="The complete project file syntax">
     8056
     8057  The syntax of specification statements that can be installed in a
     8058  <tt>project.cmt</tt> file are :
     8059
     8060<cmt:syntax rule-width="220" name="CMTProject">
     8061  <cmt:rule name="cmt-statement">
     8062    <cmt:alt><cmt:ruleref name="build_strategy"/></cmt:alt>
     8063    <cmt:alt><cmt:ruleref name="container"/></cmt:alt>
     8064    <cmt:alt><cmt:ruleref name="project"/></cmt:alt>
     8065    <cmt:alt><cmt:ruleref name="setup_strategy"/></cmt:alt>
     8066    <cmt:alt><cmt:ruleref name="use"/></cmt:alt>
     8067  </cmt:rule>
     8068  <cmt:rule name="build_strategy">
     8069    <cmt:alt>
     8070      <cmt:kwd/>
     8071      <cmt:term name="build-strategy-name"/>
     8072    </cmt:alt>
     8073  </cmt:rule>
     8074  <cmt:rule name="build-strategy-name">
     8075    <cmt:alt><cmt:kwd name="prototypes"/></cmt:alt>
     8076    <cmt:alt><cmt:kwd name="no_prototypes"/></cmt:alt>
     8077    <cmt:alt><cmt:kwd name="with_installarea"/></cmt:alt>
     8078    <cmt:alt><cmt:kwd name="without_installarea"/></cmt:alt>
     8079  </cmt:rule>
     8080  <cmt:rule name="container">
     8081    <cmt:alt>
     8082      <cmt:kwd/> <cmt:term name="container-name"/>
     8083      <cmt:option>
     8084        <cmt:ruleref name="version-tag"/>
     8085        <cmt:option>
     8086          <cmt:term name="access-path"/>
     8087        </cmt:option>
     8088      </cmt:option>
     8089    </cmt:alt>
     8090  </cmt:rule>
     8091  <cmt:rule name="project">
     8092    <cmt:alt>
     8093      <cmt:kwd/>
     8094      <cmt:term name="project-name"/>
     8095    </cmt:alt>
     8096  </cmt:rule>
     8097  <cmt:rule name="setup_strategy">
     8098    <cmt:alt>
     8099      <cmt:kwd/>
     8100      <cmt:term name="setup-strategy-name"/>
     8101    </cmt:alt>
     8102  </cmt:rule>
     8103  <cmt:rule name="setup-strategy-name">
     8104    <cmt:alt><cmt:kwd name="config"/></cmt:alt>
     8105    <cmt:alt><cmt:kwd name="no_config"/></cmt:alt>
     8106    <cmt:alt><cmt:kwd name="root"/></cmt:alt>
     8107    <cmt:alt><cmt:kwd name="no_root"/></cmt:alt>
     8108    <cmt:alt><cmt:kwd name="cleanup"/></cmt:alt>
     8109    <cmt:alt><cmt:kwd name="no_cleanup"/></cmt:alt>
     8110  </cmt:rule>
     8111  <cmt:rule name="use">
     8112    <cmt:alt>
     8113      <cmt:kwd/> <cmt:term name="project-name"/>
     8114      <cmt:option>
     8115        <cmt:ruleref name="release-tag"/>
     8116        <cmt:option>
     8117          <cmt:term name="access-path"/>
     8118        </cmt:option>
     8119      </cmt:option>
     8120    </cmt:alt>
     8121  </cmt:rule>
     8122</cmt:syntax>
     8123
     8124</cmt:section>
    79398125
    79408126<cmt:section title="The complete requirements syntax">
     
    84978683
    84988684  <cmt:cmtcode>
    8499   DefaultPrototypesStrategy = Prototypes,
    8500   DefaultInstallAreaStrategy = WithoutInstallArea</cmt:cmtcode>
     8685  build_strategy prototypes | without_installarea
     8686  setup_strategy config | root </cmt:cmtcode>
    85018687
    85028688</cmt:section>
     
    85498735
    85508736      <cmt:code>
    8551 cvs -Q import -m cmt .cmtcvsinfos/&lt;<i>package-name</i>&gt; CMT v1 </cmt:code>
     8737cvs -Q import -m cmt .cmtcvsinfos/&lt;protocol-level&gt;/&lt;<i>package-name</i>&gt; CMT v1 </cmt:code>
    85528738
    85538739      <p>Obviously this command is fake, since no file exist in the
    8554       temporary directory we have just created. However, </p>
     8740      temporary directory we have just created. The
     8741      <tt>protocol-level</tt> referenced in this command is described
     8742      in the standard macro <tt>$(cmt_cvs_protocol_level)</tt>.</p>
    85558743
    85568744    </li>
    85578745
    8558     <li>This action actually triggers the
    8559 
    8560       <tt>cmt_buildcvsinfos2.sh</tt> script, which simply receives in
    8561       its argument the module name onto which we need
    8562       information. This information is obtained by scanning the files
    8563       into the repository, and an answer is built with the following
    8564       syntax:
     8746    <li>This action actually triggers the CVS pluggin installed in the
     8747    <tt>loginfo</tt> CVS metafile. A default pluggin is provided by
     8748    CMT implemented as a shell script,
     8749
     8750      <tt>cmt_buildcvsinfos2.sh</tt>, which simply receives in its
     8751      argument the module name onto which we need information. This
     8752      information is obtained by scanning the files into the
     8753      repository, and an answer is built with the following syntax:
    85658754
    85668755      <cmt:code>
     
    85868775      </ol>
    85878776    </li>
     8777
     8778    <li>
     8779      Another version of this pluggin is also available as a C++
     8780      application. This application is available for download at the
     8781      <a href="http://www.cmtsite.org">CMT web site</a>.
     8782    </li>
    85888783  </ol>
    85898784
  • CMT/HEAD/doc/ReleaseNotes.html

    r46 r83  
    4848
    4949      <li>
     50        <b>v1r18p20050901</b>
     51
     52        <ul>
     53
     54          <!--
     55          <li class="new"></li>
     56          <li class="bug"></li>
     57          <li class="int"></li>
     58          -->
     59
     60          <li class="new">Support dependency building using external
     61          tools such as cpp -M. Fix the cmt_build_des.sh wrapper
     62          script to properly format the command output.</li>
     63
     64          <li class="new">Perform the cmt checkout onto a project even
     65          if the basic directory structure of the project is already
     66          in place.</li>
     67
     68          <li class="new">When no current project is defined the
     69          strategies are taken from the top project (eg obtained from
     70          the CMTPATH)</li>
     71
     72          <li class="new">The include_dirs statement can now be hidden
     73          in a private section.</li>
     74
     75          <li class="new">The include_dirs statement now accepts a
     76          macro reference as its value</li>
     77
     78
     79
     80          <li class="bug">Fix incorrect generation of XXXROOT and
     81          XXXCONFIG environment variables according to strategies</li>
     82
     83          <li class="bug">Protect against missing un/install targets</li>
     84
     85          <li class="bug">Fix a typo in cmt_uninstall_action.bat
     86          resulting in bad management of make cleanup on Windows</li>
     87
     88          <li class="bug">When creating a parent-less project, link it
     89          to exisiting top project(s) and upgrade strategies
     90          accordingly. Avoid confusions when mixing explicit CMTPATH,
     91          CMTPROJECTPATH and project files </li>
     92
     93          <li class="bug">Don't apply include_dirs when their expanded
     94          value is empty (avoid killing -I"")</li>
     95
     96          <li class="bug">Reset CMTPATH to empty when filling in
     97          CMTPATH from projects (avoid confusions and
     98          dupplications)</li>
     99
     100          <li class="bug">Fix a bug in dependency builder that missed
     101          some statements after a single line C++ comment</li>
     102
     103          <li class="bug">Cleanup unneeded duplicate path
     104          separators</li>
     105
     106          <li class="bug">Fix a bug in standard macro generation for
     107          projects</li>
     108
     109        </ul>
     110
     111      </li>
     112
     113      <li>
    50114        <b>v1r18p20050501</b>
    51115
  • CMT/HEAD/doc/gendoc.py

    r42 r83  
    171171    print '<head>'
    172172    print ' <style type="text/css">'
    173     print '   tt {color:#006600; font-weight: normal; %background-color: #eeffee}'
    174     print '   tt.cmt {color:#00AA00; font-weight: normal; %background-color: #eeeeee}'
     173    print '   body {font-face: Arial, Helvetica, Comic Sans MS, Times; color: #000000}'
     174    ##print '   tt {color:#006600; font-weight: normal; background-color: #eeffee}'
     175    print '   tt {color:#00AA00; font-weight: normal; background-color: #eeeeee}'
    175176    print '   pre {color:#FF0000; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4}'
    176177    print '   pre.cmt {font-family: courier; color:#00AA00; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4}'
     
    185186    print '<body bgcolor="#ffffff" link="#550088" alink="#007777" alink="#007777">'
    186187    ##print '<font face="Arial, Helvetica" color="#000000">'
    187     print '<font face="Arial, Helvetica, Comic Sans MS, Times" color="#000000">'
     188    ##print '<font face="Arial, Helvetica, Comic Sans MS, Times" color="#000000">'
    188189    print '<h1><center>' + self.name + '</center>'
    189190    print '<center>' + self.title + '</center></h1>'
     
    213214    print '</table>'
    214215    print '</blockquote>'
    215     print '</font>'
     216    ##print '</font>'
    216217    print '<address>'
    217218    print '<i>' + self.author + '</i>'
  • CMT/HEAD/mgr/cmt.nmake

    r82 r83  
    33#  Application cmt
    44#
    5 #   Generated Thu Sep 01 15:10:41 2005  by carnault
     5#   Generated Mon Sep 05 12:44:26 2005  by ARNAULT
    66#
    77#====================================
  • CMT/HEAD/mgr/requirements

    r45 r83  
    680680               <project>_with_installarea&Unix "<path>/$(<project>_installarea_prefix)/${tag}/bin" ; \
    681681  path_prepend PATH "" \
    682                <project>_with_installarea&WIN32 "<path>/$(<project>_installarea_prefix)/${tag}/lib" ; \
     682               <project>_with_installarea&WIN32 "<path>/$(<project>_installarea_prefix)/${tag}/lib" \
     683               <project>_with_installarea&CYGWIN "<path>/$(<project>_installarea_prefix)/${tag}/lib" ; \
    683684  path_prepend LD_LIBRARY_PATH "" \
    684685               <project>_with_installarea&Unix "<path>/$(<project>_installarea_prefix)/${tag}/lib" ; \
  • CMT/HEAD/source/cmt_commands.cxx

    r42 r83  
    18981898{
    18991899  cmt.m_current_structuring_style = with_version_directory;
     1900
     1901  StrategyDef* def = StrategyMgr::find_strategy ("VersionDirectory");
     1902  if (def != 0)
     1903    {
     1904      def->m_default_value = true;
     1905      def->m_priority_value = false;
     1906    }
    19001907}
    19011908
     
    19031910{
    19041911  cmt.m_current_structuring_style = without_version_directory;
     1912
     1913  StrategyDef* def = StrategyMgr::find_strategy ("VersionDirectory");
     1914  if (def != 0)
     1915    {
     1916      def->m_default_value = false;
     1917      def->m_priority_value = true;
     1918    }
    19051919}
    19061920
  • CMT/HEAD/source/cmt_cvs.cxx

    r78 r83  
    912912  }
    913913
     914  bool do_need_version ()
     915  {
     916    bool need_version = false;
     917
     918    if (structure_info == "project")
     919      {
     920        need_version = true;
     921      }
     922    else
     923      {
     924        CmtStructuringStyle style = Cmt::get_current_structuring_style ();
     925
     926        if (style == default_structuring_style)
     927          {
     928            Use& current_use = Use::current ();
     929            if (current_use.get_strategy ("version_directory"))
     930              {
     931                need_version = true;
     932              }
     933          }
     934        else if (style == with_version_directory)
     935          {
     936            need_version = true;
     937          }
     938      }
     939
     940    return (need_version);
     941  }
     942
    914943  /**
    915944     Take care of structuring style for packages and of project vs package conventions
     
    933962    dir += CmtSystem::file_separator ();
    934963    dir += product;
    935    
    936     if ((structure_info == "project") || (Cmt::get_current_structuring_style () == with_version_directory))
     964
     965    if (do_need_version ())
    937966      {
    938967        dir += CmtSystem::file_separator ();
     
    11861215        command += version;
    11871216      }
    1188    
    1189     if (Cmt::get_current_structuring_style () == with_version_directory)
     1217
     1218    bool need_version = do_need_version ();
     1219
     1220    if (need_version)
    11901221      {
    11911222        command += " -d ";
     
    12071238    execute_and_retry (command, "Error getting package CMT contents");
    12081239
    1209     if (Cmt::get_current_structuring_style () == with_version_directory)
     1240    if (need_version)
    12101241      {
    12111242        if (!mkdir (version)) return (false);
     
    13161347    cout << echo_ppath << " in " << dir << endl;
    13171348
    1318     if ((structure_info == "project") || (Cmt::get_current_structuring_style () == with_version_directory))
     1349    if (do_need_version ())
    13191350      {
    13201351        // Move back to the product name.
     
    17131744            CmtSystem::cd ("cmt");
    17141745           
    1715             if (Cmt::get_current_structuring_style () == without_version_directory)
     1746            if (do_need_version ())
    17161747              {
    17171748                cmt_string text = version;
  • CMT/HEAD/source/cmt_parser.cxx

    r81 r83  
    8585  m_current_access = UserMode;
    8686  m_current_style = cmt_style;
    87   m_current_structuring_style = with_version_directory;
     87  m_current_structuring_style = default_structuring_style;
    8888  m_all_sets_done = false;
    8989  m_autoconfigure_cmtpath = false;
     
    22842284  CmtSystem::cd (package);
    22852285
    2286   if (Me.m_current_structuring_style == with_version_directory)
     2286  Use& current_use = Use::current ();
     2287
     2288  bool with_version_dir = current_use.get_strategy ("VersionDirectory");
     2289
     2290  CmtStructuringStyle style = get_current_structuring_style ();
     2291
     2292  if (style != default_structuring_style)
     2293    {
     2294      if (with_version_dir)
     2295        {
     2296          if (style == without_version_directory)
     2297            {
     2298              with_version_dir = false;
     2299            }
     2300        }
     2301      else
     2302        {
     2303          if (style == with_version_directory)
     2304            {
     2305              with_version_dir = true;
     2306            }
     2307        }
     2308    }
     2309
     2310  if (with_version_dir)
    22872311    {
    22882312      if (!CmtSystem::test_directory (version))
     
    23212345          else
    23222346            {
    2323               if (Me.m_current_structuring_style == with_version_directory)
     2347              if (with_version_dir)
    23242348                {
    23252349                  Me.m_current_style = cmt_style;
     
    23352359      else
    23362360        {
    2337           if (Me.m_current_structuring_style == with_version_directory)
     2361          if (with_version_dir)
    23382362            {
    23392363              Me.m_current_style = mgr_style;
     
    23492373  else
    23502374    {
    2351       if (Me.m_current_structuring_style == with_version_directory)
     2375      if (with_version_dir)
    23522376        {
    23532377          Me.m_current_style = cmt_style;
     
    24032427    }
    24042428
    2405   if (Me.m_current_structuring_style == without_version_directory)
     2429  if (!with_version_dir)
    24062430    {
    24072431      ofstream f ("version.cmt");
     
    36313655  */
    36323656
    3633   cout << "Structuring style : ";
    3634 
    3635   switch (Me.m_current_structuring_style)
    3636     {
    3637     case without_version_directory:
    3638       cout << "without_version_directory";
    3639       break;
    3640     case with_version_directory:
    3641       cout << "with_version_directory";
    3642       break;
    3643     }
    3644 
    3645   cout << endl;
    3646 
    3647   cout << "Build strategy    : ";
     3657  cout << "Build strategy     : ";
    36483658
    36493659  if (current_use.get_strategy ("BuildPrototypes"))
     
    36673677  cout << endl;
    36683678
    3669   cout << "Setup strategy    : ";
     3679  cout << "Setup strategy     : ";
    36703680 
    36713681  if (current_use.get_strategy ("SetupConfig"))
     
    36953705      cout << " no_cleanup";
    36963706    }
     3707
     3708  cout << endl;
     3709 
     3710  cout << "Structure strategy : ";
     3711 
     3712  if (current_use.get_strategy ("VersionDirectory"))
     3713    {
     3714      cout << "with_version_directory";
     3715    }
     3716  else
     3717    {
     3718      cout << "without_version_directory";
     3719    }
    36973720 
    36983721  cout << endl;
     3722
     3723  if (Me.m_current_structuring_style != default_structuring_style)
     3724    {
     3725      cout << "Structuring style  : ";
     3726
     3727      switch (Me.m_current_structuring_style)
     3728        {
     3729        case without_version_directory:
     3730          cout << "without_version_directory";
     3731          break;
     3732        case with_version_directory:
     3733          cout << "with_version_directory";
     3734          break;
     3735        }
     3736
     3737      cout << endl;
     3738    }
    36993739}
    37003740
  • CMT/HEAD/source/cmt_parser.h

    r42 r83  
    3030typedef enum
    3131{
     32  default_structuring_style,
    3233  with_version_directory,
    3334  without_version_directory
     
    9192  CommandSetupScript,
    9293  CommandSetupStrategy,
     94  CommandStructureStrategy,
    9395  CommandTag,
    9496  CommandTagExclude,
     
    187189  DefaultSetupStrategy = SetupConfig | SetupRoot | SetupCleanup
    188190} SetupStrategy;
     191
     192typedef enum
     193{
     194  WithVersionDirectory = 0x1,
     195  WithoutVersionDirectory   = WithVersionDirectory << 1,
     196  DefaultVersionDirectoryStrategy = WithVersionDirectory,
     197  VersionDirectoryMask = WithVersionDirectory | WithoutVersionDirectory,
     198
     199  StructureStrategyMask  = VersionDirectoryMask,
     200
     201  DefaultStructureStrategy = DefaultVersionDirectoryStrategy
     202} StructureStrategy;
    189203
    190204typedef enum
  • CMT/HEAD/source/cmt_project.cxx

    r79 r83  
    13781378  set_default_strategy ("BuildPrototypes");
    13791379  set_default_strategy ("InstallArea");
     1380  set_default_strategy ("VersionDirectory");
    13801381}
    13811382
     
    19711972
    19721973  m_defs.push_back (s);
     1974
     1975  s = new StrategyDef;
     1976  s->m_keyword = "structure";
     1977  s->m_name = "VersionDirectory";
     1978  s->m_on_value = "with_version_directory";
     1979  s->m_off_value = "without_version_directory";
     1980  if (Cmt::get_current_structuring_style () == with_version_directory)
     1981    {
     1982      s->m_default_value = true;
     1983      s->m_priority_value = false;
     1984    }
     1985  else
     1986    {
     1987      s->m_default_value = false;
     1988      s->m_priority_value = true;
     1989    }
     1990
     1991  m_defs.push_back (s);
    19731992}
    19741993
  • CMT/HEAD/source/cmt_syntax.cxx

    r41 r83  
    743743      {
    744744        strategy = "SetupCleanup";
     745      }
     746    else
     747      {
     748        result = false;
     749      }
     750
     751    return (result);
     752  }
     753
     754  void action (const CmtSystem::cmt_string_vector& words,
     755               Use* use,
     756               const cmt_string& file_name,
     757               int line_number)
     758  {
     759    cmt_string cmtpath;
     760    cmt_string offset;
     761
     762    use->get_cmtpath_and_offset (cmtpath, offset);
     763
     764    Project* p = Project::find_by_cmtpath (cmtpath);
     765
     766    for (int i = 1; i < words.size (); i++)
     767      {
     768        const cmt_string& w = words[i];
     769
     770        cmt_string strategy;
     771        cmt_string value;
     772
     773        bool in_error = false;
     774
     775        if (decode (w, strategy, value))
     776          {
     777            if (p != 0) p->set_strategy (strategy, value, use->get_package_name ());
     778          }
     779        else
     780          {
     781            in_error = true;
     782
     783            CmtError::set (CmtError::syntax_error, "ParseRequirements> bad strategy keyword");
     784          }
     785      }
     786  }
     787
     788  void action (const CmtSystem::cmt_string_vector& words,
     789               Project* project,
     790               const cmt_string& file_name,
     791               int line_number)
     792  {
     793    for (int i = 1; i < words.size (); i++)
     794      {
     795        const cmt_string& w = words[i];
     796
     797        cmt_string strategy;
     798        cmt_string value;
     799
     800        bool in_error = false;
     801
     802        if (decode (w, strategy, value))
     803          {
     804            if (project != 0) project->set_strategy (strategy, value, "");
     805          }
     806        else
     807          {
     808            in_error = true;
     809
     810            CmtError::set (CmtError::syntax_error, "ParseRequirements> bad strategy keyword");
     811          }
     812      }
     813  }
     814};
     815
     816class KwdStructureStrategy : public Kwd
     817{
     818public:
     819  bool decode (const cmt_string& w, cmt_string& strategy, cmt_string& value)
     820  {
     821    bool result = true;
     822
     823    value = w;
     824
     825    if (w == "with_version_directory")
     826      {
     827        strategy = "VersionDirectory";
     828      }
     829    else if (w == "without_version_directory")
     830      {
     831        strategy = "VersionDirectory";
    745832      }
    746833    else
     
    10771164  m_keywords.add ("setup_script", new KwdSetupScript ());
    10781165  m_keywords.add ("setup_strategy", new KwdSetupStrategy ());
     1166  m_keywords.add ("structure_strategy", new KwdStructureStrategy ());
    10791167  m_keywords.add ("tag", new KwdTag ());
    10801168  m_keywords.add ("tag_exclude", new KwdTagExclude ());
     
    10871175  m_project_keywords.add ("project", new KwdProject ());
    10881176  m_project_keywords.add ("setup_strategy", new KwdSetupStrategy ());
     1177  m_project_keywords.add ("structure_strategy", new KwdStructureStrategy ());
    10891178  m_project_keywords.add ("use", new KwdUse ());
    10901179}
  • CMT/HEAD/source/cmt_version.h

    r78 r83  
    88#define __cmt_version_h__
    99
    10 //#define CMTVERSION "v1r18p20050501"
    11 #define CMTVERSION "HEAD"
     10#define CMTVERSION "v1r18p20050901"
     11//#define CMTVERSION "HEAD"
    1212
    1313#endif
Note: See TracChangeset for help on using the changeset viewer.