2006-18-10 Vincent Garonne <garonne@lal.in2p3.fr> 317

    *  cmt_commands.*, cmt_parser.cxx, cmt.h: Add the -disable_warnings option to not print certains warnings, e.g. the CMTSITE value etc.
    
2006-12-10 Vincent Garonne <garonne@lal.in2p3.fr> 316

    * source/cmt_parser.cxx, source/cmt_syntax.cxx, source/cmt_use.*: Enable and propagate the -native_version syntax at the use level. 
     IMPORTANT NOTES: STILL NOT FINISHED.
     
2006-12-10 Vincent Garonne <garonne@lal.in2p3.fr> 315

    * source/cmt_std.h: add __APPLE__ for removing compilation warnings    

2006-11-10 Vincent Garonne <garonne@lal.in2p3.fr> 314

    * source/cmt_project.*: Add two functions - get_project_releases, select_release    
    * source/cmt_project.*: Add support for wildcarded project dependencies

2006-10-10 Vincent Garonne <garonne@lal.in2p3.fr> 313

    * source/cmt_symbol.*, source/cmt_parser.*, source/cmt_commands.*, source/cmt_syntax.*, source/cmt.h: Add support for the show project author command
    * src/setup.*: Add auto-expand for project_author
 
2006-09-28 Vincent Garonne <garonne@lal.in2p3.fr> 312

	* source/cmt_symbol.cxx: Bug fixed on the windows platform.  

2006-08-17 Vincent Garonne <garonne@lal.in2p3.fr> 311

        * source/cmt_syntax.cxx: Add support for author syntax to project

2006-06-15 Vincent Garonne <garonne@lal.in2p3.fr> 310

        * source/cmt_system.cxx: Correct touch function to conserve permission 

2006-06-15 Vincent Garonne <garonne@lal.in2p3.fr> 309

        * mgr/fragments/application, mgr/fragments/c_library, mgr/fragments/cleanup_librarymgr/fragments/cpp, mgr/fragments/cpp_library, mgr/fragments/dependencies, mgr/fragments/fortran_library, mgr/fragments/library: Add the support for the PRINT_PREREQISITES mode during the make operation

	* mgr/fragments/library: Fixed a bug

2006-05-31 Vincent Garonne <garonne@lal.in2p3.fr> 308

        * source/cmt_cvs: Add modification to deal with non working checkout by creating the cvs files manually ,e.g. cvs entries.
        * source/cmt_cvs: Add the "-f" option which supposes to force cvs to ignore the .cvsrc file during cvs command execution. 

2006-05-20  Christian Arnault  <arnault@lal.in2p3.fr> 307

	* source/cmt_pattern.cxx (expand): Make use of
	use->get_cmtpath_and_offset to compute the project of the package
	when expanding the <project> template to fix packages with offset

2006-04-25 Vincent Garonne <garonne@lal.in2p3.fr> 306

        * cmt_generator.cxx: Add the fixe recommend by markus to deal with extern c data on visual

2006-04-25 Vincent Garonne <garonne@lal.in2p3.fr> 305

        * mgr/fragments/cleanup_header, mgr/fragments/constituent: Add a PEDANTIC option for building which stop 
        directly after detecting a missing file or target 
        
        * mgr/fragments/constituent, mgr/fragments/constituents_header, mgr/fragments/cleanup_header, 
        mgr/fragments/make_header : correct some bad behaviours and change the internal file name convention
        *setup* -> *_setup* 

2006-04-25 Vincent Garonne <garonne@lal.in2p3.fr> 304

        * source/cmt_parser.cxx: Remove only the specific makefiles depending on the platform, e.g. remove *.make 
        on linux and *.nmake on windows

2006-04-25 Vincent Garonne <garonne@lal.in2p3.fr> 303

        * source/cmt_commands.cxx, source/cmt_commands.h, source/cmt_parser.cxx, source/cmt_parser.h: Add a new cmt          
        command "relocate" to generate only setup script whithout makefile

        * src/setup.tcsh : Enable the auto-expand mechanism for the relocate command

2006-04-25 Vincent Garonne <garonne@lal.in2p3.fr> 302

        * source/cmt_cvs.cxx: Do the exact mathing for tag during recursive checkout operation

2006-04-24   Christian Arnault  <arnault@lal.in2p3.fr> 301

        * source/cmt_pattern.cxx(expand): Add support for a <project> template in patterns

2006-14-03   Christian Arnault  <arnault@lal.in2p3.fr> 300

	* source/cmt_cvs.cxx: Switch checkout sequence from multi-co to multi update

2006-03-01  Vincent Garonne <garonne@lal.in2p3.fr> 299

	* mgr/requirements: Enable tag v1r18 for the HEAD version 

2006-02-24  Christian Arnault  <arnault@lal.in2p3.fr> 298

	* mgr/requirements: Suppress automatic installation of share/bin & share/lib in CLASSPATH for with_installarea

	* source/cmt_project.cxx (create_project): Suppress a warning message

	* source/cmt_commands.cxx (do_check): Suppress automatic warnings for do_check_configuration
	(do_setup): idem for cmt setup

2006-02-10  Vincent Garonne <garonne@lal.in2p3.fr> 297

        * mgr/requirements: Fill <project>_installarea_linkopts in addition to cmt_installarea_linkopts

2006-02-09  Christian Arnault  <arnault@lal.in2p3.fr> 296

        * mgr/requirements: Fill <project>_installarea_linkopts in addition to cmt_installarea_linkopts

2006-02-07  Christian Arnault  <arnault@lal.in2p3.fr> 295

	* mgr/requirements: Protect cmtpath_patterns with strategies
	use $(CMTCONFIG) instead of $(tag) in cmtpath_patterns

	* source/cmt_parser.cxx (configure_cmt_path): Suppress warnings for bad paths at this stage
	(do_check_configuration): Add set_standard_macros for do_check_configuration

	* source/cmt_commands.cxx (do_check): Activate warnings for check configuration and for setup 

	* source/cmt_symbol.cxx (filter_path_value): Don't kill path item when they don't exist.
	(action): Reset all_sets_done at each symbol definition.
	(all_set): Protect against internal recursivity
	(all_print): Print path settings here.
	(check_all_paths): Add a new function to check all paths.
	(SetBuilder::build): suppress detetion of overridings from here (move to SymbolValueList::show)
	(PathBuilder::build): suppress detetion of overridings from here (move to SymbolValueList::show)
	(MacroBuilder::build): suppress detetion of overridings from here (move to SymbolValueList::show)
	(ActionBuilder::build): suppress detetion of overridings from here (move to SymbolValueList::show)
	(SymbolValueList::show): Keep reset to null actions
	Print overridings

	* source/cmt_system.cxx: Add include cmt_map.h for putenv management
	(class CMTPathManager): Suppress generation of an error when the CMTPATH item does not exist 

2006-02-06  Christian Arnault  <arnault@lal.in2p3.fr> 294

	* source/cmt_cvs.cxx (class CvsImplementation): Uses the new CmtSystem::putenv API

	* source/cmt_symbol.cxx (all_set): Uses the new CmtSystem::putenv API to fix setup problems 

	* source/cmt_system.h (class CmtSystem): Modifying the API of the internal putenv function 

	* source/cmt_system.cxx (putenv): Replacing the old putenv implementation with a new one using a static map
	of all used environment variables so as to ensure a stable string

2006-01-31    <arnault@lal.in2p3.fr> 293

	* source/cmt_parser.cxx (configure_cmt_path): Force a warning when CMTPATH contains a non existing item.

	* source/cmt_awk.cxx (scan_path): Restore commented debug printouts after fix.

	* source/cmt_parser.cxx (run): Fix the parsing of requirements file for do_show_clients for use statements without version.

	* source/cmt_awk.cxx (scan_path): Detect the non-version-directory mode and launches the run with appropriate flag.

	* source/cmt_awk.h (class PathScanner): Add an argument to mark that the scanned package
	uses no version directory.

	* mgr/requirements: Removed obsolete pp_cflags for Linux (ticket #15)

2006-01-27 <garonne@lal.in2p3.fr>

	* source/cmt_parser.cxx: Allow with_version_directory option for users.

2006-01-09    <arnault@lal.in2p3.fr> 292

	* source/cmt_project.cxx (create_project): Access CMTPROJECTPATH through 
	symbol or getenv

	* source/cmt_symbol.cxx (get_env_value): Make use of the global 
	display inhibitor to ensure that temporary value builder will not
	show unexpected output.

	* source/cmt_symbol.h (class Symbol): Define a special accessor function for
	retrieving the value a symbols associated with an env. var. (typically
	for CMTPATH like variables)

	* source/cmt_symbol.cxx (action): Trigger the Cmt::configure_cmt_path 
	from CMTPROJECTPATH like CMTPATH

2005-10-31  Christian Arnault  <arnault@lal.in2p3.fr> 291

	* source/cmt_system.cxx (is_version_directory): Permit version
	directories not starting by a letter (eg 1.0)

2005-10-30    <arnault@lal.in2p3.fr> 290

	* source/cmt_symbol.cxx (all_set): Must expand PATH values before
	filtering and setting them

2005-10-28    <arnault@lal.in2p3.fr> 289

	* cmt/fragments/cleanup_header: Temporary hack to deal with missing files
	and to avoid infinite loops in make. However, this must be seen as a ugly hack
	since it considers an Atlas use case with config.h.in. This hack is 
	harmless to any user of this special file though.

	* source/cmt.h
	* source/cmt_parser.cxx
	* source/cmt_commands.h
	* source/cmt_commands.cxx
	* doc/CMTDoc.xml: Add a -warnings option to display various warning messages
 
2005-10-18    <arnault@lal.in2p3.fr> 288

	* mgr/Makefile (bintar): Prepare and cleanup binary directories
	before creating tar balls.

	* mgr/Makefile (Export): Move the docs target from bintar to Export

	* source/cmt_symbol.cxx (print): Filter path values before
	setting them externally

	* source/cmt_symbol.cxx (all_set): Filter path values before
	setting them internally

	* source/cmt_parser.cxx (configure_cmt_path): Filter out CMTPATH
	before creating or updating projects from the CMTPATH value

	* source/cmt_symbol.h (class Symbol): Add a static function to
	filter out faulty items in a PATH symbol

2005-10-17    <arnault@lal.in2p3.fr> 287

	* mgr/Makefile (cmtexe): Use -quiet option whenever using cmt
	within the Makefile of CMT

	* source/cmt_cvs.cxx (class CvsImplementation): Protect against
	empty protocol level (for backward compatibility)

2005-10-15    <arnault@lal.in2p3.fr> 286

	* source/cmt_project.cxx (use_action): Consider empty release for
	Windows (test_directory on Windows does not work with a trailing
	backslash)

2005-10-11  Christian Arnault  <arnault@lal.in2p3.fr> 285

	* source/cmt_project.cxx (create_project): Protection against
	single level directories in CMTPATH (/xxx)

2005-10-11    <arnault@lal.in2p3.fr> 284

	* mgr/fragments/nmake/constituent (clean): Protect against
	unexisting makefile fragment when running the clean target

	* source/cmt_parser.cxx (class StandardMacroBuilder): Enclose
	items in the use_requirements macro into double quotes using the q
	macro. This to cope with spaces in directories on Windows.
	(dos_script_prefix): Add quotes for the -path argument 

	* mgr/requirements: Add a macro definition to hold a double-quote

2005-09-13    <arnault@lal.in2p3.fr> 283

	* mgr/CMT.pacman: Add constraint on version of pacman
	Use ./INSTALL instead of just INSTALL

2005-09-29  Christian Arnault  <arnault@lal.in2p3.fr> 283

	* mgr/fragments/nmake/constituents_trailer (makefilesclean): Remove references to checkuses
	* mgr/fragments/constituents_header (config): Remove references to checkuses
	* mgr/fragments/constituents_trailer (makefilesclean): Remove references to checkuses
	* mgr/fragments/make_header (dirs): Remove references to checkuses
	* mgr/fragments/make_setup (config): Remove references to checkuses

	* source/cmt_parser.cxx (do_broadcast): bug fix: the set_standard_macro was not called 
	prior to set all EVs before the broadcast loop

2005-09-09    <arnault@lal.in2p3.fr> 282

	* mgr/Makefile: Adapt (fix) to changes in the doc directory.

2005-09-07    <arnault@lal.in2p3.fr> 281

	* source/cmt_version.h: fix tag v1r18p20050901

        * source/cmt_cvs.h: Fix bug when generating version.cmt file after checkout

2005-09-05    <arnault@lal.in2p3.fr> 280

	* source/cmt_std.h: Fix std context for CYGWIN

2005-09-05  Christian Arnault  <arnault@lal.in2p3.fr> 279

	* source/cmt_cvs.cxx (class CvsImplementation): Fix do_need_version

	* source/cmt_project.cxx (StrategyMgr): Initialize VersionStrategy using default

2005-09-05    <arnault@lal.in2p3.fr> 278

	* source\cmt_parser.cxx (do_create): Make use of the
	structure strategy for creating package directory structure.

	* source\cmt_cvs.cxx (class CvsImplementation): Make use of the
	structure strategy for creating package directory structure.

	* source\cmt_parser.cxx (do_show_strategies): Display the structure strategy

	* source\cmt_syntax.cxx (class KwdStructureStrategy): Create the
	parsing function for Structure strategies

	* source\cmt_parser.h (enum CmtStructuringStyle): By default the
	structuring style is initialized with default_structuring_style
	instead of with_version_directory in order to remember whether the
	default has been overridden using EV or command option.

	* source\cmt_project.cxx (configure): Initialize the VersionDirectory strategy
	(StrategyMgr): Create the VersionDirectory strategy entry.

	* source\cmt_parser.h (enum): Add a StructureStrategy to define with/out version directory.

2005-09-05  Christian Arnault  <arnault@lal.in2p3.fr> 277

	* mgr/cmt_buildcvsinfos2.sh (module): Adapt to the new syntax by adding the protocol level.

	* source/cmt_include.cxx (action): Submit include_dirs statement to private scoping

2005-09-01  Christian Arnault  <arnault@lal.in2p3.fr> 276

	* source/cmt_use.cxx (get_strategy): Implement the get_strategy function

	* source/cmt_use.h (class Use): Install the get_strategy function as a member function.

	* source/cmt_symbol.cxx (all_set): Generate all XXXROOT and XXXCONFIG evs according
	to the strategies.

	* source/cmt_parser.cxx (get_strategy): Make the use argument of the function a required argument
	ie suppress the default arg to Use::current ()
	Prepare to migrate this function as a member function of Use

2005-08-31  Christian Arnault  <arnault@lal.in2p3.fr> 275

	* source/cmt.h (class Cmt): Making the get_strategy function a member function 
	rather than a private local one

	* mgr/fragments/constituent (uninstall): Protect against missing un/install targets
	* mgr/fragments/nmake/constituent (uninstall): Protect against missing un/install targets

	* mgr/fragments/cmt_action_runner_header: Add install and uninstall dummy target
	* mgr/fragments/nmake/cmt_action_runner_header: Add install and uninstall dummy target

	* mgr/cmt_uninstall_action.bat: [Fix] typo

	* source/cmt_project.cxx (create_project): When create a parent-less project, link it to 
	previous top project(s) and upgrade strategies
	(class VisitorForFillCMTPATH): [Fix] Should not add the path separator

	* source/cmt_project.h (class Project): Add a function to ask if a project has parents

	* source/cmt_include.cxx (parse): When expanding include, the use must be trasmitted to new includes

2005-08-30  Christian Arnault  <arnault@lal.in2p3.fr> 275

	* source/cmt_parser.cxx (class StandardMacroBuilder): Parse all includes for Current use

	* source/cmt_include.cxx: Do the parse_all operation in the context of one Use.

	* source/cmt_include.h (class Include): Do the parse_all operation in the context of one Use.

	* source/cmt_project.cxx (create): Return a boolean status to show success of the creation

	* source/cmt_project.h (class Project): create function returns a boolean that
	describes if the creation was successful. In case of success the current directory
	is in the cmt directory of the project. 

	* source/cmt_system.cxx (scan_dir): Fix a bug

	* source/cmt_deps_builder.cxx (build_deps_text): Fix state change when in single line comment

2005-08-19  Christian Arnault  <arnault@lal.in2p3.fr> 274

	* source/cmt_use.cxx (fill_includes_macro): skip include_dirs entries with empty name

	* source/cmt_project.cxx (show_all): Use the top project when current is not defined
	(start_visit): idem
	(class VisitorForFillCMTPATH): Initialize CMTPATH to empty when filling in CMTPATH for all projects

	* source/cmt_cvs.cxx (class CvsImplementation): Add the get_module function to compute the CVS module
	from the requested package/offset
	(class CvsImplementation): Add a check_structure to verify various structures before doing the checkout
	(class CvsImplementation): Ask for the checkout when the directory structure is in place but 
	when the CMT structure is NOT in place. Useful for mounting disks before the checkout.

	* source/cmt_parser.cxx (class StandardMacroBuilder): Apply the post-processing of include_dirs statements.
	(get_strategy): Get the top project to compute a strategy when the current project is not defined
	in order to avoid losing all strategies for standalone packages.

	* source/cmt_include.h (class Include): Suppress print_all and print_filters obsolete functions
	* source/cmt_include.cxx: Suppress print_all and print_filters obsolete functions
	(parse): Add a post-processing step to expand include_dirs statements at set_standard_macros stage

	* source/cmt_deps_builder.cxx (build_deps_text): Fix and Change the way source files are parsed 
	for computing dependencies. Fill a cmt_string at once and traverse the string without any additional 
	copy.

2005-07-21  Christian Arnault  <arnault@lal.in2p3.fr> 274

	* source/cmt_symbol.cxx (build): Clean up unneeded path separators

2005-07-19  Christian Arnault  <arnault@lal.in2p3.fr> 274

	* source/cmt_symbol.cxx (build): Suppress old test in CommandPathRemoveRegexp

2005-05-09  Christian Arnault  <arnault@lal.in2p3.fr> 273

	* source/cmt_use.cxx (fill_standard_macros): Fix a bug in setting
	the project macros (missing CR)

2005-05-02  Christian Arnault  <arnault@lal.in2p3.fr> 272

	* source/cmt_version.h: Prepare v1r18p20050501

	* source/cmt_cvs.cxx: Adding CMTPATH internal management
	Improve broadcast operation after recursive checkouts

2005-05-01  Christian Arnault  <arnault@lal.in2p3.fr> 272

	* mgr/Makefile (pacman): Create the pacman file for that version.

	* mgr/CMT.pacman: Migrate to Pacman3

	* source/cmt_cvs.cxx: Supporting project checkout
	recursive project checkouts
	without_version_directory mode
	container statements in project files.
	alias version directory
	Various cleanup and restructuring operations

	* mgr/requirements: Adapt for shared libs on CYGWIN (thanks to Guy Barrand)

	* src/setup.zsh: Add cmt subprojects command

	* src/setup.tcsh: Add cmt subprojects command

2005-04-26  Christian Arnault  <arnault@lal.in2p3.fr> 271

	* source/cmt_cvs.cxx: Add recursive passes for cvs co -R on projects (not completed)
	Add support/checking of protocol level against CVS pluggin
	Detection of non-installation of the CVS pluggin

	* mgr/requirements: Add a macro cmt_cvs_protocol_level to specify
	the expected protocol level with the CVS pluggin

2005-04-25    <arnault@lal.in2p3.fr> 270

	* source/cmt_cvs.cxx (class CvsImplementation): Accept empty
	argument for queries on subprojects

	* source/cmt_cvs.cxx (class CvsImplementation): Accept empty
	argument for queries on subpackages

	* source/cmt_cvs.cxx (class CvsImplementation): Selection for
	getting the mudule contents is done using the structure
	information.

	* source/cmt_cvs.cxx (class CvsImplementation): Isolate specific
	behaviour into dedicated functions for getting the specific
	contents for packages or for projects.

	* source/cmt_cvs.cxx (class CvsImplementation): Retrieve fields
	for structure and subprojects from the CVS pluggin.

	* source/cmt_cvs.cxx (class CvsImplementation): Manage the
	protocol level related with the version of the CVS pluggin.

	* source/cmt_cvs.cxx (class CvsImplementation): Suppress all dots
	from the tmpdir due to problems on Windows

	* source/cmt_cvs.cxx (class CvsImplementation): Add support for
	struture_info and subprojects coming from the new CVS pluggin

	* source/cmt_parser.cxx (do_cvssubprojects): Handle the
	cvssubprojects command
	(parser): Commands related with CVS should at least read the
	requirements file of CMT

	* source/cmt_parser.h (enum): Add cvssubprojects action

	* source/cmt_commands.cxx (CommandHelp): Add help for
	cvssubprojects command

	* source/cmt_commands.cxx (do_cvssubprojects): Accept empty
	argument to query for subprojects at top of the repository

	* source/cmt_commands.cxx (do_cvssubpackages): Accept empty
	argument to query for subpackages at top of the repository

	* source/cmt_commands.cxx (ArgParser): Manage cvssubprojects command.

	* source/cmt_commands.h (class ArgParser): Add cvssubprojects command

	* source/cmt_use.cxx (fill_standard_macros): Production of a new
	standard macro for obtaining the project releases

	* source/cmt_cvs.h (class Cvs): Add the subprojects function to
	query CVS about the existing subprojects of a given module.

2005-04-23  Christian Arnault  <arnault@lal.in2p3.fr> 269

	* source/cmt_project.h (class Project): container and
	container_version access methods

	* source/cmt_project.cxx (container_action): Implementation of the
	container statement

	* source/cmt_project.h (class Project): Add handling of the container statement

	* source/cmt_syntax.cxx (class KwdContainer): Add support of the
	project container package
	(SyntaxParser): idem

2005-04-21  Christian Arnault  <arnault@lal.in2p3.fr> 268

	* source/cmt_project.cxx (create_project): Check pwd for finding
	projects.

	* source/cmt_symbol.cxx (find_path_entry): Look for existing PATH
	entries by comparing the real path rather than the logical
	path. Use pwd everywhere (or CmtSystem::compress_path when the
	path is not exactly found)
	

2005-04-14  Christian Arnault  <arnault@lal.in2p3.fr> 267

	* source/cmt_system.cxx (class CMTPathManager): CMTUSERCONTEXT and
	CMTHOME environments give a specific name to the associated
	project.

	* source/cmt_project.cxx (create_project): Fixing the project
	naming scheme. Project name specified in the project files take
	precedence over the names found in the path.

2005-04-13  Christian Arnault  <arnault@lal.in2p3.fr> 266

	* source/cmt_commands.cxx (do_cvstags, do_cvssubpackages): Fix arg counting.

2005-04-12  Christian Arnault  <arnault@lal.in2p3.fr> 265

	* source/cmt_project.cxx (create_project): Restructure the
	algorithm for detection of project structuring cases. Construct a
	finite list of cases.
	(has_parent): Implement recursive query function
	(has_child): Implement recursive query function
	(add_parent, add_child): Use the recursive detection to avoid cycles.

	* source/cmt_project.h (class Project): Add has_parent and
	has_child functions to protect against recursive cycles

2005-04-02  Christian Arnault  <arnault@lal.in2p3.fr> 264

        * source/cmt_version.h (CMTVERSION): Prepare for v1r18p20050401

	* mgr/requirements: use ln -fs for cmt_installarea_command

2005-03-31  Christian Arnault  <arnault@lal.in2p3.fr> 263

	* doc/ReleaseNotes: prepare release notes
	
	* source/cmt_project.cxx (create_project): Fix settings of the project name.

2005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 262

	* mgr/NMake (demo): Adapt to the new syntax of cmt create_project

	* source/cmt_project.cxx (create_project): Suppress several warnings

2005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 261

	* doc/table.html: Install link to the Trac bug reporting system.  

2005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 261

	* source/cmt_project.cxx (create): The create function now creates
	the complete directory hierarchy for the project including the
	release level(s). Can accept a path.
	(create_project): Don't assume a release level.

	* source/cmt_project.h (class Project): The create function now
	accepts a release and a path argument

	* source/cmt_commands.cxx (show): Suppress debug printouts
	* source/cmt_parser.cxx (do_help): Suppress debug printouts

	* source/cmt_system.cxx (is_version_directory): Accept HEAD/head as a valid version directory.

2005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 260

	* doc/CMTDoc.xml: work on the doc (unfinished)

	* source/cmt_project.cxx (use_action): The name specification of a
	project use statement is used to create the project.
 
	* source/cmt_project.cxx (create_project): Implement the algo to
	construct or discover the real project name and release from the
	context. The new algo supports release specifications as a
	multi-level directory definition.

	* source/cmt_project.cxx (get_release_from_path): Function to
	retreive the release sub-string from a path, given the project
	name.

	* source/cmt_project.h (class ProjectFactory): Add the project
	name as first argument to the create_project function.

	* source/cmt_system.cxx (class CMTPathManager): when specified
	from a CMTPATH item, the project creation has to guess the project
	name.

	* mgr/Makefile (gendoc): Suppress the | output modifier

2005-03-16  Christian Arnault  <arnault@lal.in2p3.fr> 259

	* mgr/fragments/dependencies: We need to reconsider all sources to
	recompute all dependencies that may have changed due to
	configuration changes. Thus the -all_sources is added

2005-03-15  Christian Arnault  <arnault@lal.in2p3.fr> 258

	* source/cmt_parser.cxx (clear): Add m_autoconfigure_cmtpath
	variable to discard autoconfiguration of CMTPATH during initial
	phases of the configuration.
	
	(guess_current_project): Once the current project is known, the
	CMTPATH is re-generated from the effective knowledge of the
	project graph.

	(do_setup): Add a check of the configuration when doing cmt setup

	(do_check_configuration): analyze the tags coming from arguments
	or from CMTSITE to detect mistypings. This is done by checking the
	effective usage of those tags.

	(configure_cmt_path): Analyze CMTPATH from either the symbol value
	or from the EV, before asking the project factory to create the
	projects from it.

	(get_strategy): Add a generic local function to query the strategy elements.

	* source/cmt_project.cxx (add): Manage conflicts between project
	release requests on a strict basis (no wild card - exact match
	only)

	* source/cmt_project.h (class ProjectFactory): No longer need m_first and m_previous

	* source/cmt_project.cxx (create_project): Implement a graph of projects.
	(create_project): Interpret the first top level directory as the project release
	
	(create_project): Interpret the second top level directory as the
	project name when it's not defined in the project file. So we
	don't create a dummy project name anymore Project<n>.

	* source/cmt_commands.cxx (ArgParser): Suppress obsolete +path option
	(parse): Initialize the m_action value to none to fix a bad management of unknown commands
	(do_filter): Implement the cmt filter command

	* source/cmt_error.cxx (class Error): Add unknown_command and
	project_release_conflict errors

	* source/cmt_syntax.cxx (class KwdBuildStrategy): Apply the
	restructuration of strategy management to strategy decoding

	(class KwdSetupStrategy): idem
	(class KwdUse): Support the use statement for project files
	(SyntaxParser): Support the use statement for project files

	* source/cmt_project.h (class StrategyDef): Create a class to hold
	the definition of all strategy elements	
	(class Strategy): Create a class to hold the application of a strategy into a project
	(class StrategyMgr): Create a singleton to manage the strategy definitions
	(class ProjectFactory): Add parent argument to create_project to handle the project graph
	(class IProjectVisitor): Create a class to visit the project graph
	(class Project): Transport all definitions related with strategies into Strategy objects

	* source/cmt_system.cxx (class CMTPathManager): Add a class to
	interact with the ProjectFactory to convert CMTPATH specifications
	into projects

	(get_cmt_paths): Suppress the setting from $CMTPATH. This is
	replaced by a selective understanding of the source of CMTPATH
	either from the symbol (when defined in a requirements file) or
	from the EV. This selection is performed in
	Cmt::configure_cmt_path.

	(get_cmt_paths): Suppress the definition of a CMTPATH entry for CMT itself

2005-03-10    <arnault@lal.in2p3.fr> 257

	* mgr/NMake (demo): Add project file to the demo context.

2005-03-04  Christian Arnault  <arnault@lal.in2p3.fr> 256

	* source/cmt_project.cxx: Ongoing work for redefining Project graphs. 

2005-03-03  Christian Arnault  <arnault@lal.in2p3.fr> 255

	* source/cmt_project.cxx (add): Manage project release conflicts.

	* source/cmt_error.h (class CmtError): Add project_release_conflict error
	* source/cmt_error.cxx (class Error): Add project_release_conflict error

	* source/cmt_project.h (class Project): Introduce the management
	of release information in projects

	* source/cmt_parser.cxx (do_check_configuration): Finally suppress the checking of CMTCONFIG 
	(do_setup): Add do_check_configuration to check some tag settings.

2005-03-02  Christian Arnault  <arnault@lal.in2p3.fr> 254

	* source/cmt_symbol.h (class Symbol): Add an optional argument to build_macro_value to switch display mode

	* source/cmt_symbol.cxx (show_macro): Improve the display mode so as to display only once the macro construction steps

	* source/cmt_parser.cxx (guess_current_project): Regenerate CMTPATH from the effective set of subprojects.

	* source/cmt_commands.cxx (parse): Handle unexpected arguments

	* source/cmt_error.cxx (class Error): Added unknown_command error
	* source/cmt_error.h (class CmtError): Added unknown_command error

	* source/cmt_commands.cxx (do_filter): Missing implementation for the filter command

2005-03-01  Christian Arnault  <arnault@lal.in2p3.fr> 254

	* source/cmt_tag.cxx (use_operand): Add way of checking internal structure of a tag
	* source/cmt_tag.cxx (use_ref): Add way of checking internal structure of a tag
	* source/cmt_tag.h (class Tag): Add way of checking internal structure of a tag
	* source/cmt_symbol.h (class Symbol): Add way of checking if a tag is used by symbols.
	* source/cmt_symbol.cxx (print): Suppress the "export" action after defining an alias in Sh mode
	* source/cmt_project.cxx: Introduce use_action 
	* source/cmt_syntax.cxx (SyntaxParser): Add support to use statements in project files
	* source/cmt_project.cxx (create_project): Add comments

2005-02-14  Christian Arnault  <arnault@lal.in2p3.fr> 253

	* src/Makefile.header (common_target): mktemp refuses to create
	subdirectory when TMPDIR specifies something different than /tmp
	that does not exist yet.

2005-02-07  Christian Arnault  <arnault@lal.in2p3.fr> 252

	* source/cmt_system.cxx (scan_dir): Fix a bug that killed the cmt
	show packages command in some cases

2005-02-03    <arnault@lal.in2p3.fr> 251

	* source/cmt_commands.cxx (do_cvstags): fix arg counting
	* source/cmt_commands.cxx (do_cvssubpackages): fix arg counting

2004-12-14    <arnault@lal.in2p3.fr> 250

	* source/cmt_parser.cxx (class StandardMacroBuilder): Fix a bug
	that caused a premature exit from the scan of constituents.

2004-12-13    <arnault@lal.in2p3.fr> 249

	* source/cmt_constituent.cxx (parse): Add a specific behaviour for
	documents generated for actions so as to keep the action_value
	definition unparsed.

2004-12-03 <arnault@lal.in2p3.fr> 248

	* mgr/fragments/nmake/library: apply patches from Pere about installing pdb files for Debug mode

2004-12-01    <arnault@lal.in2p3.fr> 247

	* source/cmt_version.h (CMTVERSION): Prepare for tagging v1r18p20041201

	* source/cmt.h (class Cmt): Fix typo

2004-12-01  Christian Arnault  <arnault@lal.in2p3.fr> 246

	* mgr/cmt_uninstall_action.sh: Better management of directory removal

2004-12-01  Christian Arnault  <arnault@lal.in2p3.fr> 246

	* mgr/fragments/application (install): 
	* mgr/fragments/library (install): 
	* mgr/fragments/library_no_share (install): 
	* mgr/fragments/install_includes_header (install): 
	* mgr/fragments/jar (install): 
	* mgr/fragments/java_header (install): Remove the connection
	between uninstall and clean targets. So now when gmake clean is
	run no uinstallation occurs in the installation area.

2004-11-11    <arnault@lal.in2p3.fr> 245

	* source/cmt_parser.h: 
	* source/cmt_project.cxx: 
	* source/cmt_project.h: 
	* source/cmt_syntax.cxx: 
	* source/cmt_parser.cxx: 
	* doc/CMTDoc.xml: Suppress obsolete (and useless) makefile strategy

	* source/cmt_parser.cxx (print_context): the setup strategy is
	really used to generate the ROOT and CONFIG env. vars.

	* source/cmt_parser.cxx (get_setup_strategy): Get the setup
	strategy for each use so as to really build ROOT or CONFIG
	according to the real project of the use

2004-11-09    <arnault@lal.in2p3.fr> 244

	* source/cmt_version.h: Preparing version tag for v1r18
	
	* mgr/requirements:
	* source/cmt_parser.h:
	* source/cmt_projects.cxx: Change default build strategy to without_installarea

2004-11-08    <arnault@lal.in2p3.fr> 243

	* mgr/Makefile (docs): Do some cleanup

	* source/cmt_parser.cxx (do_build_library_links): make use of the
	new library_install_command macro

	* mgr/requirements: Create a new macro library_install_command for
	defining how to actually install libraries through the
	<package>_libraries macro.

2004-11-02  Christian Arnault  <arnault@lal.in2p3.fr> 242

	* source/cmt_commands.cxx (option_tag): When resetting tags one
	need to also call again guess_current_project
	
	(option_tag): In fact on can simply reset all active tags, and
	regenerate activations rather than clearing all tags.

	* source/cmt_parser.cxx (guess_current_project): Fix a typo

	* source/cmt_tag.cxx (get_default): Make the tag Default a static
	object to avoid killing it.


2004-11-01    <arnault@lal.in2p3.fr> 241

	* source/cmt_parser.cxx (guess_current_project): Implement the
	detection of the current project

	* source/cmt_parser.cxx (configure): Add the detection of the
	current project through a project file above the current directory

2004-10-30  Christian Arnault  <arnault@lal.in2p3.fr> 240

	* source/cmt_parser.cxx (class StandardMacroBuilder): Apply the
	cmtpath_patterns before setting up the installarea parameters so
	as to let the patterns really define the
	<project>_installarea_prefix for instance.
	
	(set_standard_macros): Remove this first setting of installarea
	because it's better done only once.

	* mgr/fragments/constituent: Remove a debug message

	* mgr/requirements: Prepare for new tag v1r18

	* mgr/cmt_uninstall_action.sh: 
	* mgr/cmt_install_action.sh: Late fixes

2004-10-29    <arnault@lal.in2p3.fr> 239

	* source/cmt_parser.cxx (set_standard_macros): Restructure the
	StandardMacroBuilder to provide all steps.  Move upward the
	fill_for_install_area to make all cmtpath_patterns applied before
	manging other macros. This caused the include_dirs installed in a
	cmtpath_pattern useless.

	* source/cmt_list.h (class cmt_list): few fixes for CYGWIN

	* mgr/requirements: CYGWIN tag implies Linux

	* mgr/fragments/install_includes_header (uninstall): 
	* mgr/fragments/java_header (install): 
	* mgr/fragments/jar (install): 
	* mgr/fragments/library_no_share (install): 
	* mgr/fragments/library (install): 
	* mgr/fragments/application (install): 
	* mgr/cmt_install_action.sh: 
	* mgr/cmt_uninstall_action.sh: Improve the argument passing scheme
	to make it more flexible. Add an argument to get cmtpath, to check
	it against pwd. However this should never occur since cmt itself
	is supposed to never generate CMTNSTALLAREA when this is not
	appropriate.

	* source/cmt_install_area.cxx (setup_current_installarea): Consider <project>_installarea_prefix

	* source/cmt_system.cxx (compress_path): Fix a bug: when detecting
	the aaa/bbb/../ccc pattern, "bbb" cannot be ".." nor "." nor
	contain a macro reference.

2004-10-25    <arnault@lal.in2p3.fr> 238

	* source/cmt_parser.cxx (do_run): Force the settings of EVs
	before launching the run action

	* source/cmt_parser.cxx (do_broadcast): Force the settings of EVs
	before launching the bro action

	* source/cmt_commands.cxx (do_run): The run command now transmits all arguments

	* source/cmt_list.h: Prepare a list class for future use. This be
	used to handle the constituent order mechanisms.

	* mgr/Makefile: 
	* mgr/NMake (post_build): Add a post_build step to re-generate the
	cmt_dependencies.[n]make file (one version in mgr without the
	stamps and one version in $(bin) with them)
	
	* source/cmt_generators.h (class DependencyGenerator): 
	* source/cmt_generators.cxx (build): Add an option -no_stamps to
	buid dependencies so as to generate a version of the dependency
	files without the extra stamps specifications and with no stamp
	file generation. This is need to generate the bootstrap dependency
	file for cmt itself.

	* source/cmt_generators.cxx: 
	* source/cmt_generators.h (class DependencyGenerator): 
	* source/cmt_generator.h (class CmtGenerator): Revisit the construction of dependencies files:
	The dependencies file is split as one file fragment per dependency line (ie per file)
	This dep fragment is installed into $(bin)/<constituent>/*.stamp
	a dep to this stamp file is installed in the dependency line
	the stamps file is only touched when it changes
	All this to ensure that recompilations are done when anythin in th configuration is changed

	* source/cmt_map.h (cmt_vmap): Introduce cmt_vmap to construct
	maps of objects by value

	* source/cmt.h (class Cmt): Restart of set settings can be
	manually triggered. Typically to ensure that they are really set
	just before launching an action

	* mgr/cmt_make_shlib_common.sh (temp_shlib): Suppress the
	automatic construction of bundles on Darwin

	* source/cmt_system.cxx (add_cmt_path): Adding protections of
	validity of CMTPATH entries

	* source/cmt.h:
	* source/cmt_parser.h:
	* source/cmt_parser.cxx:
	* source/cmt_command.h:
	* source/cmt_command.cxx: Introducing classes for command line parsing
	All decoding of the cmt command line arguments are transfered there.
	The decoding is also rationalized.
	actions can be seen as cmt command extensions
	better preparing of EVs before running actions
	prepare the Makefile default file before running actions
	improve the generic management of options
	* cmt.h: Introduction of the CmtContext class to hold global state variables
	for Cmt. The Cmt class now only contains static functions.

	* src/source: Major restructuring of the directories:
	All real sources of cmt now go to ../source
	../src only contains stuff that need to be exported
	../fragments is transfered to mgr/fragments.

	* doc/gendoc.py (Book.book_start): Produce the revision date of the documentation
	Install the real version tag in the doc.

	* doc/CMTDoc.xml: Improving the doc

2004-10-17    <arnault@lal.in2p3.fr> 238

	* mgr/cmt_make_shlib_common.sh: Suppress the systematic creation
	of a bundle in Darwin context

2004-09-28    <arnault@lal.in2p3.fr> 237

	* src/cmt_system.cxx (compress_path): The algorithm must ignore
	the following pattern: xxxx/$(mmm)/../yyyy which cannot be reduced
	to xxxx/yyyy. In fact it nows expands the path when macros are in it

2004-09-27    <arnault@lal.in2p3.fr> 237

	* src/NMakefile.header (check_config): Ensure that configuration
	checking is performed first.

	* src/Makefile.header (check_config): Ensure that configuration
	checking is performed first.

	* src/cmt_use.cxx (need_new): Only display the incompatible case.

	* src/cmt_use.cxx (reach_package): IncompatibleMajorIds is no
	longer considered. Id comparison is no longer rejected in any
	case.

	* src/cmt_use.cxx (compare_versions): Really compare major ids. No
	longer produce IncompatibleMajorIds

	* src/cmt_use.cxx (enum): Add cases to completely analyze the major ids

	* src/cmt_use.cxx (operate): 

	* src/cmt_system.cxx (get_cmt_paths): Suppress the systematic
	addition of $CMTROOT in CMTPATH items!

	* src/cmt_awk.cxx (scan_path): really stop the too deep recursion

2004-09-01    <arnault@lal.in2p3.fr> 236

	* src/cmt_version.h (CMTVERSION): v1r16p20040901

	* doc/ReleaseNotes.html: Prepare next tagging

	* mgr/Makefile: Adapt for the new CMTBIN convention

	* src/cmt_model.cxx (filter): Substitute <cmt:null/> only just
	before printing for empty vector elements

2004-08-31    <arnault@lal.in2p3.fr> 235

	* doc/CMTDoc.xml: Improve the doc.

	* src/cmt_model.cxx (strict_expand): Support parameter values enclosed in simple quotes 
	Only display endl at the very end or recursion.

	* src/cmt_project.cxx (configure): Fix typo in tag excludes

2004-08-30  Christian Arnault  <arnault@lal.in2p3.fr> 234

	* mgr/requirements: Keep 3 digits for the compiler version
	* mgr/Makefile: augment support for SLC3 machines
	* mgr/cmt_linux_version.sh: idem

2004-08-30    <arnault@lal.in2p3.fr> 233

	* doc/CMTDoc.xml: 
	* doc/table.html: Install the reference to CeCILL licences
	* doc/download.html: 
	* doc/intro.html: 
	* doc/copyright.html: 

	* fragments/dependencies: Trigger the reconstruction of dependency
	file when the setup changes.

	* fragments/constituents_header (first): Do not ovverride
	<package>_setup.make when identical. This permits its use as a
	real stamp file to trigger reconstruction of dependency files.

	* mgr/Makefile (cpp): Take into account the new convention for
	CMTBIN (suffixed with `uname -m`)

	* mgr/cmt_system.sh: improve the default value of CMTCONFIG on Cygwin

	* mgr/requirements: Improve the cleaning and setting of PATH
	vaiables WRT installation area strategy

	* src/cmt_parser.cxx (dos_script_prefix): Standalone packages
	don't need ..\.. in the -path option of DOS setup scripts

	* src/setup.sh (CMTBIN): Suffix CMTBIN with `uname -m` on Unix machines
	* src/setup.csh: idem

2004-08-26    <arnault@lal.in2p3.fr> 232

	* src/setup.bat: Suppress the rem--- lines
	* src/demo/demoA/init.bat: Suppress the rem--- lines
	* src/demo/demoB/init.bat: Suppress the rem--- lines

2004-08-25  Christian Arnault  <arnault@lal.in2p3.fr> 231

	* src/setup.tcsh: Fix typo

	* src/cmt_license.sh: Add template file to include in a various sources (commented by hash signs)
	* src/cmt_license.h: Add template file to include in a C++ source

	* src/cmt_parser.cxx (do_expand_model): Add a -test internal
	option to the expand model command to test regular expressions.

	* src/cmt_regexp.cxx (match): a or_node matches the longest
	 matching alternate patterns, instead of the first one.

	* src/cmt_system.cxx (split): Detect \" and \' patterns and ignore
	them as word separators. So a text containing "a b c" d e \"x\" will result in 4 fields
	a b c
	d
	e
	\"x\"

	* src/cmt_model.cxx (strict_expand): Implement the strict model
	expansion. The new syntax for definning model is:

	<cmts:name att="value" ... />         for a single expansion
	<cmtv:name att="v1 v2 v3 ..." ... />  for a multiple expansion

	The element <cmt:null/> may be used in a vector value to specify an empty value.

	name is the name of a declared make_fragment as usual.
	

2004-08-23  Christian Arnault  <arnault@lal.in2p3.fr> 230

	* src/cmt_regexp.h (class cmt_regexp): Adding comparison operator
	and extraction operator to regexp::iterator

	* src/cmt_parser.cxx (do_expand_model): Parse the -strict option

	* src/cmt_model.h (class CmtModel): Start designing the support
	for stricter model expansion (to support model files in XML)

	* src/cmt_license.txt: First introduction of the license text (obtained from CeCILL)

	* src/Makefile.header (all): Evaluate the result of the cmt check
	configuration and stop Make if it terminates in error.

	* src/cmt_generators.cxx (analyze_file): Evaluate if the file
	exists. Only generate its SourceFile if it exists or can be built
	(build): Accumulate the file names only if they can be built.

	* src/cmt_generators.h (class DocumentGenerator): Make
	analyze_file return if the file is not found.
	(class LibraryGenerator): idem

	* src/cmt_parser.cxx (parser): Make the configure_error a fatal error.

	* src/Makefile.header (common_target): Improve the tmpdir mechanisms. Support ${TMPDIR}

	* src/cmt_parser.cxx (dos_script_prefix): Suppress the -quiet
	option in the setup scripts now that errors are sent to stderr
	instead of stdout.

	* src/cmt_constituent.cxx (class constituents_action_iterator): Use cerr instead of cout

	* src/cmt_fragment.cxx (copy): Use cerr instead of cout

	* src/cmt_generators.cxx (java_file_action, build, build): Use cerr instead of cout

	* src/cmt_parser.cxx (do_awk): typo
	(do_filter, parse_arguments, parser): Use cerr instead of cout

	* src/cmt_use.cxx (install_library, get_all_clients, operate): Use cerr instead of cout

	* src/cmt_system.cxx (remove_file, remove_directory): Use cerr instead of cout

	* src/cmt_tag.cxx (action_apply): Use cerr instead of cout

	* src/cmt_symbol.cxx (create, build): Use cerr instead of cout

	* src/cmt_pattern.cxx (action): Use cerr instead of cout

	* src/cmt_syntax.cxx: general substitution of cout to cerr

	* src/cmt_error.cxx (get_error_name): format text only
	(print): Use cerr instead of cout

	* src/cmt_lock.cxx (check): format text only

2004-08-20  Christian Arnault  <arnault@lal.in2p3.fr> 229

	* mgr/requirements: Protect the cmt_installare_linkopts against
	ambiguous tag settings

	* src/cmt_awk.cxx (scan_path): First compress the path before
	calling the actual recursive scanner
	(scan_path): Completely revisit the scan algorithm to better
	account for directory structures and version.cmt files and package
	statements.

	* src/cmt_project.cxx (create_project): The project file parsing
	must occur after setting the project chain. This caused wrong tag
	propagation across the Project chain.

2004-08-04  Christian Arnault  <arnault@lal.in2p3.fr> 228

	* src/cmt_parser.cxx (do_create): use only compressed paths
	(do_remove): idem

	* src/cmt_use.cxx (get_cmtpath_and_offset): Need to compress the cmtpath to suppress .. patterns

	* src/cmt_system.cxx (compress_path): Compress the pattern /xxx/.. or xxx/.. instead of xxx/../

2004-07-01    <arnault@lal.in2p3.fr> 227

	* src/cmt_version.h: Prepare tagging v1r16p20040701

	* src\cmt_parser.h: idem

	* src\cmt.h (class Cmt): Suppress version strategy

	* src\cmt_parser.cxx (do_show_strategies): Suppress version strategy

2004-06-30    <arnault@lal.in2p3.fr> 226

	* src\cmt_version.h (CMTVERSION): Prepare tagging v1r16p20040630

	* src/cmt_generator.cxx (class WinDefAwk): Better generation of .def files for DATA

2004-06-24    <arnault@lal.in2p3.fr> 225

	* src/cmt_use.cxx (need_new): fix a bug that impacted on the order of
	compatible use requests with different specifications.

	* src\cmt_symbol.cxx (build): Add a debug print
	(SymbolValueList::show): only display actions with a non empty value

	* src\cmt_use.cxx (add): improve the debug statements (no change to algo)

	* mgr\requirements: Improve the removal operations for Windows in the cmtpath_patterns

2004-06-12    <arnault@lal.in2p3.fr> 225

	* src\cmt_parser.cxx (need_prototypes): Fix access to prototype mask of build strategy

2004-05-28  Christian Arnault  <arnault@lal.in2p3.fr> 224

	* Tagging v1r16p20040527

	* src/demo/demo1.cmt: Add a test for -target_tag option

	* src/cmt_parser.cxx (do_build_library_links): Transfered the code
	to install a lib symlink into cmt_use.cxx

	* src/cmt_use.cxx (same_dirs): Add a local helper function to
	check if two directory specifications point to the same location
	(install_library): Common local function to really create a
	symlink to a file either into ../$(tag) or into $(CMTINSTALLAREA)/$(tag)/lib
	(build_library_links): Build all the library links for a Use.

	* src/cmt_use.h (class Use): Add a function to build the library links (the code is
	extracted from Cmt::do_build_library_links () )

2004-05-27    <arnault@lal.in2p3.fr> 223

	* src\cmt_version.h (CMTVERSION): Prepare for real tagging v1r16p20040527
	* doc\download.html: idem

	* doc\CMTDoc.xml: Update the doc for the new -target_tag option

	* src\cmt_constituent.cxx (add_for_action): Actions always have a target tag.

	* src\demo\demoA\requirements: Add a -target_tag option to demoA target to test this feature.

	* fragments\constituent: Construct or not a local tag makefile according to has_target_tag
	* fragments\nmake\constituent: id
	* fragments\make_header: id
	* fragments\nmake\make_header: id

	* src\cmt_generators.cxx (LibraryGenerator::build): 
	(DocumentGenerator::build): Transmit m_HASTARGETTAG

	* src\cmt_generator.cxx (reset): Initialize the new m_HASTARGETTAG variable.

	* src\cmt_generator.h (class CmtGenerator): Add a m_HASTARGETTAG
	Variable to propagate the target_tag ability of the constituents

	* src\cmt_constituent.cxx (show): Display the -target_tag option
	(class constituents_action_iterator): Parse the -target_tag option

	* src\cmt_constituent.h (class Constituent): Add support for the
	new -target_tag option, to control the per-constituent generation
	of the target tag. So add a field has_target_tag
	

2004-05-25  Christian Arnault  <arnault@lal.in2p3.fr> 222

	* mgr/requirements: Use $(tag) instead of ${CMTCONFIG} in all cmtpath_pattern s

	* src/NMakefile.header (tags): idem
	* src/Makefile.header (tags): idem
	* fragments/nmake/make_header: idem
	* fragments/nmake/constituents_header (tags): idem
	* fragments/make_header (tags): idem
	* fragments/constituents_header (tags): prefix the tags macro with $(tag)

2004-05-25    <arnault@lal.in2p3.fr> 221

	* src\cmt_version.h (CMTVERSION): Prepare for tagging v1r16p20040525

	* mgr\NMake (gendoc): Add a new target to generate html from xml

2004-05-25    <arnault@lal.in2p3.fr> 220

	* mgr\NMake (cmttag): Convert VisualC.nmake into VisualC_cmt.nmake
	* fragments\nmake\constituent: Generate tag file for the target

2004-05-18    <arnault@lal.in2p3.fr> 219

	* mgr\requirements: Add cmt_log.cxx in the source list

	* src\cmt_tag.cxx (add): First replacements of debug messages using log
	* src\cmt_parser.cxx (configure_tags): idem

2004-05-18    <arnault@lal.in2p3.fr> 219

	* src\cmt_log.h (class CmtLog): Introducing a centralized log message facility
	* src\cmt_log.cxx: first implementation

2004-05-18  Christian Arnault  <arnault@lal.in2p3.fr> 218

	* fragments/nmake/make_header (tags): idem

	* fragments/nmake/constituent: Update to generate the target_XXX tag

	* src/cmt_parser.cxx (parse_arguments): Activate the tag target_<action> when "cmt do <action>" is run

	* fragments/constituent: Generate the target_${CONSTITUENT} tag

2004-05-17  Christian Arnault  <arnault@lal.in2p3.fr> 218

	* fragments/constituent: Propagate cmt_lock_pid for temporary files
	Generate a tag makefile specific to the constituent

	* fragments/constituents_header (first): Improve the printout for CMTCONFIG

	* fragments/make_header (tags): Generate the target_${CONSTITUENT} tag

	* mgr/requirements: Don't generate the tags macro from CMT. Only do it from the Makefile fragments.

	* src/cmt_generators.cxx (build): Add PACKAGE variable to individual constituent fragment

2004-05-13  Christian Arnault  <arnault@lal.in2p3.fr> 217

	* fragments/constituent: idem

	* fragments/constituents_header (cmt_final_setup): Implement a READONLY mode that generates all intermediate files in /tmp/CMT_*

	* src/Makefile.header (tags): Implement a READONLY mode that generates all intermediate files in /tmp/CMT_*
	(common_target): Make use of the new -out=file option of the cmt build constituents_makefile command

	* src/cmt_generator.cxx (build_constituents_makefile): idem

	* src/cmt_generator.h (class Generator): Add the argument list to the build_constituents_makefile function

	* src/cmt_generators.cxx (build): idem

	* src/cmt_generators.h (class ConstituentsMakefileGenerator): Add the argument list to the build function

	* src/cmt_parser.cxx (configure): Chain configure_home, configure_user_context and configure_cmtpat
	(do_build_constituents_makefile): Propagate arguments to the Generator::build_constituents_makefile method
	(parse_arguments): Accumulate extra-arguments for build constituents_makefile command
	(parse_arguments): Restore the home,user_context and cmtpath configurations for the -tag=xxx option

	* src/cmt_project.cxx (set_build_strategy): Get tags from their names rather than from their pointer to fix a pointer bug
	(set_setup_strategy): idem

	* src/cmt_tag.cxx (action_apply): Adding several debug printouts

2004-05-10    <arnault@lal.in2p3.fr> 216

	* doc\CMTDoc.xml: Add a section on package semantics

2004-05-07  Christian Arnault  <arnault@lal.in2p3.fr> 215

	* mgr/requirements: Improve support for CEL
	Upgrade system_version_query_command for Darwin

2004-05-06  Christian Arnault  <arnault@lal.in2p3.fr> 215

	* src/cmt_tag.cxx (action_apply): apply_tag now supports the tag
	name given through a symbol expression

	* mgr/cmt_linux_version.sh: Support for Entreprise Linux

	* mgr/requirements: Create automatic tags from cmt_hardware
	cmt_system_version and cmt_compiler_version.
	Set the macro shlibsuffix for Win32

	* mgr/cmt_filter3_version.sh: Add a filtering procedure to keep 3 digits in the compiler version

2004-05-05  Christian Arnault  <arnault@lal.in2p3.fr> 214

	* src/cmt_syntax.cxx (parse_requirements): Close all scope sections once the requirements file is parsed.

	* src/cmt_use.cxx (close_scope_sections): Implement by clearing the vector of scope sections.

	* src/cmt_use.h (class Use): Add close_scope_sections to be called
	at the end of parsing a requirements file.

2004-05-03  Christian Arnault  <arnault@lal.in2p3.fr> 213

	* doc/ReleaseNotes.html: Fix typo

	* src/cmt_system.cxx (is_version_directory): Misunderstands
	version specifications of the form v1r2p (without a trailing
	number)

2004-05-03  Christian Arnault  <arnault@lal.in2p3.fr> 212

	* src/cmt_parser.cxx (configure): Configure home and user_context
	before configuring cmtpaths to associate projects with CMTHOME and
	CMTUSERCONTEXT
	(configure_cmt_path): Reset the project factory before creating all projects
	(configure_user_context): Add a debugging printout

	* src/cmt_system.cxx (get_cmt_paths): Remove the initialization of
	the project factory from there to transfer it to the caller (eg
	cmt_parser::configure_cmt_path)

	* src/cmt_parser.cxx (use_special_requirements): Expects a
	statically defined version "v0" for all special uses.

	(configure_cmt_path): Associate a project with CMTHOME and CMTUSERCONTEXT to manage strategies.

	* src/cmt_use.cxx (show_all): Adapt to new naming convention:
	display the static version explicitly.

	* src/cmt_system.cxx (get_home_package): Convert CMTHOME package
	name from "CMTHOME context" to CMTHOME and manage a version
	through standard mechanisms (version is statically defined as v0)
	(is_home_package): Adpat to new naming convention
	(get_user_context_package): Idem for CMTUSERCONTEXT
	(is_user_context_package): Adapt to new naming convention

2004-04-30  Christian Arnault  <arnault@lal.in2p3.fr> 211

	* mgr/cmt_install_action.sh: Use /bin/pwd instead of raw pwd [Thanks to Traudl]
	* mgr/cmt_uninstall_action.sh: idem
	* mgr/cmt_make_shlib.sh: idem
	* mgr/cmt_make_shlib_common.sh: idem
	* fragments/install_includes_header: idem

	* mgr/requirements: Perform path_remove all before path_prepend in
	the cmtpath_pattern. Thus state two separate cmtpath_patterns.

2004-04-02    <arnault@lal.in2p3.fr> 210

	* src\cmt_project.cxx (scan_paths): Late patch for LynxOS limitation

	* src\cmt_version.h: Prepare for v1r16

2004-03-29    <arnault@lal.in2p3.fr> 209

	* mgr/Makefile: Set compiler options for CYGWIN

2004-03-27  Christian Arnault  <arnault@lal.in2p3.fr> 208

	* src/cmt_syntax.cxx (class KwdSetupStrategy): Implement setup strategy decoding for projects

2004-03-27  Christian Arnault  <arnault@lal.in2p3.fr> 207

	* src/cmt_system.h (class IProjectFactory): Suppress the configure entry point

	* src/cmt_system.cxx (get_cmt_paths): see below

	* src/cmt_project.h (class ProjectFactory): No longer need to configure from ProjectFactory

	* src/cmt_project.cxx (configure): Fix typo mixing prototypes and no_prototypes tags
	(add): Systematically create tags just after naming the project.

	* src/cmt_project.h (class Project): Only create tags once

	* src/cmt_syntax.h (class SyntaxParser): Introduce the different
	syntax parsing schemes for requirements files and projects files.
	(class SyntaxParser): Rename do_parse_requirements_text and
	do_parse_requirements_text into do_parse_text and do_parse_line.

2004-03-27  Christian Arnault  <arnault@lal.in2p3.fr> 206

	* src/cmt_syntax.cxx (action): Define a default implementation for project actions
	(class KwdBuildStrategy): Define a project action
	(class KwdProject): idem
	(class KwdSetupStrategy): idem

	* src/cmt_syntax.h (class Kwd): Introduce an action for project files (simply virtual)
	(class SyntaxParser): Restructure, cleanup and sort the entry points
	(class SyntaxParser): Introduce a map of project keywords

	* src/cmt_project.cxx (class ProjectReader): Start support for more statements in the project file

	* src/cmt_pattern.cxx (action): Augment the decoding logic to be more fault tolerant 
	(add): Temporarily force the word quoting
	Add various debuggin printouts

	* src/cmt_parser.cxx (parser): Force the Use* argument type

	* src/cmt_cvs.cxx (class CvsImplementation): Install a constructor for setting default values
	(class CvsImplementation): Set default verse mode to false

2004-03-24  Christian Arnault  <arnault@lal.in2p3.fr> 206

	* src/cmt_cvs.cxx (class CvsImplementation): Reset default verbose mode to off.

2004-03-23  Christian Arnault  <arnault@lal.in2p3.fr> 205

	* src/cmt_pattern.cxx (class PatternCache): Introduce a cache for
	the get_paths operation. To save recursive executions.

	* src/cmt_pattern.h (class PatternList): Navigate in pattern list through PatternList

	* src/cmt_vector.h (cmt_vector): Trying to optimize vector by changing the frame size

	* doc/cmt-mode.el (cmt-mode-map): Revert completion key to <Esc>-<tab>

2004-03-22  Christian Arnault  <arnault@lal.in2p3.fr> 205

	* src/cmt_symbol.cxx (resolve_value): Optimize by checking if $%` exist in the text to expand.
	(create): Missing "alias" case

	* src/cmt_parser.cxx (do_show_action): Missing "alias" case
	(do_show_macro): idem

	* src/cmt_project.cxx (clear): Improve the clear function to
	ensure a proper initialization

	* src/cmt_system.cxx (get_home_directory): Use ::getenv rather than CmtSystem::getenv.

2004-03-19  Christian Arnault  <arnault@lal.in2p3.fr> 205

        * doc/emacs.html: doc on the new emacs mode for CMT
	* doc/table.html: include emacs.html

2004-03-19  Christian Arnault  <arnault@lal.in2p3.fr> 204

	* src/cmt_symbol.cxx (all_set): Only set non empty environment variables 

2004-03-22    <arnault@lal.in2p3.fr> 203

	* src\cmt_parser.cxx (get_build_strategy): Create a local helper
	function to retrieve the build strategy from the current project.
	(get_setup_strategy): Idem for the setup strategy
	(parse_arguments): Add a protection against the killing -tag= with empty argument.
	(reach_current_package): Specify the use object (current use)
	(class StandardMacroBuilder): Isolate the construction of the CMTVERSION macro into a function
	(class StandardMacroBuilder): Setting of basic standard macros
	specific to packages is transfered to Use::fill_standard_macros
	(set_standard_macros): Apply all cmtpath_patterns independently of the build strategy.

	* src\cmt_symbol.cxx (action): Expand the tag name to permit tag
	expressions containing macros.

	* src\cmt_syntax.cxx (parse_requirements): Define the standard
	macros before reading the requirements file.

	* src\cmt_use.cxx (fill_standard_macros): Implement it (move code from cmt_parser.cxx)
	* src\cmt_use.h (class Use): Add fill_standard_macros function to
	fill in all standard macros for a given use before reading its
	requirements file.

	* mgr\requirements: Add exclusions between basic tags
	Adapt cmtpath_pattern to new strategy management 

	* fragments\nmake\constituents_header (tags): id.
	* fragments\nmake\constituent: id.
	* fragments\constituent: Add -quiet to CMT command.

2004-03-19    <arnault@lal.in2p3.fr> 203

	* src\cmt_parser.cxx (get_build_strategy): Install a local
	accessor function to get the build strategy either from the
	current project or from m_current_build_strategy.

2004-03-16    <arnault@lal.in2p3.fr> 202

	* src/cmt_parser.cxx (fill_for_branches): Add a protection against empty current project

	* src\cmt_system.cxx (get_cmt_paths): Make use of the new
	CmtSystem::get_home_directory function

	* src\cmt_parser.cxx (class CmtMountFilterParser): Create a FAwk
	parser to decode mout_filter files.
	(configure_current_dir): Make use of the CmtMountFilterParser
	class to parse cmt_mount_filter and .cmtrc files.

	* src\cmt_system.cxx (get_home_directory): Implementation.

	* src\cmt_system.h (class CmtSystem): Introduced to get ${HOME} in
	a portable way

2004-03-03  Christian Arnault  <arnault@lal.in2p3.fr> 201

	* src/cmt_parser.cxx (print_context): Use the new projet based setup strategy

	* src/cmt_cvs.cxx: suppress some verbose printouts

2004-02-25    <arnault@lal.in2p3.fr> 200

	* src\cmt_pattern.cxx (action): add use to warning messages

	* doc\CMTDoc.xml: improvements

	* doc\gendoc.py (Book.book_start): Set a padding on top of every rule

	* src\cmt_cmtpath_pattern.h (class CmtPathPattern): No need to duplicate the vector of words.

	* src\cmt_cmtpath_pattern.cxx (add): Construct the cmt statement as a one line statement

	* src\cmt_cmtpath_pattern.h (class CmtPathPattern): Add an expansion line in the class

	* src\cmt_pattern.cxx (add): Construct the cmt statement as a one line statement
	(expand): Create a temporary replacement for full line
	(action): relax the syntax by permitting spaces around the "=" sign. 
	Add checks for the template name to be expected by the pattern.

	* src\cmt_pattern.h (class Pattern): Add an expansion line in the class

2004-02-19    <arnault@lal.in2p3.fr> 200

	* src\cmt_project.cxx (configure): Preset the tags of the default strategies 

	* src\cmt_tag.cxx (show_definition): Suppress the display of the internal Default tag

2004-02-13    <arnault@lal.in2p3.fr> 200

	* src\cmt_parser.cxx (class StandardMacroBuilder): Fill <package>_project macro
	(class StandardMacroBuilder): Fill <package>_project macro

	* src\cmt_project.cxx (get_current): No need to cd

2004-02-13  Christian Arnault  <arnault@lal.in2p3.fr> 199

	* src/cmt_symbol.cxx: implement the XxxRemoveRegexp

	* src/cmt_parser.cxx: idem
	* src/cmt_constituent.cxx: idem 
	* src/cmt_symbol.cxx: idem
	* src/cmt_symbol.h (class Symbol): Change the action stored in Symbol into a new enum SymbolType.

	* src/cmt_symbol.cxx: idem
	* src/cmt_syntax.cxx (SyntaxParser): idem
	* src/cmt_parser.h (enum): Introduce regexp-based remove operations for symbols

2004-02-10  Christian Arnault  <arnault@lal.in2p3.fr> 198

	* src/cmt_parser.cxx (actor): Rename PackageCollector into ClientCollector

2004-02-09  Christian Arnault  <arnault@lal.in2p3.fr> 198

	* fragments/installer: add a / everywhere for consistency

	* src/cmt_symbol.cxx (build): Restrict warning on symbol overriding to show macro and show set

2004-02-13    <arnault@lal.in2p3.fr>

	* doc\CMTDoc.xml: Work on the doc towards v1r16

	* doc\gendoc.py (Book.plain_char_data): Keep space characters from raw text
	(Book.book_start): Introduce style sheet.

2004-02-06  Christian Arnault  <arnault@lal.in2p3.fr> 197

	* src/cmt_cvs.cxx (class CvsImplementation): use -quiet for all internal cmt commands

	* src/cmt_string.cxx (erase): Replace strcpy by an explicit loop

	* src/cmt_cvs.cxx: Added -n and -v options to support simulation and verbose modes

	* src/cmt_system.cxx (execute): Change the status value. Back to the Unix standard 0 = ok

	* fragments/nmake/library: idem
	* fragments/library: Install the dependency to the ${CONSTITUENT}stamps macro like for application

	* src/cmt_system.cxx (reduce_file_separators): Improve the reduction algorithm

2004-02-05    <arnault@lal.in2p3.fr> 196

	* src\cmt_parser.cxx: Remove cmtpath database from Cmt class
	Rename FileScanner into PathScanner and transfer it to CmtSystem
	(configure_cmt_path): Use the ProjectFactory to create Projects from CMTPATH
	(do_broadcast): Projects now fill the selections.
	(do_show_clients): Projects used to search clients
	(do_show_packages): idem
	(do_show_path): idem
	(do_show_strategies): Projects reached to get strategies
	(do_show_versions): Projects used to search versions
	(parse_arguments): +path managed by adding a project
	(reach_current_package): Definitively suppress "current package" source of CMTPATH

	* src\cmt_use.cxx (class UseProjectAction): Intoduce an action
	pattern to iterate into Project database
	(move_to): Use the Project::broadcast mechanism to locate the package.

	* src\cmt_use.h (class Use): Make UseProjectAction friend of class Use

	* src\cmt_system.cxx (add_cmt_path): 
	(add_cmt_paths_from_text): 
	(add_cmt_paths): 
	(get_cmt_paths): Use IProjectFactory

	* src\cmt_system.h (class IProjectFactory): Add abstract interface
	for creating projects form cmtpath entries
	(class CmtSystem): Change the API to using IProjectFactory

	* src\cmt_project.cxx: Implement project management

	* src\cmt_syntax.cxx (class KwdBuildStrategy): 
	(class KwdSetupStrategy): Change strategies from new masks and into Projects

	* src\cmt_parser.h (enum): Change the masks for strategies to
	improve the reliability of exclusive options, and inheritance
	between projects.

	* src\cmt_cmtpath_pattern.cxx (class CmtPathPatternProjectAction):
	Introduce new actor pattern for broadcasting to project
	database. Used to apply all cmtpath_patterns
	(apply): Expand the <project> parameter
	(expand): idem

	* src\cmt_cmtpath_pattern.h (class CmtPathPattern): Add project argument to expand

	* src\cmt_awk.h (class PathScanner): Add the PathScanner class (imported from cmt_parser.cxx)
	* src\cmt_awk.cxx (PathScanner): 

	* src\cmt.h (class Cmt): Transfer cmtpath management to Project

	* doc\CMTDoc.xml: 
	* src\cmt_syntax.cxx (class KwdBuildStrategy): 
	* src\cmt_project.h (class Project): 
	* src\cmt_project.cxx (set_build_strategy): 
	* src\cmt_parser.cxx (set_standard_macros): Rename X_install_area symbols into X_installarea
	* src\cmt_install_area.cxx: Rename X_install_area symbols into X_installarea 
	* src\cmt_install_area.h: Rename X_install_area symbols into X_installarea 

	* mgr\requirements: Setting Project-oriented settings for installation area patterns.

2004-01-27    <arnault@lal.in2p3.fr> 195

	* fragments\nmake\installer: Fixes from Pere.

2004-01-20    <arnault@vmlinux> 194

	* Try on CVStrac ticket #1

	* src/cmt_symbol.cxx (action): Ensure that the constituents macro is always private.

	* src/cmt_parser.cxx (reach_current_package): Fix missing configuration bit.
	Cures the bug of missing <PACKAGE>VERSION when using cmt -use=...

2004-01-17    <arnault@lal.in2p3.frARNAULT@NB-ARNAULT> 193

	* src\cmt_syntax.cxx (CommandParser): Add helps for create_project command

	* src\cmt_parser.h (enum): Add action_create_project

	* src\cmt.h (class Cmt): Add do_create_project function 

2004-01-13    <arnault@vmlinux> 192

	* src/cmt_parser.cxx (dos_script_prefix): Suppress spaces before
	continuation character in DOS format

2004-01-13  Christian Arnault  <arnault@lal.in2p3.fr> 191

	* src/cmt_symbol.cxx (add_value_to_list): Fix for not discarding too much value_lists

2004-01-10    <arnault@vmlinux> 190

	* src/cmt_syntax.cxx (class KwdBuildStrategy): Start getting the
	strategy from project(experimental??)

	* src/cmt_project.cxx (find_by_cmtpath): We also accept paths specified using a substring
	(configure): Configure in reverse order
	(action): Add experimental -index and -select options

	* src/cmt_install_area.cxx (setup_current_install_area): Make CMTINSTALLAREA a macro instead of a set

2004-01-08  Christian Arnault  <arnault@lal.in2p3.fr> 189

	* src/cmt_use.cxx (reach_package): Fix bug in version comparison when working in non-version-directory mode
	* mgr/requirements: use $(CMTCONFIG) instead of $(tag) for setting PATH etc.. in cmtpath_pattern

2003-12-19  Christian Arnault  <arnault@lal.in2p3.fr> 188

	* src/cmt_use.h (class Use): Remove the project relationship between Use and Project

2003-12-18    <arnault@lal.in2p3.fr> 187

	* src\cmt_constituent.h (class Constituent): 
	* src\cmt_constituent.cxx (add_for_action): Implement the constituent equivalent to actions
	(parse_all): Generate the constituent equivalents for all macros

	* fragments\cmt_action_runner: 
	* fragments\cmt_action_runner_header: 
	* fragments\nmake\cmt_action_runner_header: The new generic make fragment for running actions

	* fragments\nmake\dependencies: 
	* fragments\dependencies: Suppress dependency computation when the
	QUICK macro is defined

	* fragments\nmake\library: 
	* fragments\library: 
	* fragments\application: 
	* fragments\nmake\application: Add dependency to requirements to rebuild application

	* src\cmt_parser.cxx (do_config): Suppress install area cleanup action from cmt config
	(do_setup): idem

2003-12-16    <arnault@lal.in2p3.fr> 187

	* src\cmt_constituent.cxx (class constituents_action_iterator):
	Added syntax check on -xxx options for constituents

	* src\cmt_parser.cxx: Implement Action support.
	Added: (to support Actions)
		do_do
		do_show_action
		do_show_action_names
		do_show_action_value
		do_show_actions
	removed: (after introducing Scope Sections)
		get_scope
		set_scope
		m_scope

	* src\cmt_parser.h (enum): Added 
		CommandAction
		CommandEndPrivate
		CommandEndPublic

		action_show_action_xxx

	* src\cmt_constituent.cxx (class constituents_action_iterator):
	Added a syntax checking action.

	* src\cmt_use.cxx:
	* src\cmt_use.h (class Use): Support Scope Section concept.
	A Use object holds a vector of ScopeSections
	Added functions
		push_scope_section
		pop_scope_section
		get_current_scope
	Changed attributes:
		scope -> initial_scope

	* src\cmt_syntax.cxx (class KwdAction): New keyword
	(class KwdEndPrivate): new keyword
	(class KwdEndPublic): new keyword
	(class KwdPrivate): Ignore this pattern on current use
	(class KwdPublic): Ignore this pattern on current use
	(CommandParser): Update help texts for new action concepts

	* src\cmt_symbol.cxx (class ActionBuilder): new Action objects are
	implemented as a new category of symbols. Therefore all mechanisms
	have been extended to support the new concept.

	old scope attribute is replaced by accesses to Scope Sections from
	the Use objects.

	* src\cmt_symbol.h (class Symbol): Suppress useless scope attribute and valid () function

	* src\cmt_scope_section.cxx: New Support for Scope Sections

	* src\cmt_scope_section.h: New Support for Scope Sections

	* src\cmt_fragment.cxx (action): Switch to using Scope Sections

	* src\cmt.h (class Cmt): Added: (to support Actions)
		do_do
		do_show_action
		do_show_action_names
		do_show_action_value
		do_show_actions
	removed: (after introducing Scope Sections)
		get_scope
		set_scope
		m_scope

	* mgr\requirements: Adding support for Scope sections to handle
	private or public sections. Now private and public sections can be
	ended with the new keywords end_private and end_public. Ending
	keywords switch back to the previous scope active before the most
	recent opening keyword.

	Adding cmt_scope_section.cxx to the sources of the cmt application.
	

2003-12-12  Christian Arnault  <arnault@lal.in2p3.fr> 186

	* mgr/cmt_install_action.sh (a): Improve checking of pwd WRT CMTINSTALLAREA
	* mgr/cmt_uninstall_action.sh (a): idem

	* mgr/cmt_mount_filter: Restore definitions

	* src/cmt_syntax.cxx (do_parse): Evolution of the requirements
	file syntax: apply_pattern can be omitted (ie. pattern names are
	understood as extensions to the basic CMT language)

	* src/cmt_pattern.cxx (action): Add error detection when applying the wrong pattern name
	Prepare for the next change of the syntax which accepts pattern names as plain CMT keywords

	* src/cmt_parser.cxx (find_in_cmt_paths): Fix construction of the
	<package>_cmtpath when symlinks exist along pwd

2003-12-08  Christian Arnault  <arnault@lal.in2p3.fr> 186

	* src/cmt_parser.cxx (do_build_library_links): Fix : should make
	use of the library_prefix and suffix.

2003-12-06   Christian Arnault  <arnault@lal.in2p3.fr> 185

	* src\cmt_syntax.cxx (do_parse): When a keyword is not found,
	expect an implicit pattern application.

	* src\cmt_pattern.cxx (action): Add a protection against pattern not found
	Support lines starting with pattern-name or with apply_pattern.

2003-11-21  Christian Arnault  <arnault@lal.in2p3.fr> 185

	* mgr/cmt_install_action.bat: Typo

	* mgr/requirements: Typo in macro cmt_uninstalldir_action

2003-11-20  Christian Arnault  <arnault@lal.in2p3.fr> 184

	* src/cmt_version.h (CMTVERSION): Preparing new tag v1r14p20031120

	* src/cmt_syntax.cxx (CommandParser): Help on cmt build CMT_pacman 

	* src/cmt_parser.cxx (parse_arguments): Implement cmt build
	CMT_pacman command to generate the effective pacman manifest file
	for CMT.

	* src/cmt.h (class Cmt): Add Cmt::do_build_CMT_pacman function

	* src/cmt_parser.h (enum): Add cmt build CMT_pacman command

	* src/setup.zsh: Upgrade zsh completion settings

	* src/setup.tcsh: Upgrade tcsh completion settings

	* fragments/group (all_groups): Add a new standard macro
	$(<group>_dependencies) to specify global dependencies for a
	group.

	* fragments/constituents_trailer (binclean): Dont remove *.make* when cleaning.
	Add a message for binclean.

	* src/cmt_use.cxx (add): Improve the warning message for package not found
	(reduce_path): Display the package path using a reusable format (used by show fragments)

2003-11-19  Christian Arnault  <arnault@lal.in2p3.fr> 183

	* src/cmt_constituent.cxx (class constituents_action_iterator): Empty group means no group.

	* src/cmt_parser.cxx (install_library): Factor out the basic
	operation for installing a library
	(do_build_library_links): Make use of the new install_library
	operation. Add special operation for Darwin to install bundles

	* src/cmt_syntax.cxx (class KwdBuildStrategy): Fix cumulative settings of the strategies 
	(class KwdSetupStrategy): idem

	* mgr/cmt_make_shlib_common.sh: Add support to generate bundles for Darwin

2003-11-14  Christian Arnault  <arnault@lal.in2p3.fr> 182

	* src/cmt_install_area.cxx (setup): Continue setup even without current installation area
	(config): Apply all cmtpath_patterns even  without current installation area
	(build_current_install_area): Make use of Cmt::find_in_cmt_paths

	* src/cmt_parser.cxx (configure_current_cmtpath): Make use of the
	new find_in_cmt_paths function
	(do_setup): Always call CmtInstallAreaMgr::setup even if current installation area is empty 
	(find_in_cmt_paths): first implementation
	(get_cmt_path_pwds): first implementation
	(class StandardMacroBuilder::fill_for_use_cmtpath): Make use of the
	new find_in_cmt_paths function

	* src/cmt.h (class Cmt): Adding find_in_cmt_paths to locate a path
	from all specified CMTPATH entries (considering the dual flavours
	of each entry)
	Adding get_cmt_path_pwds to access alternal values of cmtpath entries

2003-11-12  Christian Arnault  <arnault@lal.in2p3.fr> 181

	* fragments/nmake/constituents_trailer (binclean): Fix typo for Windows

2003-11-06  Christian Arnault  <arnault@lal.in2p3.fr> 180

	* mgr/CMT.pacman: Add generic pacman file. 
	All instances of the "<version>" pattern need to be substituted by 
	the effective version of CMT to make it a real pacman file

2003-10-29  Christian Arnault  <arnault@lal.in2p3.fr> 179

	* tagging v1r14p20031027

	* mgr/cmt_build_release.sh (version): Add the rebuilding of Linux
	version at Lyon (without getting the result back)

	* doc/documents.html: Install release notes from the documents page

	* doc/ReleaseNotes.html: Create ReleaseNotes web page (suppress ReleaseNotes.txt)

	* mgr/Makefile (docs): 
	Add installation of ReleaseNotes.html

2003-10-27  Christian Arnault  <arnault@lal.in2p3.fr> 178

	* src/cmt_version.h (CMTVERSION): prepare tagging of v1r14p20031027

	* mgr/requirements: cmt_installarea_prefix must be defined
	externally to the cmtpath_pattern.

2003-10-22  Christian Arnault  <arnault@lal.in2p3.fr> 177

	* src/cmt_version.h (CMTVERSION): prepare tagging of v1r14p20031022

	* mgr/cmt_installdir_excludes.txt: New file containing the list of
	patterns to exclude in installing a directory

	* fragments/nmake/install_includes_header (install): Add support for exclude files

	* mgr/cmt_installdir_action.bat: Add support for exclude files
	* mgr/cmt_uninstalldir_action.bat: Add tests
	* mgr/cmt_uninstall_action.bat: Add tests
	* mgr/cmt_install_action.bat: Add tests

	* src/cmt_parser.cxx (set_standard_macros): First define the
	current installation area before defining all other standard
	symbols (and making the final parsing of constituents)

	* src/cmt_install_area.cxx (setup_current_install_area): Implement
	the definition of the CMTINSTALLAREA symbol	
	(setup): Differentiate the setting of CMTINSTALLAREA symbol from
	applying cmtpath patterns

	* src/cmt_install_area.h (class CmtInstallAreaMgr): Split setup in
	two parts : first define the CMTINSTALLAREA symbol, then apply all
	cmtpath patterns

2003-10-21  Christian Arnault  <arnault@lal.in2p3.fr> 176

	* mgr/cmt_build_release.sh: Start a procedure for remotely building a CMT release

	* mgr/cmt_installdir_action.bat: Added test on existing result.

	* fragments/nmake/install_includes_header (install_dir): Use $() instead of ${}

	* mgr/requirements: Add definition for cmt_installdir_action

	* src/cmt_parser.cxx (class StandardMacroBuilder): Generate
	<package>_cmtpath and <package>_offset macros also for the current
	package

	* src/cmt_system.cxx (remove_directory): Add a # for error messages
	(remove_file): idem

2003-10-14    <arnault@vmlinux> 175

	* src/cmt_version.h (CMTVERSION): Prepare tagging v1r14p20031014

	* src/cmt_use.cxx (compare_versions): Add a function to compare
	two version strings.
	(reach_package): Add the effective version checking for
	no_version_directory style when version.cmt exists.

	* doc/CMTDoc.xml: Suppress version strategy documentation since
	this mechanism is not really maintained.

	* src/cmt_use.cxx (reach_package): Add effective check of version
	even in no_version_directory style

2003-10-13    <arnault@vmlinux> 175

	* fragments/* : Add start and end markers to all make fragments.  

2003-10-09    <arnault@lal.in2p3.fr> 175

	* src\cmt_parser.cxx (do_broadcast): Suppress the catching of
	return status=2 for last executed command

2003-10-02  Christian Arnault  <arnault@lal.in2p3.fr> 175

        * src/cmt_system.cxx (cd): putenv requires that the string is static !!

2003-10-01    <arnault@vmlinux> 174

	* src/cmt_use.cxx (class use_action_iterator): Force auto_imports
	to On when context is unspecified.

	* src/cmt_use.h (class Use): Add a new set_selected_version
	function for switching from one use to another one, better wrt
	various criteria. When switching, m_index and auto_imports are
	transfered from the unselected to the newly selected.

2003-09-26    <arnault@vmlinux> 173

	* src/cmt_system.cxx (cd): Change the PWD environment variable, in
	case it's not done by the underlying OS

2003-09-24  Christian Arnault  <arnault@lal.in2p3.fr> 172

	* src/cmt_use.cxx (show_cycles): optimizing a bit
	(find_index): idem
	(set_auto_imports_state): idem
	(move): idem
	(reorder): idem
	(unselect_all): idem
	(get_selected_version): idem
	(get_paths): Improve the algorithm to save multiple vector manipulations

	* src/cmt_parser.cxx: Follow all symbol->build_macro_value by
	Symbol::expand to really expand all possible macro
	references. This caused a bug when inline re-confirguring
	CMTUSERCONTEXT (etc.) with a value containing a ref to another
	symbol.

	* mgr/Makefile (cpp): Add -O2 option for Linux platform
	(cpp): Add support for profiling setup for LinuxProf platform

2003-09-18    <arnault@vmlinux>

        * mgr/cmt_uninstall_action.sh (a): Fix the consistency check of pwd vs CMTINSTALLAREA
        * mgr/cmt_install_action.sh (a): idem

2003-09-18  Christian Arnault  <arnault@lal.in2p3.fr> 171

	* mgr/Makefile (cpp): Set IGNORE_PWD for OSF1 and LynxOS

	* src/cmt_system.cxx (pwd): Add an option to ignore PWD since on
	some machines this does not work well with the chdir function.

	* doc/CMTDoc.xml: improvements

2003-09-17  Christian Arnault  <arnault@lal.in2p3.fr> 170

	* src/cmt_parser.cxx (class StandardMacroBuilder): Add the
	production of the new macros <package>_cmtpath <package>_offset
	(class StandardMacroBuilder): Implement the generation of
	<package>_cmtpath <package>_offset macros

	* fragments/constituent: Add the same dependency list onto
	constituent makefile fragment than onto the constituent itself so
	as to enforce the build order also for make fragments.

	* src/cmt_use.cxx (get_paths, get_selected_version): Remove static
	declaration for a local variable (caused a serious bug !!)
	Lots of debug prints improved.

2003-09-16  Christian Arnault  <arnault@lal.in2p3.fr> 170

	* src/cmt_symbol.cxx (action): fix setup_script calling mechanism
	in no_version style : should get it from ../cmt rather than ../mgr

2003-09-16    <arnault@vmlinux> 169

	* mgr/cmt_uninstall_action.sh (full_source_name): idem

	* mgr/cmt_install_action.sh: add a protection when current
	directory is outside any installation area

	
	* mgr/NMake (CMTINSTALLAREA): idem
	(cmttag): Improve the filter for VisualC tag file generation
	(required to remove all location specific info)
	Change the target from cmt to cmttag (ie this is NO LONGER done by default!!)

	* mgr/Makefile (CMTINSTALLAREA): Inhibit all INSTALLAREA mechanism
	when rebuilding cmt itself

	* src/cmt_parser.cxx (get_current_style): First Implementation
	(dos_script_prefix): Use current_style rather than
	current_structuring_style to select path pattern

	* src/cmt.h (class Cmt): Add get function to access m_current_style

2003-09-16  Christian Arnault  <arnault@lal.in2p3.fr> 168

	* src/cmt_use.cxx (find_index): Add a protection when a package
	was not found

2003-08-14  Christian Arnault  <arnault@lal.in2p3.fr> 168

	* src/cmt_generators.cxx (LibraryGenerator::build): new syntax for get_all_files
	(DocumentGenerator::build): idem
	(MSDEVGenerator::build_project): idem
	(VSNETGenerator::build_project): idem
	(DependencyGenerator::build): idem

	* src/cmt_generator.h (class CmtGenerator): Add an argument for
	selection patterns.

	* src/cmt_generator.cxx (get_all_files): Apply the selection
	patterns.  Support wilcarded suffixes (*.*)

	* src/cmt_generators.cxx (DocumentGenerator::build): Add path
	compression when analyzing file names.
	(ConstituentsMakefileGenerator::build): suppress unused declarations

	* src/cmt_constituent.cxx (show): display select paterns
	(class constituents_action_iterator): Handle the new -k= option for selection pattern
	(clear): clear selection patterns

	* src/cmt_constituent.h (class Constituent): Add select regexps similar to excludes

2003-08-13  Christian Arnault  <arnault@lal.in2p3.fr> 168

	* src/cmt_use.cxx (show_all): Standardize the output format of
	show uses to ensure that we always have in the last part: 

	use <package> <version> [<offset>] (<path>) (<qualifier>) (...)

	or (with -quiet)
	
	use <package> <version> [<offset>]

	Also fix a bug when trying to remove offset from real_path...
	

2003-08-11  Christian Arnault  <arnault@lal.in2p3.fr> 167

	* mgr/Makefile (bintar): Dynamically gets the list of binaries
	available of this machine. Then constructs CMTDownload.html
	accordingly.

	* doc/CMTDownload1.html: First part of CMTDownload.html
	* doc/CMTDownload2.html: Last part of  CMTDownload.html

	* doc/installations.doc: upgrade list of porting machines

	* src/cmt_version.h (CMTVERSION): new patch tag v1r14p20030811

	* src/cmt_use.cxx (show_sub_uses): Display the original request
	instead of the registered sub use (which may be different than the
	request)

	* src/cmt_use.h (class Use): Add context_use in the argument list
	to display the use that created this request
	
	(class Use): Add a vector of the real requests (well only those that ended up in a sub use) 

	* src/cmt_use.cxx (need_new): Dispay the incompatibility message
	in need_new rather than in the BestFitSelector, since
	corresponding uses may have been discarded then.

	* src/cmt_system.cxx (is_version_directory): return all -1 values
	when version specification is just '*'

2003-08-08    <arnault@lal.in2p3.fr> 166

	* mgr\requirements: Tuning pour CYGWIN

2003-08-06  Christian Arnault  <arnault@lal.in2p3.fr> 165

	* src/cmt_symbol.cxx (create): Same reasons (LynxOS) => convert a
	static array of strings into a switch statement (not quite
	elegant). May move back in some future if problem is solved on
	LynxOS.

	* src/cmt_syntax.cxx (CommandParser): Initialze the new help_texts
	by filling in a vector rather that from a static array of
	cmt_string (too bad...)

	* src/cmt_syntax.h (class CommandParser): Need to redefine the
	management of static arrays of objects due to a bug in c++
	compiler on LynxOS... A Workaround is found by transfering static
	arrays into the singleton => m_helps and m_help_texts

2003-08-06    <arnault@lal.in2p3.fr> 164

	* src\cmt_parser.cxx (dos_script_prefix): Adapt the generation of
	setup.bat scripts so as to account for the new DOS device constructs
	\\xxx\aaa

	* src\setup.bat: Add /D to the cd command to support CMT on a
	different device

2003-08-05    <arnault@lal.in2p3.fr> 163

	* src/cmt_parser.cxx (dos_script_prefix): remove device from path
	when device takes the conventional form. new form (\\xxx\) is not
	yet handled.

	* src/cmt_install_area.cxx (config): Don't produce output messages in quiet mode

2003-08-05  Christian Arnault  <arnault@lal.in2p3.fr> 163

	* src/cmt_system.cxx (pwd): Make use of the PWD environment
	variable when it is defined to detect current directory in place
	of getcwd (keep gettcwd when PWD is not defined or on WIN32)

	* fragments/install_includes_header (install): Avoid useless
	re-installation of include file area

	* src/cmt_use.cxx (add): When m_index is exchanged between two
	uses, the discarded flag must be upgraded accordingly	
	(class use_action_iterator): Suppress trailing slash characters on
	package offset specifications.

	* src/cmt_parser.cxx (class StandardMacroBuilder): Define
	package_cmtpath instead of just cmtpath as the standard macro, in
	order to avoid conflict with CMTPATH env. var. on Windows.
	(do_broadcast): Define the pattern <package_cmtpath> instead of
	<cmtpath> for broadcast command templates

	* src/cmt_use.cxx (need_new): first consider the already registered use
	(add): Fix a bug in the algorithm for checking registrations of uses.
	(class use_action_iterator): Remove trailing slashes from prefix specifications

2003-06-20  Christian Arnault  <arnault@lal.in2p3.fr> 162

	* src/cmt_version.h: new patch id 20030620

	* mgr/Makefile (gendoc): Add a target to convert XML doc into HTML
	(so far only available at CERN)

	* doc/gendoc.py (Book.plain_char_data): improvements.

	* src/cmt_parser.cxx (do_broadcast): Fix evaluation of <cmtpath>
	<package_offset> in -global mode

2003-06-19    <arnault@lal.in2p3.fr> 161

	* src/cmt_system.cxx (add_cmt_path): Fix cmtpath checking for
	devices on Windows

2003-06-19  Christian Arnault  <arnault@lal.in2p3.fr> 160

	* fragments/nmake/library_no_share: Use the @<< syntax of nmake to
	cope with long list of OBJS
	* fragments/nmake/application: idem
	* fragments/nmake/library: idem

2003-06-18  Christian Arnault  <arnault@lal.in2p3.fr> 159

	* mgr/requirements: Use ln -s for the cmt_install_area_command

	* fragments/application (install_dir): Use $(tag) instead of $(CMTCONFIG)
	* fragments/library (install_dir): Use $(tag) instead of $(CMTCONFIG)
	* fragments/library_no_share (install_dir): Use $(tag) instead of $(CMTCONFIG)
	* fragments/nmake/application (install_dir): Use $(tag) instead of $(CMTCONFIG)
	* fragments/nmake/library (install_dir): Use $(tag) instead of $(CMTCONFIG)
	* fragments/nmake/library_no_share (install_dir): Use $(tag) instead of $(CMTCONFIG)

	* mgr/requirements: use cp -s and not cp -l to create symlinks

2003-06-16  Christian Arnault  <arnault@lal.in2p3.fr> 158

	* src/cmt_version.h (CMTVERSION): New Tag 20030616

	* src/Makefile.header (common_target): Make use of the mktemp
	shell function

	* doc/CMTDoc.xml: Doc

	* src/cmt.h (class Cmt): Add get_current_cmtpath and
	get_current_offset functions.

	* src/cmt_parser.cxx (configure_current_cmtpath): Implement (set
	m_current_cmtpath and m_current_offset)

	* src/cmt.h (class Cmt): Add configure_current_cmtpath function

	* src/cmt_parser.cxx (class StandardMacroBuilder): Add standard
	macros cmtpath and package_offset
	(do_broadcast): Add substitutions of <package>, <version>, <cmtpath>, <package_offset>
	(class StandardMacroBuilder): Set m_current_cmtpath and m_current_offset

	* src/cmt.h (class Cmt): Adding current value for cmtpath and offset

	* mgr/requirements: Use symlink instead of cp as default transfer
	action into installation area

2003-06-12  Christian Arnault  <arnault@lal.in2p3.fr> 157

	* src/cmt_pattern.cxx : fix a bug in ApplyPattern::action: macros 
	should NOT be expanded when parsing the statement. Only the 
	pattern name may be expanded.
	Second fix: when a pattern is re-defined, the Pattern object must be 
	properly reset.

2003-06-04    <arnault@vmlinux> 156

	* src/cmt_version.h (CMTVERSION): Tag the version to v1r14p20030605

	* mgr/build_from_rpm.sh (tempdir): Add a shell script for testing
	the source kit (not complete)

	* mgr/install_from_rpm.sh: Add a shell script for testing the
	generated binary RPM.

	* mgr/Makefile (rpm): Add the rpm target to build RPMs into ../rpm 

	* mgr/CMT.spec: Add an RPM spec file for CMT. Only the binary kit
	has been tested successfully

	* doc/install.html: Document the usage of the CMT RPM

	* src/cmt_parser.cxx (dos_script_prefix): Use %TEMP% instead of
	%HOMEDRIVE%%HOMEPATH% for temporary setup files on Windows

2003-06-04  Christian Arnault  <arnault@lal.in2p3.fr> 155

	* fragments/install_includes_header (install): Fixed wrong test on
	CMTINSTALLAREA

	* src/cmt_syntax.cxx (parse_requirements): Transfer the scoping
	algorithm to parse_requirements_text so that patterns supplying
	private statements will work nicely.
	(parse_requirements_text): see above

2003-05-23  Christian Arnault  <arnault@lal.in2p3.fr> 154

	* src/Makefile.header: removing apparently obsolete MAKEFLAGS
	filtering mechanisms on -j option

	* src/setup.zsh: Add cmt show cycles zsh expansion

	* src/cmt_parser.cxx (parser): Add cmt show cycles parsing and support

	* src/cmt_syntax.cxx (CommandParser): Add show_cycles info

	* src/cmt_parser.h (enum): Add action_show_cycles

	* src/cmt.h (class Cmt): Add cmt show cycles command to display use cycles

2003-05-22  Christian Arnault  <arnault@lal.in2p3.fr> 153

	* src/cmt_std.h: Suppress include ios for new header style

	* src/cmt_parser.cxx (parse_arguments): Install a -private option to
	the show_use_paths action. When -private is present on the command
	line then the private uses are reached.
	(parse_arguments): Make the --private or --public option a global
	option to control on all CMT commands whether we reach or not the
	private uses.

	* src/cmt_use.cxx (class use_action_iterator): Detect the new
	scope filtering mode to actually reach the private uses

	* src/cmt_parser.cxx: Set the scope filtering mode when
	appropriate (cmt_show_uses, cmt_show_use_paths, cmt_broadcast,
	cmt_set_versions, cmt_show_setup)

	* src/cmt.h (class Cmt): Add m_scope_filtering_mode attribute

	* src/cmt_parser.cxx (get_scope_filtering_mode): Implement the new function
	(set_scope_filtering_mode): Implement the new function

	* src/cmt.h (class Cmt): Add set_scope_filtering_mode function
	  (class Cmt): Add get_scope_filtering_mode function

	* src/cmt_parser.h (enum): Add a scope filtering mode to block or
	reach private uses

2003-05-21  Christian Arnault  <arnault@lal.in2p3.fr> 153

	* src/cmt_use.cxx (get_all_clients): Public interface to private
	get_all_clients
	(get_all_clients): Actual recursive implementation for getting all
	paths to a given client

	* src/cmt_use.h (class Use): Implement two new get_all_clients
	functions to acquire all paths to a given client of a package (one
	public with simple interface and one private with temporary
	storage).

	* src/cmt_use.cxx (class use_action_iterator): traverse complete
	use graph for action_show_use_paths

	* src/cmt_std.h: Set new C++ header style on Linux

	* src/setup.zsh: Add cmt show use_paths to auto-expansion definition 

	* src/cmt_syntax.cxx (CommandParser): Add help for cmt show use_paths
	(get_help_texts): idem

	* src/cmt_parser.cxx (do_show_use_paths): implement do_show_use_paths function
	(parse_arguments): parse cmt show use_paths <package>
	(parser): idem

	* src/cmt.h (class Cmt): add do_show_use_paths function

	* src/cmt_parser.h (enum): Start implementing a new feature: cmt
	show use_paths <package> to display all possible paths between the
	current package and the specified package.

2003-05-19    <arnault@lal.in2p3.fr> 152

	* mgr\cmt_linux_version.sh: add a script for querying linux
	version for various distributions (contribution from Clark McGrew
	<clark.mcgrew@sunysb.edu>)

	* src\cmt_symbol.cxx (show_macro): re-apply suppress_OS_delimiter
	when generating the tag makefile, but only on WIN32 context.

	* src\cmt_pattern.cxx (class apply_pattern_action_iterator): Add
	action iterator to expand macros before parsing line.

	* src\cmt_fragment.cxx (class fragment_action_iterator): Add
	action iterator to expand macros before parsing line.

	* src\cmt_fragment.cxx (action): Hide make_fragments in private
	sections like macros

	* mgr\requirements: Introduce the generic Unix tag for all Unix platforms
	
	* src\cmt_parser.cxx (dos_script_prefix): Factor out the writing
	of DOS setup and cleanup scripts.

	* mgr\INSTALL.bat: No longer need nmake to generate the setup.bat
	script of CMT, thanks to the %~d0%~p0 mechanism (copy from src is enough).

	* src\setup.bat: Install a generic mechanism for finding the
	current drive letter (unfortunately this mechanism does not work
	in any possible Unix shell)

	* src\cmt_parser.cxx (install_setup_scripts): Apply the drive
	letter mechanism to setup scripts

2003-05-17    <arnault@lal.in2p3.fr> 151

	* mgr\requirements: Typo in the cmtpath_pattern : use_includes 

2003-05-14    <arnault@lal.in2p3.fr> 150

	* src\cmt_parser.cxx (restore_all_tags): Bug in managing
	-tag=<taglist> argument due to the separator in m_extra_tags :
	force a separator before and after all tags in the list
	(parse_arguments): idem
	(print): idem

2003-05-13    <arnault@lal.in2p3.fr> 149

	* fragments/tex: install correction from Marie Anne

2003-05-12    <arnault@lal.in2p3.fr> 148

	* mgr/cmt_linux_version.sh: Adding a script to retrieve Linux version and distribution 

	* mgr/requirements: Add declaration of install_includes fragments

	* fragments/install_includes_header: Make fragment for installing
	include directory but only for those following the standard
	pattern of ../<package>

	* fragments/install_includes: 
	* fragments/nmake/install_includes_header: 

	* mgr/cmt_installdir_action.bat: Special treatment of directory
	installation
	* mgr/cmt_uninstalldir_action.bat: 

	* fragments/constituents_trailer (remove_library_links): Add a
	remove_library_links target
	* fragments/nmake/constituents_trailer: idem

	* fragments/constituent (uninstall): Suppress dependencies for
	uninstall target
	* fragments/nmake/constituent (uninstall): idem

2003-05-11    <arnault@lal.in2p3.fr> 147

	* mgr\requirements: Add search libpath to installarea for WIN32

	* fragments\nmake\library (install): bug (typo) in target names

	* mgr\cmt_install_action.bat: use rem comments instead of #
	* mgr\cmt_uninstall_action.bat: idem

	* mgr\NMake (cmt): Filter out the include and lib definitions in
	VisualC.nmake for cmt itself.

	* src\cmt_parser.cxx (scan_path): Suppress unused variable

	* src\cmt_std.h (OLD_HEADERS): Adopt new header style for WIN32

	* mgr\requirements: Add compiler option for exception handling in VisualC

2003-05-05  Christian Arnault  <arnault@lal.in2p3.fr> 146

	* src/cmt_use.cxx (add): Set the warning for package not found a real warning.

	* src/cmt_parser.cxx (do_setup): Change the info message to be
	displayed only when appropriate

2003-05-05    <arnault@lal.in2p3.fr> 145

	* src/cmt_version.h: v1r14

	* doc/CMTDoc.xml: Improve the doc

	* doc/gendoc.py (Book.syntax_start): Add an attribute name in
	syntax for avoiding name conflicts

	* fragments/nmake/jar (install): 
	* fragments/nmake/java_header (install): 
	* fragments/nmake/library_no_share (install): 
	* fragments/nmake/library (install): 
	* fragments/nmake/application (install): 

	* fragments/jar (install): 
	* fragments/java_header (install): 
	* fragments/library_no_share (install): 
	* fragments/library (install): 
	* fragments/application (install): apply the centralized scripts

	* mgr/cmt_uninstall_action.bat: 
	* mgr/cmt_install_action.bat: 
	* mgr/cmt_uninstall_action.sh:
	* mgr/cmt_install_action.sh: Scripts for doing
	(un)installation into the current installation area

2003-05-02  Christian Arnault  <arnault@lal.in2p3.fr> 144

	* fragments/application (uninstall, install): 
	* fragments/library (uninstall, install): 
	* fragments/library_no_share (uninstall, install): 
	* fragments/java_header (uninstall, install): 
	* fragments/jar (uninstall, install): 
	* fragments/constituent (install, uninstall): Add (un)install actions
	idem for nmake
	

2003-05-02    <arnault@lal.in2p3.fr> 143

	* doc/gendoc.py : Create a new mechanism for generating HTML
	documentation from an XML representation.

2003-04-30  Christian Arnault  <arnault@lal.in2p3.fr> 142

	* src/cmt_parser.cxx (do_show_strategies): Display the Setup strategy

	* src/cmt_syntax.cxx (class KwdSetupStrategy): Decode the
	[no_]cleanup option for the setup_strategy in requirements file

	* src/cmt_parser.cxx (parse_arguments): Decode the -no_cleanup option
	(do_setup): Apply the cleanup only when the setup strategy permits it
	(do_config): idem

	* src/cmt_parser.h (enum): Add NoCleanup possibility to the SetupStrategy

2003-04-16  Christian Arnault  <carnault@lxplus051.cern.ch> 141

	* src/cmt_parser.cxx (run): Bug in PackageCollector::run current
	directory missed the package name. (for cmt show clients)

2003-04-12    <arnault@lal.in2p3.fr> 140

	* src\cmt_generators.cxx: Add excludes to all calls to get_all_files 

	* src\cmt_generator.h (class CmtGenerator): Add exclude expressions

	* src\cmt_constituent.cxx (class constituents_action_iterator):
	Implement the -x=<pattern> option to the constituent to exclude
	patterns. Create regexps for each pattern.
	(show): Show excludes

	* src\cmt_constituent.h (class Constituent): Add a vector of
	regexp for exclude specs.

	* src\cmt_regexp.cxx (set): Implement the set function.

	* src\cmt_regexp.h (class cmt_regexp): Introduce a default
	constructor and a set function

	* src\cmt_generators.cxx:
	* src\cmt_generator.cxx: Strong restruring of generator architecture:
	  + create a CmtGenerator basic class for all generators
	  + create derived classes for all categories of generators
                 ApplicationGenerator
                 LibraryGenerator
                 DocumentGenerator
                 ReadmeGenerator
                 PrototypeGenerator
                 DefaultMakefileGenerator
                 MSDEVGenerator
                 VSNETGenerator
                 MakeSetupGenerator
                 ConstituentsMakefileGenerator
                 DependencyGenerator
	  + transfer new stuff in cmt_generators.h/.cxx
	  + transfer all utility functions (get_all_files etc...) into the base class
	  + optimize handling of Variable and FragmentHandle objects per Generator class 
	

	* src\cmt_install_area.cxx (config): suppress echo in quiet mode

	* src\cmt_parser.cxx (install_test_setup_scripts): Protect tempfile against spaces in paths
	(install_test_cleanup_scripts): idem
	(install_setup_scripts): idem
	(install_cleanup_scripts): idem

2003-04-11  Christian Arnault  <carnault@lxplus051.cern.ch> 139

	* src/cmt_parser.cxx (do_run_sequence): Sequences are removed from
	cmt.cxx and implemented in a dedicated source file.

	* src/cmt_sequence.h (class SequenceRunner): Adding cmt_sequence.h
	(defining sequences)

	* src/cmt_sequence.cxx (filter): Adding cmt_sequence.cxx (extracted
	from cmt.cxx)

	* src/cmt_generator.cxx (get_all_files): Return a count of non
	empty file names.
	(build_library_makefile): Ensure that get_all_files is done only
	once.
	(build_document_makefile): Ensure that get_all_files is done only
	once (not completed yet)
	(class DocumentMakefileGenerator): Start creating an object model
	for makefile generators. Create derived classes of
	MakefileGenerator for Application, Library, document

	* src/cmt_constituent.h (class Constituent): Add excludes vector
	of exclusions

	* src/cmt_constituent.cxx (class constituents_action_iterator):
	Start implementing exclusion mechanisms on constituent sources.
	We add a -x=<pattern> cumulative option to the constituent syntax
	
2003-04-07    <arnault@lal.in2p3.fr> 138

	* src\cmt_generator.cxx: Add DIRNAME Variable
	Add new fragments for vcproj

2003-04-05    <arnault@lal.in2p3.fr> 138

	* mgr\requirements: define VC7 VC7debug tags for vsnet

	* src\cmt_generator.cxx (class MakefileGenerator): Add vsnetdir variable
	Add declarations for vsnet fragments
	(reset): Install vsnetdir as ..\VisualC
	(pseudoGUID): Implement an algorithm for creating GUIDs
	(build_vsnet_workspace): 
	(build_vsnet): 

	* src\cmt_generator.h (class Generator): Declare
	build_vsnet_workspace and build_vsnet methods

	* src\cmt_constituent.cxx (build_all_vsnet_files): Implement for vsnet
	(build_vsnet_file): Implement for vsnet

	* src\cmt_constituent.h (class Constituent): Add build_all_vsnet_files
	(class Constituent): Add build_vsnet_file

	* src\cmt_parser.cxx (class StandardMacroBuilder): Add macro
	<constituent>_GUID for vsnet.
	(parser): Implement cmt build vsnet actions

	* src\cmt_syntax.cxx (CommandParser): Add help about cmt build vsnet

	* src\cmt_parser.h (enum): Add action_build_vsnet

	* src\cmt.h (class Cmt): Add Visual Sudio.Net support (From Toby Burnett)

2003-04-03  Christian Arnault  <carnault@lxplus051.cern.ch> 137

	* src/cmt_parser.cxx (do_setup): Do a config action to the
	installation area in order to perform a cleanup operation during
	the source setup

	* src/cmt_install_area.cxx (config): Display a message when doing
	cleanup of installation areas.

	* mgr/requirements: Rename cmt_(un)install_command to cmt_(un)install_area_command
	Prepare CMTr14 tag from CMTr13

	* fragments/java_header (install_java_bin_dir): idem
	* fragments/library_no_share (install_lib_dir): idem
	* fragments/jar (install_java_lib_dir): idem
	* fragments/library (install_lib_dir): idem
	* fragments/application (install_bin_dir): idem

2003-04-02  Christian Arnault  <carnault@lxplus051.cern.ch> 136

	* src/cmt_symbol.cxx (build): Bug : the macro_prepend was NOT really prepending.

2003-03-28  Christian Arnault  <carnault@lxplus051.cern.ch> 136

	* src/cmt_parser.cxx (class StandardMacroBuilder): Add CMTVERSION standard macro

2003-03-28    <arnault@lal.in2p3.fr> 135

	* src\cmt_parser.cxx (configure_version_tag): Create three new predefined tags:
	   CMTv<n>
	   CMTr<n>
	   CMTp<n>
	to describe the current version, release and patch of CMT.

	* src\cmt_parser.h (enum): Adding PriorityVersion for marking the
	priority of the new automatic version tag

	* src\cmt_parser.cxx (configure_version_tag): Implement
	configure_version_tag method to create a tag for the version of
	CMT

	* src\cmt.h (class Cmt): Adding configure_version_tag method to
	create a tag for the version of CMT

	* src\cmt_symbol.cxx (all_set): Ensure that all path separators
	are back-slash on windows.

	* fragments\nmake\jar:  Adapt for the new convention (subdirectory for the CONSTITUENT)
	(install_java_lib_dir):  Add installation area mechanisms

	* fragments\nmake\java: Adapt for the new convention (subdirectory for the CONSTITUENT)

	* fragments\nmake\java_header (install_java_bin_dir): Add installation area mechanisms

2003-03-21  Christian Arnault  <carnault@lxplus051.cern.ch> 134

	* src/cmt_parser.cxx (parser): cmt run must be recursive for used
	packages (in order to get all environment variables set)

2003-03-20  Christian Arnault  <carnault@lxplus051.cern.ch> 133

	* src/cmt_symbol.cxx (show): Implement common SymbolValueList::show method.

	* src/cmt_symbol.h (class SymbolValueList): Factor out printing SymbolValues

	* src/cmt_symbol.cxx (create): Give use context in warning message

	* src/cmt_symbol.h (class Symbol): Add Use* argument to print
	context in warning messages

	* src/cmt_parser.cxx (vector_to_string): Ignore empty entries to
	avoid duplicate separators

2003-03-20  Christian Arnault  <carnault@lxplus051.cern.ch> 132

	* src/cmt_error.cxx (print): Consistently set the prefix "#CMT> "
	to all error messages and print outs
	* src/cmt_triggers.cxx (filter): idem
	* src/cmt_use.cxx (add): idem
	* src/cmt_generator.cxx (build_default_makefile): idem
	* src/cmt_symbol.cxx (create): idem
	* src/cmt_parser.cxx (do_show_macro): idem

	* src/cmt_symbol.cxx (create): Handle the unconsistent multiple
	declarations of sets as macros (and vice versa)

	* src/cmt_error.cxx (class Error): Add warning error text
	* src/cmt_error.h (class CmtError): Add warning error code

	* src/cmt_parser.cxx (reach_current_package): Suppress error print
	when requirements file is not found
	(do_show_macro): Improve the error message in the 
	"cmt show macro/set" command

2003-03-20  Christian Arnault  <carnault@lxplus051.cern.ch> 131

	* src/cmt_parser.cxx (reach_current_package): 
	* src/cmt_install_area.h (class CmtInstallAreaMgr): Factor out the
	construction of the current installation area

	* src/cmt_install_area.cxx (setup): Filters out "default path" for
	constructing the current installation area
	(config): idem

	* src/cmt_cmtpath_pattern.cxx (apply): Suppress "default path" (ie
	CMTPATH of CMT) from application of cmtpath_patterns

	* src/cmt_parser.cxx (get_cmt_path_sources): Add accessor to cmtpath_sources

	* src/cmt.h (class Cmt): Add accessor to cmtpath_sources

2003-03-18  Christian Arnault  <carnault@lxplus051.cern.ch> 130

	* src/cmt_cmtpath_pattern.cxx (apply): Optimize the substitution
	of "<path>" in cmtpath_patterns by avoiding a loop over path items
	when the pattern does not contain "<path>" at all

2003-03-13  Christian Arnault  <carnault@lxplus051.cern.ch> 130

	* mgr/requirements: Add -classpath $(src) to java compilation

	* src/cmt_generator.cxx (analyze_file): Default copy action for
	files with no language is applied only to java contexts

2003-03-12  Christian Arnault  <carnault@lxplus051.cern.ch> 130

	* fragments/java_copy: Use this fragment for default action on
	sources with no language

	* src/cmt_generator.cxx (module_file_action): Install default
	(copy) action for source files with no language.

	* fragments/java_header: Building jar files with * rather than *.class

	* fragments/jar: Building jar files with * rather than *.class

	* fragments/java_header: Syntax fix for generating manifest file

2003-03-11  Christian Arnault  <carnault@lxplus051.cern.ch> 129

	* src/setup.zsh: Add show cmtpath_patterns option

	* src/cmt_generator.cxx (analyze_file): Add constituent sub
	directory to output for java files

	* fragments/jar: Add constituent sub directory to ../classes to
	store *.class and jar files

	* fragments/java_header (install_java_bin_dir): Apply installation
	area mechanisms for java application

	* mgr/requirements: Need both share/bin and share/lib for installarea

2003-03-10  Christian Arnault  <carnault@lxplus051.cern.ch> 129

	* src/cmt_cmtpath_pattern.cxx (apply): CMTPATH patterns should be
	applied in revers order

	* mgr/requirements: bug fix (missing backslash)

	* src/cmt_install_area.cxx (config): Bug fix

2003-03-09    <ARNAULT@lal.in2p3.fr> 128

	* src\cmt_install_area.cxx (setup): Make use of the cmt_installarea_prefix macro
	(config): idem

2003-03-08    <ARNAULT@lal.in2p3.fr> 128

	* mgr\requirements: Define the cmt_installarea_prefix macro to
	parameterize the common prefix to be added to all CMTPATH entries
	for installation areas

2003-03-06    <ARNAULT@lal.in2p3.fr> 127

	* src\cmt_install_area.cxx (config): Introduce the new macro
	cmt_installarea_paths used to declare all PATHS inside the
	installareas that will need to be checked for consistency when
	doing cmt config

	* src\cmt_install_area.h (class CmtInstallAreaMgr): Remove
	set_path, add_path_pattern, apply_path_patterns function since
	they are all managed through cmtpath_patterns

	* src\cmt_parser.cxx (do_show_cmtpath_patterns): Do set_standard_macros

	* src\cmt_install_area.cxx (setup): Launch the CmtPathPattern::apply_all ()

	* src\cmt_parser.cxx (parser): Add parsing of cmt show cmtpath_patterns

	* src\cmt_syntax.cxx: Add parsing of cmt show cmtpath_patterns

	* src\cmt_parser.h (enum): Add action_show_cmtpath_patterns

	* src\cmt_database.cxx (cmtpath_patterns): Add CmtPathPatternVector object

	* src\cmt_database.h (class Database): Add CmtPathPatternVector

	* src\cmt_cmtpath_pattern.cxx: Install partial reproduction of cmt_pattern.cxx

	* src\cmt_cmtpath_pattern.h: Create cmt_cmtpath_pattern.h
	(class CmtPathPattern): Install partial reproduction of cmt_pattern.h

	* mgr\requirements: Add the source file cmt_cmtpath_pattern.cxx

	* src\cmt_syntax.cxx (class KwdCmtPathPattern): add parser object
	for the new CommandCmtPathPattern.

	* src\cmt_parser.h (enum): Add CommandCmtPathPattern to declare
	CMTPATH patterns to be applied onto all CMTPATH items.

2003-03-06    <ARNAULT@lal.in2p3.fr> 126

	* src\cmt_symbol.cxx (all_set): Add debug informattion

	* src\cmt_parser.cxx (do_run): Do set_standard_macros before
	running

2003-03-06  Christian Arnault  <carnault@lxplus051.cern.ch> 125

	* src/cmt_system.h (class CmtSystem): Adding putenv to set environment variables
	* src/cmt_system.cxx (putenv): idem

	* src/cmt_symbol.cxx (class SetBuilder): The build and clean
	function should return string object rather that referencing the
	string object attribute (protection against recursive calls)
	(class PathBuilder): idem
	(class MacroBuilder): idem
	(class ScriptBuilder): idem
	(resolve_value): Add comments and improve variable naming
	(resolve_value): idem
	(resolve_value_for_macros): idem
	(suppress_OS_delimiters): idem

	* src/Makefile.header (common_target): Use /tmp to 
	create temporary (and disposable) make fragments.  Rearrange

	* mgr/Makefile (cpp): Provide support to build on LinuxDebug 

	* fragments/constituents_header (cmt_lock_setup): Use /tmp to
	create temporary (and disposable) make fragments.  Rearrange
	statements in the building of $(tag).make so as to ensure that
	echo statements are only done when things are ok.

	* src/cmt_parser.cxx (install_cleanup_scripts): Define CMTROOT
	only if it is NOT defined yet. Goal is to keep user defined
	version of CMT.
	(install_setup_scripts): idem
	(install_test_cleanup_scripts): idem
	(install_test_setup_scripts): idem

2003-02-27  Christian Arnault  <carnault@lxplus051.cern.ch> 125

	* src/cmt_symbol.h (class ValueBuilder): due to recursivity,
	Builder function cannot share the temporary string value

2003-02-26  Christian Arnault  <carnault@lxplus051.cern.ch> 125

	* src/cmt_parser.cxx (do_run): Add Symbol::all_set
	(do_broadcast): idem (before the loop over packages)

	* src/cmt_symbol.cxx (all_set): Install the mechanism to set
	environment variables (using putenv) into CMT. This function is
	called before running the CmtSystem::execute function.
	
	* src/cmt_symbol.h (class Symbol): Remove the tabs argument of the
	print and print_clean methods (obsolete)

	* src/cmt_symbol.cxx (resolve_value): rename the argument for the
	symbol name (it applies for any symbol, not just for macros)
	(resolve_value): Improve comments
	(resolve_value_for_macros): Improve comments
	(resolve_macro_value): factor out at least one of the resolve macro algorithms

2003-02-24  Christian Arnault  <carnault@lxplus051.cern.ch> 124

	* src/cmt_generator.cxx (build_dependencies): Surrounding
	dependencies by quotes does not please gmake. We have to check
	what happens on Darwin (ie what about path names with spaces?)
	
2003-02-14    <ARNAULT@lal.in2p3.fr> 123

	* mgr\requirements: Use XCOPY instead of copy for the install
	commands to support the directory copy

	* fragments\installer: Suppress the need to specify install_dir
	with trailing slash

	* fragments\nmake\installer: Add installer for Windows

	* src\cmt_generator.cxx (build_dependencies): Add double quotes to
	support file names with non standard characters (eg spaces) (not
	only on Windows).	
	(filter_path): Add the filter operation to work on one sigle
	file. The filter_paths function becomes obsolete and is removed.
	(analyze_document_file): Use filter_path instead of filter_paths
	(proto_file_action): idem
	(module_file_action): idem
	(build_library_makefile): idem
	(build_document_makefile): idem
	(build_dependencies): idem
	(build_document_makefile): Support sources being directories
	(module_file_action): idem

	* mgr\cmt_install_action.bat: idem
	* mgr\cmt_uninstall_action.bat: idem
	* fragments\nmake\library_no_share (install_lib_dir): idem
	* fragments\nmake\library (install_lib_dir): idem
	* fragments\nmake\application (install_bin_dir): idem

2003-02-11  Christian Arnault  <carnault@lxplus051.cern.ch> 122

	* src/cmt_cvs.cxx (class CvsImplementation): Adding explicit error
	message when base directory cannot be created during the checkout.

2003-02-06  Christian Arnault  <carnault@lxplus051.cern.ch> 121

	* src/Makefile.header (clean): Remove the pseudo config target for
	the clean target
	
2003-02-04  Christian Arnault  <carnault@lxplus051.cern.ch> 120

	* src/cmt_use.cxx (add): Add protection against recursive use
	statement to current_use

2003-02-04    <ARNAULT@lal.in2p3.fr> 119

	* src\cmt_use.cxx (need_new): Add protection against recursive use
	statement to current_use

2003-01-31  Christian Arnault  <carnault@lxplus051.cern.ch> 118

	* mgr/requirements : library_prefix should be empty for WIN32

	* src/cmt_parser.cxx (install_setup_scripts): Protect the setup
	script generation against cases where : structuring style is set
	to without_version_directory and verion tag cannot be determined
	(eg. if the version file does not exist). Then, the -version=xxx
	option is suppressed from the setup script generation.
	(install_test_cleanup_scripts): idem

	* src/Makefile.header (common_target): Suppress a debug settings

2003-01-28    <ARNAULT@lal.in2p3.fr> 117

	* src\cmt_install_area.cxx (instance): Suppress the production of
	LD_LIBRARY_PATH installation specs for WIN32

	* fragments\nmake\library_no_share (install_lib_dir): 
	* fragments\nmake\library (install_lib_dir): 	
	* fragments\nmake\application (install_bin_dir): Add install area mechanisms for WIN32

2003-01-24  Christian Arnault  <carnault@lxplus032.cern.ch> 116

	* src/cmt_install_area.cxx (instance): The constuction of the
	instance also declares the path patterns.

	(setup): Make use of the path_patterns to generate CMT statements

	(get_install_area): The current install area is preserved in the
	InstallAreaMgr instance (singleton).

	(set_path): (only used internally) build a path expression from a pattern

	(setup): Provide additional -L... options towards the install area
	for use_linkopts ad shlibbuilder
	
	(config): Perform the cleanup operation onto the current installation area:
	  check the all ref-files still refer to existing files.
	  if not erase the corresponding installed file.

	* src/cmt_install_area.h (class CmtInstallPathPattern): New class
	for storing generic patterns for (PATH/directories) duets
	generation and management inside install area mechanisms.  The
	point is to describe special conventions for things to be
	installed within the installation area.

	We describe that in terms of a set of :
	
	   o path-like variable names
	   o subdirectory patterns bellow $CMTINSTALLAREA

	All those patterns will be used to configure the installation area
	and to expand the specified PATH-like variables.

	   Ex: 
	      PATH            is associated with ${CMTCONFIG}/bin
	      LD_LIBRARY_PATH is associated with ${CMTCONFIG}/lib
	      CLASSPATH       is associated with share/bin

	   we could think of having those patterns defined in the
	   requirements file.

	* src/cmt_parser.cxx (do_remove_library_links): Handle symlinks
	induced by the <package>_libraries macros through INSTALLAREA
	mechanisms
	(do_build_library_links): (idem)
	(set_standard_macros): Setup operations for InstallArea have been
	grouped using InstallPathPatterns
	(do_config): Add cleanup of install area

2003-01-23  Christian Arnault  <carnault@lxplus032.cern.ch> 115

	* src/cmt_syntax.cxx (class KwdBuildStrategy): Support extension
	of build_strategy with install_area mechanisms.

	* src/cmt_system.cxx (mkdir): Suppress the error message when one
	cannot create a directory

	* fragments/application (install_bin_dir): 
	* fragments/library_no_share (install_lib_dir): 
	* fragments/library (install_lib_dir): Use CMTINSTALLAREA instead of INSTALLAREA

	* src/cmt_parser.cxx (do_build_library_links): Use install area
	mechanisms when the build_strategy is active rather than
	symlinking into the binary directory of the package.

	(set_standard_macros): Add the generation of CMTINSTALLAREA
	environment variable, the prepending of PATH, LD_LIBRARY_PATH,
	CLASSPATH when install_area is active

	* src/cmt_install_area.cxx: 
	* src/cmt_install_area.h (class CmtInstallAreaMgr): New class for
	managing install area mechanisms.

	* src/cmt_parser.h (enum): Add InstallArea in BuildStrategy

2003-01-22  Christian Arnault  <carnault@lxplus032.cern.ch> 114

	* src/cmt_use.cxx (find_index): Bad use of a static local variable
	implying wrong management of -import= options
	(get_index): Adding accessor function to m_index private attribute

	* src/Makefile.header (.DEFAULT): Remove temporary debugging action 

2003-01-21  Christian Arnault  <carnault@lxplus032.cern.ch> 113

	* src/cmt_symbol.cxx (all_print): Restore two-steps process for
	generating setenv calls (first normal env. variables then path-like)
	(all_print_clean): 

2002-12-20  Christian Arnault  <carnault@lxplus032.cern.ch> 112

	* src/cmt_parser.cxx (do_show_strategies): put a space character 

	* mgr/Makefile (cpp): Add the -O2 compiler option on default platforms

	* mgr/requirements: Privately try the construction of the new CMTCONFIG

	* src/cmt_parser.cxx (parse_arguments): Add cmt --version equivalence to cmt version

2002-12-19  Christian Arnault  <carnault@lxplus032.cern.ch> 111

	* mgr/requirements: Change the name of cmt_cc_version.sh to
	cmt_dcc_version.sh for case insentivity of Darwin file system

	* fragments/application (install_lib_dir): 
	* fragments/library (install_lib_dir): 
	* fragments/library_no_share (install_lib_dir): 

2002-12-18  Christian Arnault  <carnault@lxplus032.cern.ch> 110

	* src/cmt_symbol.cxx (resolve_value_for_macros): We have to
	suppress the conversion from %xxx% to $(xxx) on non-windows
	platform, since there were some occurrences of %xxx% patterns,
	which have a meaning in unix world!!

	* src/Makefile.header (.DEFAULT): Only run once sub-makefile

	* src/cmt_symbol.cxx (all_print_clean): Keep order of generation
	of sets and paths (instead of sets then paths)

	* mgr/cmt_cc_version.sh: Helper scripts for compiler query commands
	* mgr/cmt_cxx_version.sh: 
	* mgr/cmt_CC_version.sh: 
	* mgr/cmt_gcc_version.sh: 

	* mgr/cmt_filter_version.sh: 

	* fragments/constituents_header (first): Make use of cmt show setup
	
	* src/cmt_parser.cxx (do_show_setup): Display sections rather than from the Makefile
	
	* src/cmt_use.cxx (class use_action_iterator): action_show_setup
	traverses the private subtrees (like show_uses)

	* src/cmt.h (class Cmt): 
	* src/cmt_parser.cxx (do_show_setup): 
	* src/cmt_parser.h (enum): Add action_show_setup for grouping show uses,tags,path

	* mgr/requirements: Manage a common (sh/csh) style for output
	redirection for system query commands

	* fragments/library_no_share (install_lib_dir): 
	* fragments/library (install_lib_dir): 
	* fragments/application (install_bin_dir): Use cmt_install_command
	instead of install_command for install area mechanisms to avoit
	conflicts with the installer document generator

2002-12-18    <ARNAULT@lal.in2p3.fr> 109

	* src\cmt_parser.cxx (do_show_strategies): Add display of setup strategy
	(print_context): Apply the build strategy

	* src\cmt.h (class Cmt): Add get/set current_setup_strategy methods
	(class Cmt): Add m_current_setup_strategy attribute

	* src\cmt_parser.h (enum): Add SetuStrategy enumeration

	* src\cmt_syntax.cxx (class KwdSetupStrategy): Add SetupStrategy class 

	* src\cmt_parser.h (enum): Add setup_strategy keyword to control
	the production of <PACKAGE>CONFIG and <PACKAGE>ROOT env. variables

	* src\cmt_parser.cxx (class StandardMacroBuilder): Add few debug printouts

	* src\cmt_use.cxx (find_index): The returned index must be the
	m_index attribute of the Use object rather than the index in the
	use list of the package!!

2002-12-16  Christian Arnault  <carnault@lxplus032.cern.ch> 108

	* src/Makefile.header (binclean): Add a quick binclean target
	(all): prepend a systematic config target 

	* fragments/constituents_header (all): Suppress dummy messages in gmake all and config

2002-12-16    <ARNAULT@lal.in2p3.fr> 107

	* src\cmt.h (class Cmt): do_help remembers of the current action
	being parsed to have cmt help action

	* src\cmt_syntax.h (class CommandParser): Command parsing
	mechanisms. So far only the help is handled. General map-based
	parsing mechanism is foreseen

	* src\cmt_parser.h (enum ActionType): Add global actions for
	build, check, show only for error and help management

	* src\cmt_syntax.cxx (show): Command Help management introduced (will be improved)

	* src\cmt_parser.cxx (parse_arguments): Improve command help with SyntaxParser  

	* mgr\requirements: Adding specs for query commands on WIN32

2002-12-12  Christian Arnault  <carnault@lxplus032.cern.ch> 106

	* mgr/Makefile: Remove the mail sending after CMT rebuild... (!!!)

	* src/cmt_symbol.cxx (resolve_macro_value): Detects patterns like:
	`$(macro-name)` within symbol definitions. The specified macro is expected 
	to contain a shell command that will then be executed when expanding 
	the macro.

	* mgr/requirements: Add some system information queries:
	hardware
	system_version
	compiler_version

	* mgr/cmt_filter_version.sh: Add a filtering script for system version
	informations.

2002-12-12    <ARNAULT@lal.in2p3.fr> 105

	* mgr\requirements:  make use of SyntaxParser
	* src\cmt_triggers.cxx: idem
	* src\cmt_use.cxx: idem
	* src\cmt_parser.cxx: idem
	* src\cmt_pattern.cxx: idem

	* src\cmt_syntax.cxx: 
	* src\cmt_syntax.h (class Kwd): Introduce the new syntax parsing
	mechanism. It is based on a cmt_map of keyword objects. All requirements parsing 
	operations are now implemented in the SyntaxParser singleton.

	* src\cmt_parser.cxx (do_build_library_links): Introduce the
	cmt_symlink_cmd macro to override the internal management of
	symlink creation in case this is unavailable (eg on Windows)

2002-12-11  Christian Arnault  <arnault@lal.in2p3.fr> 104

	* src/cmt_parser.cxx (do_set_versions): Make use of cmt broadcast
	to install version files in all packages. Inherit broadcast syntax.
	
	(do_broadcast): Add possibility to use template like in patterns
	Start with <version>.

	* mgr/Makefile (cpp): Add profiling option

	* fragments/check_java (check): Add run options

	* src/cmt_use.cxx (find): Use Package grouping of uses
	(find_index): Use index registration information
	(move): Use index registration information
	(reorder): idem
	(need_new): Revisit the algo to avoid useless multiple reading of requirements files 
	(add): Use index registration information
	(operate): Improve for without version directory style
	(Package): Introduce Package grouping of Use objects 

	* src/cmt_parser.cxx (do_set_versions): Use Package::is_cmt feature.

	* src/cmt_string.cxx (replace): Optimize by reducing the calls to strlen.

	* src/cmt_generator.cxx (build_dependencies): Use Package::is_cmt feature.

	* src/cmt_include.cxx (print_all): Use Package::is_cmt feature.

	* src/cmt_script.cxx (all_print_clean): Use Package::is_cmt feature.

	* src/cmt_database.cxx (pattern_list_map): Discard dump features

	* src/cmt_database.h (class Database): Restore tag management.
	Introduce PatternList and Package management

	* src/cmt_project.cxx (class ProjectMgr): Suppress tag management
	from projects. Make it back to global management (from Database)

	* src/cmt_pattern.h (class PatternList): Introduce PatternList
	class to group pattern by names. This class contains a list of
	Patterns of the same name but originating from different uses.

	* src/cmt_use.h (class Use): renaming uses() to get_ordered_uses() and
	all_uses() to get_instances ()

2002-12-10  Christian Arnault  <arnault@lal.in2p3.fr> 103

	* src/cmt_project.h (class Project): Add a tag_map to manage tags 

	* src/cmt_tag.cxx (add): Add a tag_map to manage tags

	* src/cmt_tag.h (class Tag): Introduce a map of tags

	* src/cmt_database.cxx (symbol_map): install a map of symbols

	* src/cmt_database.h (class Database): install a map of symbols

	* src/cmt_symbol.cxx (create): Use symbol map to find existing symbols
	(find): idem
	(symbol_map): access to the map of symbols from the database
	(clear_all): clear the database and the map

	* src/cmt_symbol.h (class Symbol): Introduce the new typedef
	SymbolMap for a cmt_map of Symbols

	* src/cmt_map.h: Introduce cmt_map.h implementing a map (binary tree)

	* src/cmt_regexp.cxx (cmt_regexp): Rename cmt_node to cmt_regexp_node
	* src/cmt_regexp.h: Rename cmt_node to cmt_regexp_node

2002-12-09  Christian Arnault  <arnault@lal.in2p3.fr> 102

	* fragments/check_java (check): Add run options (global and local)

2002-12-09  Christian Arnault  <carnault@lxplus032.cern.ch> 101

	* mgr/requirements: Fix typo (trailing backslash)

	* src/cmt_parser.cxx (parser): Add set versions operation to perform a
	global set version onto all used packages.
	(do_set_versions): Start implementing a draft scenario
	(parser): the set versions action require parsing the use graph.

	* src/cmt.h (class Cmt): idem.
	
	* src/cmt_parser.h (enum): idem

	* src/cmt_parser.cxx (configure_current_package): Set the default
	version expression in absence of both version directory AND
	version file to "v*" (instead of "v0")

	* src/Makefile.header (binclean): Add new standard target for
	erasing at once the $(bin) directory

2002-12-08    <ARNAULT@lal.in2p3.fr> 100

	* src\cmt_parser.cxx (do_set_version): 
	(scan_path): Improving the management of various structuring styles for the FileScanner.
	(do_show_strategies): Displays structuring style in show_strategies
	(reach_current_package): Prepare the removal of automatic addition of the
	current package area to CMTPATH...
	(do_config): Fix discovery of structuring style
	(configure_current_package): Fix discovery of structuring style
	(class SequenceRunner): Accept version argument in sequence files

	* src\cmt.h (class Cmt): 
	* src\cmt_parser.h (enum): Add set version command to install version.cmt file

	* src\cmt_system.cxx (is_version_directory): Handle wild cards in
	version ids detection

	* mgr\requirements: Add Darwin definitions

	* mgr\cmt_make_shlib_common.sh (temp_shlib): Protect against
	module files with space in their names

	* mgr\requirements: try to remove CMT/v from PATH rather then CMT
	only so as to keep subpackages of CMT

	* src\cmt_use.cxx (set_auto_imports_state): fix a bug on use pointer comparisons.

	* fragments\nmake\constituent: 
	* fragments\nmake\constituents_header (dirs): fix naming scheme : only .nmake

	* mgr\NMake (cmt): protect VisualC.nmake generation against
	reminder of the physical location of the rebuild

	* src\demo\demoA\requirements: Add PATH towards java on Windows

	* mgr\NMake: Add a target to re-generate VisualC.nmake inside CMT
	so as to have proper nmake demo

	* mgr\requirements: provide debug_option for WIN32 platform

	* fragments\nmake\make_header (tags): Suppressed
	$(CMTCONFIG),$(CMTEXTRATAGS) and only keep $(CMTEXTRATAGS)

	* fragments\nmake\constituents_trailer: added to NMake family
	* fragments\nmake\group: added to NMake family 

2002-12-05    <ARNAULT@lal.in2p3.fr> 99

	* src\cmt_vector.h (cmt_vector): replace static int frame_size by
	enum {frame_size} to C++ ANSI compliance.

	* src\cmt_use.cxx (BestFitSelector::operate): When structurig
	style is withut-version-directory, the version field of the
	package may still contain wild cards. This has to be considered
	when checking compatibility.

2002-12-04  Christian Arnault  <carnault@lxplus032.cern.ch> 98

	* src/cmt_use.cxx (set_auto_imports_state): bug fix (corresponding to v1r12p20021129)

2002-10-30  Christian Arnault  <carnault@lxplus032.cern.ch> 97

	* src/cmt_vector.h (cmt_vector): define frame_size as a static
	const int instead of enum

2002-10-15  Christian Arnault  <carnault@lxplus032.cern.ch> 96

	* src/cmt_use.cxx: Protect against use objects badly recorded
	within auto_imports_state vectors

	* src\cmt_parser.cxx (scan_path): Fix algo to scan packages to
	cope with no-version style
	(class StandardMacroBuilder): Fix no-auto-imports algo 

2002-09-24  Christian Arnault  <arnault@lal.in2p3.fr> 95

	* mgr/ChangeLog.php: Introduce the online filter for ChangeLog file

	* doc/documents.html: Use PHP to filter out ChangeLog

	* mgr/Makefile (docs): Install ChangeLog and ChangeLog.php into web site

	* src/setup.zsh: Add an empty leading line to avoid shell problems...

	* src/Makefile.header (config): force the rebuild of $(tag).make

2002-08-06  Christian Arnault  <arnault@lal.in2p3.fr> 94

	* fragments/library: Split action list so as to force the rebuild
	of shared libraries when it has been lost while shstamp is still
	there.

2002-06-21    <arnault@lal.in2p3.fr> 93

	* src/cmt_parser.cxx (class SequenceRunner): Add support for comments in the sequence files
	(do_show_macro_names): 
	(do_show_set_names): 
	(print_symbol_names): 
	
	(class StandardMacroBuilder): prepare the production of
	<constituent>_use_linkopts but let it unsused for the time being

	(class StandardMacroBuilder): fix a typo
	
	(class StandardMacroBuilder): fix a bug

	* src/cmt_parser.h (enum): 
	* src/cmt.h (class Cmt): Adding do_show_macro_names,
	do_show_set_names, print_symbol_names functions

	* src/setup.tcsh: 
	* src/setup.zsh: move the -quiet option before verb to avoid confusion with new syntax for show xxxs

	* src/demo/tprivate.cmt: 
	* src/demo/demo1.cmt: improve test sequences

	* mgr/requirements: add the macro preproc to prepare new scheme
	for dependency generation using cpp -MD

	* mgr/Makefile (cpp): Specialize default cpp according to the platform
	(hosts): we don't need BOOL hosts anymore
	(demo): the demo sequence now exploits the sequence runner of CMT
	(tprivate): new test sequence on private uses.

	* mgr/ChangeLog.awk: Adding this awk script to convert the ChangeLg file int HTML format

	* doc/CMTDownload.html: 
	* doc/download.html: 
	* doc/install.html: doc improvements

	* fragments/application: Temporarily stop using $(${CONSTITUENT}_use_linkopts)

	* src/NMakefile.header (tag): 
	* src/Makefile.header (tags): 
	* fragments/nmake/constituents_header (tag):
	* fragments/nmake/make_header (tag):
	* fragments/constituents_header (tag):
	* fragments/make_header (tag): Add $CMTCONFIG to tags

2002-05-29    <arnault@lal.in2p3.fr> 92

        * src\cmt_database.cxx: 
        * src\cmt_database.h: 
        * src\cmt_project.h (class Project): 
        * src\cmt_project.cxx (Project): Introduce Project management

        * mgr\requirements: Define the default project CMT

        * src\cmt_parser.h (enum): 
        * src\cmt_parser.cxx (select): 
                Introduce apply_tag statements<br>
                Introduce first iteration on project management
        
        * src\cmt_symbol.cxx (action): replace direct access to member of
        tag objects by accessor functions.

        * src\cmt_tag.cxx (add): 
        * src\cmt_tag.h (class Tag): 
                Clean up the for private members only<br>
                introduce action_apply to activate a tag from a requirements file<br>
                introduce tag expressions -> this defines primary tags versus
                computed ones. Selection is either obtained from m_selected for
                primary tags or computed from operands otherwise.
                so far only AND expressions are available.

2002-05-28  Christian Arnault  <arnault@lal.in2p3.fr> 91

        * src/cmt_symbol.cxx (select_last): Make use of Tag::is_selected 

        * src/cmt_tag.cxx (is_selected): 
        * src/cmt_tag.h (class Tag): Add and_operands for defining tags
        from a bool expression of primary tags. Move selected to private
        area to ensure usage of is_selected which may compute the
        selection state from operands. The embedded state is now reserved
        to primary tags.

2002-05-28  Christian Arnault  <carnault@lxplus040.cern.ch> 90

        * src/cmt_awk.cxx (class Parser): Replace the basic parsing engine
        by the local Parser class. It takes care of both EOL styles (Unix
        and Win) and of trailing backslashes for continuations.

        * src/cmt_awk.h (class Awk): Added a function inc_line_number to
        increment the line number from the external text parser.

        * src/cmt_cvs.cxx (filter): Added debug messages

        * src/cmt_parser.cxx (do_awk): 
        * src/cmt_parser.h (enum): Added action_awk
        * src/cmt.h (class Cmt): Added do_awk function for testing the Awk operator.

2002-05-27    <arnault@lal.in2p3.fr> 89

        * doc\todo.html: Adding entries

2002-05-24  Christian Arnault  <carnault@lxplus012.cern.ch> 88

        * src/cmt_cvs.cxx (class CvsImplementation): fix few problems with
        no_version_directory.

2002-05-23  Christian Arnault  <arnault@lal.in2p3.fr> 87

        * src/demo/scenario.awk: Adapt to handle without_version_directory style

        * src/demo/demo1.cmt: fix a typo 

        * src/cmt_parser.cxx (parse_requirements): Fixing bug on private
        macros for without_version_directory style

        * mgr/Makefile (demo): Improving the demo scenario manager

2002-05-22  Christian Arnault  <arnault@lal.in2p3.fr> 86

        * doc/download.html: 
        * doc/CMTDownload.html: 
        * src/cmt_version.h (CMTVERSION): preparing tagging for v1r13...

        * src/cmt_use.h (class Use): new helpers

        * src/cmt_use.cxx (class use_action_iterator): re-design the scope
        hiding for private uses (was buggy for first level private uses)
        (reach_package): structuring style
        (get_full_path): new helper for centralizing the full package path
        computation
        (reduce_path): new helper to normal form with $<PACKAGE>ROOT
        (get_paths): add debug prints
        (show_sub_uses): structuring style

        * src/cmt_system.h (class CmtSystem): 
        * src/cmt_system.cxx (reduce_file_separators): helper to reduce
        multiple file separators into one
        (is_package_directory): structuring style

        * src/cmt_pattern.cxx (apply): add debug prints

        * src/cmt_parser.h (enum): Add CmtStructuringStyle options

        * src/cmt_parser.cxx: 
         Introducing support for structuring style. 
         m_current_structuring_style global variable
         (scan_path): 
         (scan_package): 
         (run): 
         (PackageCollector::run): 
         (configure): calling configure_current_structuring_style
         (configure_current_package): 
         (configure_current_structuring_style): new method
         (do_broadcast): use Use::get_full_path
         (do_config): 
         (do_create): 
         (do_help): 
         (do_lock): suppress unused local variable
         (do_remove): 
         (do_show_macros): add pattern for selection instead of default '*'
         (do_show_sets): idem
         (do_unlock): suppress unused local variable
         (get_current_strategy): new method
         (install_cleanup_scripts): install cleanup scripts on windows
         (load): 
         (parse_arguments): re-number argument array
         (parse_arguments): support arguments for cmt show macros
         (parse_arguments): support arguments for cmt show sets
         (parse_arguments): -with_version_directory option
         (parse_arguments): -without_version_directory option
         (parse_requirements): 
         (parser): support arguments for cmt show macros
         (parser): support arguments for cmt show sets
         (print_context): use Use::get_full_path
         (print_macros): selection pattern (reg. expression) on symbols
         (reach_current_package): 
         (set_standard_macros): add getting pwd
         (set_standard_macros): structuring style

        * src/cmt_generator.cxx 
         (SourceFile::set): use CmtSystem::reduce_file_separators 
         (prepare_use_context): idem
         (prepare_use_context): use Use::get_full_path
         (set_full_name): idem
         (build_make_setup): idem

        * src/cmt_fragment.cxx
         (print): use Use::reduce_path factorization
         (locate): use Use::get_full_path factorization
         (locate): Support structuring style options

        * src/cmt_cvs.cxx: 
          + need cmt.h for accessing structuring style
          + support for structuring style

        * src/cmt.h (class Cmt): 
        Adding support for structuring style
	
        do_show_macros now accepts arguments

        do_show_sets now accepts arguments

        print_macros now accepts a pattern for selecting symbols

        * src/demo/tprivate.cmt: Scenario for testing private uses and
        -no_auto_imports

        * src/demo/demo1.cmt: Scenario for the general test/demo sequence. 
        
        * src/demo/scenario.awk: Add a script for installing
        scenarios. This script can
          - create packages
          - install text files relatively to the packages.

        * mgr/Makefile (demo): Replace the copy operations for the demo
        targets by an awk-based mechanism (only for Unix -> keep old
        mechanism for Windows). The scenario.awk script is able to create
        packages and install text files into the newly created packages.

        Add a target (a scenario) for testing private uses and
        -no_auto_imports

        Add an help target describing all special targets.

        * fragments/constituents_header (first): Differentiate setup.make
        with the package name when $(bin) is common.

2002-05-17  unknown  <arnault@lal.in2p3.fr> 85

        * doc/todo.html: Adding a web page for ToDo list, and bug reports.

        * src/cmt_parser.cxx (install_test_setup_scripts): 
        * src/cmt_parser.cxx (install_test_cleanup_scripts): Fix the bug
        to "source setup" standalone with a current directory outside the
        package itself.

2002-05-15  Christian Arnault  <arnault@asc.lal.in2p3.fr> 84

        * src/cmt_version.h (CMTVERSION): Preparing the new tag v1r12p20020515

        * doc/CMTDoc.html: Upgrade the documentation.

        * src/setup.tcsh:
        * src/setup.zsh: Add all_tags to the list of know show options

        * src/cmt_tag.cxx (show_definition): 
        * src/cmt_tag.h (class Tag): Added Tag::show_definition
        (unfiltered show method wrt the selected state)

        * src/cmt_parser.cxx (do_help): Implement the new cmt show all_tags command.

        * src/cmt.h (class Cmt): Added Cmt::do_show_all_tags ()

        * src/cmt_parser.h (enum): Added action_show_all_tags

        * mgr/requirements: remove -I$(inc) from default value of ccomp
        macro (no longer needed and has side effects)

        * src/cmt_use.cxx (add): Protect against null use pointer when not found.

        * src/cmt_tag.cxx (action): do increase the tag ref list when
        overridden. It used to be un-overridden...

        * fragments/constituents_trailer (clean): add a semi-colon between the two shell commands.
        
        * src/cmt_system.cxx (create_symlink): Explicit .c_str() in system calls.

        * doc/table.html: setup a direct URL to CVSWeb rather than through
        an intermediate page

2002-04-12  Christian Arnault  <carnault@lxplus030.cern.ch> 84

        * doc/CMTDoc.html: 
        * src/setup.zsh: 
        * src/setup.tcsh: 
        * src/cmt_parser.cxx (do_help): 
        * src/cmt.h (class Cmt): 
        * src/cmt_parser.h (enum): introduce action_show_all_tags do
        display all defined tags (while action_show_tags only shows all
        active tags)

        * fragments/constituents_trailer (clean): typo in the clean target.

2002-04-11    <arnault@lal.in2p3.fr> 83

        * src\cmt_parser.cxx (print_clean): Suppress the unset of CMTCONFIG

2002-04-10    <arnault@lal.in2p3.fr> 82

        * fragments\library: 
        * fragments\library_no_share: Suppress the experimental change for 
        erasing the object files after filling the library

2002-04-10  Christian Arnault  <carnault@lxplus044.cern.ch> 81

        * src/cmt_version.h: preparing tagging for v1r12


        
        * mgr/requirements: Adapt to Darwin

        * src/cmt_symbol.cxx (action): 
        * src/cmt_use.cxx (action): 
        * src/cmt_use.h (class Use): Introduce m_has_native_version

        * mgr/requirements: Add standard $(library_prefix) and $(library_suffix) macros

        * mgr/cmt_make_shlib_common.sh (temp_shlib): Set verbose mode to
        the linker command and control it through the QUIET macro. Fix the
        temporary expansion directory
        
        * mgr/cmt_make_shlib_common.sh (temp_shlib): 
        * fragments/library_header: 
        * fragments/cleanup_library: Add standard $(library_prefix) and $(library_suffix) macros

        * fragments/constituents_trailer (makefilesclean): 
        * fragments/constituent: remove specific makefile fragments for
        the constituents (instead of *.make)

        * fragments/library_no_share: 
        * fragments/library: erase *.o files after filling the library

        * src/cmt_use.h (class Use): Add use::sub_use_auto_imports to save
        specifications on sub uses. Add Use::set_auto_imports to possibly
        promote auto_imports to sub uses when it is changed from Off to
        On.

        * src/cmt_parser.h (enum): 
        * src/cmt_pattern.cxx (show_all_applied_patterns): 
        * src/cmt_pattern.h (class Pattern): adding Pattern::show_all_applied_patterns ()
        * src/setup.tcsh: 
        * src/setup.zsh: 
        * src/cmt_parser.cxx (do_help): 
        * src/cmt.h (class Cmt): Adding Cmt::do_show_applied_patterns for
        the new command "cmt show applied_patterns"

2002-04-04  Christian Arnault  <carnault@lxplus044.cern.ch> 80

        * src/cmt_use.cxx (add): Protect against duplicated registration of
        current_use.

        * src/cmt_parser.cxx (install_setup_scripts): Append an empty line
        at the end of the generated setup script (problem on some shells)
        
        * src/cmt_parser.cxx (do_create): 
        * src/cmt.h (class Cmt): Change the signature of the do_create
        function to receive its arguments from the "arguments" list rather
        than changing current_package etc...

        * src/Makefile.header: Add a systematic config target (for backward compatibility)

        * fragments/constituents_trailer (binclean): added the binclean
        target to completely remove the binary directory at once.

        * fragments/make_header: 
        * fragments/constituents_header: 
        * fragments/nmake/make_header (CMTEXTRATAGS): 
        * fragments/nmake/constituents_header (CMTEXTRATAGS): Remove the settings of CMTCONFIG

2002-03-22  Christian Arnault  <carnault@lxplus037.cern.ch> 79

        * src/cmt_symbol.cxx (suppress_OS_delimiters): operate on %...%
        patterns only on Windows machines.

2002-03-20  Christian Arnault  <carnault@lxplus042.cern.ch> 78

        * mgr/Makefile (Atlas): Suppress HP rebuild for Atlas group

        * src/cmt_cvs.cxx (filter): Improve the recursive passes and
        handle the new qualifiers of the use statements.

        * fragments/cleanup_header (clean): Fix bad insertion of the .DEFAULT target

        * src/cmt_symbol.cxx (suppress_OS_delimiters): Introduce this new
        function to ensure that only $() syntax is used in tag makefiles
        (ie suppress ${} and %% syntaxes)
        (show_macro): apply this new function for action_build_tag_makefile

        * src/cmt_generator.cxx (reset): Do not generate the Visual
        directory on non-windows machines

        * fragments/group (clean): Suppress one echo on gmake clean

2002-03-14  Christian Arnault  <carnault@lxplus037.cern.ch> 77

        * src/cmt_parser.cxx (set_standard_macros): Cleanup management of m_current_tag

2002-03-07  Christian Arnault  <carnault@lxplus048.cern.ch> 76

        * src/cmt_parser.cxx (print_context): Suppress the automatic
        settings of CMTEXTRATAGS

        * src/Makefile.header: Do not change CMTCONFIG
        * src/NMakefile.header: Do not change CMTCONFIG

2002-02-27  Christian Arnault  <carnault@lxplus042.cern.ch> 75

        * fragments/jar: Adding removal of jar file for clean target

        * src/cmt_use.cxx (show_sub_uses): show no_auto_imports status

        * src/cmt_parser.cxx (reach_current_package): reapply global
        pattern at once until side effects are solved in user projects.

        * fragments/jar: Apply an old fix to Unix fragments (was applied
        to Windows only)

2002-02-26  Christian Arnault  <carnault@lxplus016.cern.ch> 74

        * src/cmt_use.cxx (move_to): select_alternate must be applied
        after reach_package for searches against an absolute path or
        against the current directory.

2002-02-25    <arnault@lal.in2p3.fr> 73

        * fragments/cleanup_header (clean): Add default action

        * src/Makefile.header (common_target): Remove debug print

        * src\cmt_parser.cxx (parse_requirements): Apply global patterns
        right after parsing a requirements file, and only considering the
        Use context, one at a time (rather than applying all global
        patterns to all Uses at once after reading all requirements file)

        * src\cmt_pattern.cxx (apply_all_globals): 
        * src\cmt_pattern.h (class Pattern): Add a method to apply all
        global patterns in the context of only one Use object.

2002-02-24    <arnault@lal.in2p3.fr> 72

        * src\cmt_system.cxx (command_separator): New method for getting
        the shell command separator (& or ;)

        * src\cmt_cvs.cxx (class CvsImplementation): Add
        CmtSystem::command_separator() between cvs co of each branch
        (instead of newlines).

        * src\cmt_system.cxx (has_device): Accepts the \\xxx\ syntax as a
        device name in file paths on windows.

        * src\cmt_parser.cxx (configure_cmt_path): Hide show_set action
        when recursive definition of CMTCONFIG

        * src\cmt_use.cxx (need_new): Some optimizations
        
        * src\cmt_use.cxx (move_to): Exchange the priority of CMTPATH
        versus version when selecting the best version.

        * src\cmt_parser.cxx (use_cmt): Hide CMTDEBUG while parsing the
        requirements of CMT itself

2002-02-20  Christian Arnault  <arnault@lal.in2p3.fr> 71

        * src/cmt_parser.cxx (do_broadcast): Fix a bug for setting the
         style the the Current use. This effect was induced by the new
         mechanism for constructing the Current Use object, now a singleton
         of the Use class.

2002-02-07    <arnault@lal.in2p3.fr> 70

        * src\cmt_use.cxx (change_path): Add a m_located flag in Use class
        to record the success of the package localization. Test against
        this info instead of real_path to allow for package found in
        current directory (where real_path stays empty)

        * src\cmt_parser.cxx (configure): 

        * src\cmt_use.cxx (show_sub_uses): Ensure that the cmt show uses
        displays the correct scoping information for uses and
        sub-uses. cmt show uses also displays the full tree even when it
        contains private uses.

2002-02-06    <arnault@lal.in2p3.fr> 69

        * src\cmt_use.cxx (class use_action_iterator): Install UseContext
        to manage proper propagation of -no_auto_imports

2002-01-30    <arnault@lal.in2p3.fr> 68

        * src/cmt_parser.cxx (parse_arguments): Fix the bug of private
        environment variables which could not be set even within the
        package (bug in the management of the -pack= -version= -path=
        options).

        * src/cmt.h : Install all attributes of the Cmt class as private
        attributes, and make them follow the convention : m_xxx. This
        implies to install few accessor methods.

2002-01-29    <arnault@lal.in2p3.fr> 67

        * src/cmt_use.cxx (class use_action_iterator): The private uses
        are accessed for 
            - broadcast operations
            - show uses operations

        * src/cmt_symbol.cxx (action): Expands the specified script name
        for the setup_script and cleanup_script statement.
          Protect against empty script names.

2002-01-11  Christian Arnault  <carnault@lxplus035.cern.ch> parallelbuilds

        * src/Makefile.header: Reorganize basic Makefile fragment
        generation to permit better support for parallel & concurrent
        builds.  Mimize also the number of makefile fragments generated
        and kept : only $(tag).make remains in ../cmt . All other are
        thrown away after use.

        Make those changes a branch "parallelbuilds"
        

2002-01-09  Christian Arnault  <carnault@lxplus001.cern.ch> 66

        * src/NMakefile.header (tags): Apply the fix for tags onto
        NMakefile.header

2002-01-07    <arnault@lal.in2p3.fr> 65

        * src/Makefile.header (tags): Attempt to fix the continuity break
        between v1r9 and v1r10, by re-installing the possibility to use
        gmake tag=<...> rather than having to use source setup.[c]sh
        -tag=<...>

        (This fix has to be tested before any validation)

2001-11-26  Christian Arnault  <carnault@atlas50.cern.ch> 64

        * Tagging v1r10p20011126
        
        * src/Makefile.header: tag is now ${CMTCONFIG} and tags ${CMTEXTRATAGS}

        * mgr/requirements: Provide the macro tags as ${CMTEXTRATAGS}

        * src/cmt_tag.cxx: Various changes in strategy for tags:
          - tag inclusion (defined by the "tag" statement) transmits the priority.
          - tag selection can be discarded by exclusion specifications. Exclusion 
          qualifies a set of contradictory tags. Contradictory tags will be selected
          according to their priority or to their declaration order in case of
          equal priority.

        * src/cmt_parser.h (enum Priority): Change the priority list:
        Arguments get highest priority
        then CMTCONFIG
        then user tags (those defined in requirements)

        * fragments/make_setup: produce uses.make and tags.make

        * src/cmt_parser.cxx (parse_arguments): 
        * src/cmt.h (class Cmt): Suppress the mechanism of
        primary_tag. CMTCONFIG is enough.

2001-11-21  Christian Arnault  <carnault@lxplus040.cern.ch> 63

        * src/cmt_symbol.cxx (add_value_to_list): fix protection on
        value_list.size () to start at 1 (not at 2)

        * src/cmt_symbol.cxx (build): Reflective values of Sets should
        consider previous setenv settings.

        * src/cmt_generator.cxx (build_dependencies): Using ../$(tag) for
        output base of the dependencies fragment rather then
        Cmt::current_tag

        * src/Makefile.header (CMTPRIMARYTAG): tag=... argument of gmake
        will override CMTPRIMARYTAG. However internal tag macro is only
        replaced with ${CMTCONFIG}

        * fragments/make_setup (config): create a tags.log (for cmt show
        tags)

        * mgr/cmt_make_shlib_common.sh: Add the ${lib} prefix to the
        temporary expansion directory. Fix a bug in sed filter for all
        module files.

        * src/cmt_parser.cxx (configure_tags): Add a protection against
        absence of CMTPRIMARYTAG

        * src/cmt_system.cxx (create_symlink): 
        * src/cmt_system.h (class CmtSystem): Adding the create_symlink
        function.

        * src/cmt_parser.cxx (do_build_library_links): Using direct system
        calls to create symlinks.

2001-11-13  Christian Arnault  <carnault@lxplus010.cern.ch> 62

        * Tagging v1r10p20011113

        * mgr/requirements:
        * src/constituents.make (build_library_links): Define macros for
        build_library_links and remove_library_links

        * fragments/make_setup (config): Add build_library_links target

        * src/cmt_parser.cxx (set_standard_macros): Fix bad production of
        use_includes when private is used.

        * src/cmt_parser.cxx (do_broadcast): Fix -begin=<pattern> error

2001-11-08  Christian Arnault  <carnault@lxplus028.cern.ch> 61

        * src/cmt_version.h: tagging v1r10

        * src/cmt_system.cxx (add_cmt_path): Get cwd alias to each selected path.

        * src/cmt.h (class Cmt): Add cmt_path_cwd vector of all CMTPATH
        entries normalized to getcwd.

        * src/cmt_generator.cxx (java_file_action): 
        * src/cmt_generator.cxx (proto_file_action):
        * src/cmt_generator.cxx (module_file_action): Pass reference to the constituent in order
        to transmit constituent variables to the fragment.

        * src/cmt_parser.cxx (set_standard_macros): Insert a space
        character for all generated macro_append operations.

        * src/cmt_fragment.cxx (xxxcopy): 
        * src/cmt_fragment.h (class Variable): Adding the expansion of
        fragments variables using both the ${} syntax AND the $() syntax.

        * src/cmt_tag.h :
        * src/cmt_tag.cxx (is_selected): Change the Tag::selected attribute to bool.

2001-11-07  Christian Arnault  <carnault@lxplus006.cern.ch> 60

        * src/cmt_symbol.cxx (build): Implement the possibilty to have
        reflexive asignment to symbols: when a symbol value is exactly
        specified (from set, macro or path statements) using $(<name>) or
        ${<name>} or %<name>% then the old value is preserved for all
        corresponding selectors.

        * src/cmt_parser.cxx (set_standard_macros): Re-activate -import
        options (that had been discarded!)

        * src/cmt_use.cxx (add): Generate an error when a package is not
        found (the error was only generated at "cmt show uses")

        * src/cmt_constituent.cxx (show): Display -import options

        * fragments/dependencies: Force checking $(bin) 

        * fragments/constituent: Adding some printout to display when
        constituent fragment is rebuilt

        * src/cmt_parser.cxx (set_standard_macros): Re-validate
        -no_auto_imports option for use and -import options for
        constituents.

2001-11-06  Christian Arnault  <carnault@lxplus038.cern.ch> 59

        * src/cmt_generator.cxx (build_document_makefile): protect against
        missing files (causing infinite loops in Make)

2001-11-05  Christian Arnault  <carnault@lxplus005.cern.ch> 58

        * mgr/Makefile (application_suffix): Define application_suffix in
        the CMT's Makefile

        * src/cmt_parser.cxx (print_context): Do not generate ROOT and
        CONFIG for cmt_standalone packages.

        * mgr/requirements: Reomving the cmt_selector.cxx source file.

        * src/constituents.make: Force the dirs target for
        build_library_links

        * src/cmt_parser.cxx (restore_all_tags): Get the value of
        CMTPRIMARYTAG to configure Cmt::primary_tag.

        Leave unchanged the primary_tag and the extra_tags except if
        overridden through the -tagxxx= options

        * src/cmt_parser.h (enum): Add PrioritySite in the list of
        possible priorities.

        * src/cmt.h (class Cmt): Add the restore_all_tags function. Add
        the extra_tags attribute . Change the strategy of tag persistency:

          o CMTPRIMARYTAG always contains what had been specified using
        the -tag= option,

          o CMTEXTRATAGS contains what had been manipulated by -tag_add=
        and -tag_remove= options.

          o CMTCONFIG is setup independently of the primary tag.

        * src/Makefile.header (primary_tag): Propagate tags using
        CMTPRIMARYTAG instead of CMTCONFIG (except when CMTPRIMARYtAG is
        not yet defined)

        * src/cmt_constituent.cxx (parse): Fix the word parsing for
        constituent specification...

2001-11-02  Christian Arnault  <arnault@asc.lal.in2p3.fr> 57

        * src/cmt.h
        * src/cmt_database.cxx
        * src/cmt_database.h
        * src/cmt_parser.cxx
        * src/cmt_parser.h
        * src/cmt_selector.cxx
        * src/cmt_selector.h
        * src/cmt_symbol.cxx
        * src/cmt_symbol.h
        * src/cmt_tag.cxx

        * src/cmt_tag.h:
        Suppressing cmt_selector objects (only tags are needed!!)
        Add tag_exclude keyword for building tag-exclusions.

2001-10-31  Christian Arnault  <carnault@atlas50.cern.ch> 56

        * mgr/requirements: Don't need to explicitly declare make_fragment
        headers (automatically declared in the -header= option)

        * src/cmt_symbol.cxx (print_clean): Cleaning up path variables may
        be either unsetenv when the result is empty or setenv if not.
        
        * fragments/application_launcher: evolution

        * src/cmt_parser.cxx (configure_tags): protect against empty
        declaration of CMTCONFIG : by default will take uname...

2001-10-30  Christian Arnault  <carnault@atlas50.cern.ch> 55

        * src/cmt_symbol.cxx (clean): Implement the cleanup correctly,
        with in particular the cleanup of the path variables.

        * src/cmt_parser.cxx (print_context): improve output of cmt show tags

        * src/cmt_symbol.h (class Symbol): Add clean_macro_value for
        building the result of the clean operations induced by this symbol
        (only implemented for path_xxx)

        * src/cmt_parser.cxx: New post-context requirements file :
        user_context in addition to home package.  Added Use* use
        arguments to configure_xxx functions to transfer.

        * src/cmt_parser.cxx(configure_cmt_path): Attempt to make use of
        CMTPATH definitions from requirements files.

        * src/cmt_parser.cxx(configure_config_selector): Install context
        information for tag creation

        * src/cmt_parser.cxx(configure_home): Attempt to make use of
        CMTHOME definitions from requirements files.

        * src/cmt_parser.cxx(configure_user_context): Install user_context
        management

        * src/cmt_parser.cxx(configure_site_selector): Get CMTSITE from
        requirements as well

        * src/cmt_parser.cxx(configure_tags): Add a configure_tags
        finction to retreive tags from all possible sources: CMTCONFIG
        (from req) then CMTPRIMARYTAG then CMTCONFIG then CMTBIN then
        append all CMTEXTRATAGS.

        * src/cmt_parser.cxx(parse_arguments): fix parsing bug for the
        -home= argument

        * src/cmt_parser.cxx(parser): Set action_show_path to be recursive

        * src/cmt_parser.cxx(parser): Call the HOME package just after
        using CMT. Call the use_context package just after reaching the
        current package.

        * src/cmt_parser.cxx(print_clean): reformat the output (with
        newlines). Clear CMTPRIMARYTAG CMTEXTRATAGS and CMTCONFIG.

        * src/cmt_parser.cxx(print_context): set CMTPRIMARYTAG
        CMTEXTRATAGS and CMTCONFIG from the current definitions.

        * src/cmt_parser.cxx(set_standard_macros): Rationalize the
        production of current_tag

        * src/cmt_parser.cxx(use_user_context_requirements): 

        * src/cmt_use.cxx (show_all): Display new user_context package

        * src/cmt_use.cxx (class use_action_iterator): query function ok()
        includes both home_package and user_context_package

        * src/cmt_use.cxx (reach_package): special treatment for
        home_package and user_context_package since they do not follow the
        standard location scheme.

        * src/cmt_use.cxx (add): Improve the detection of packages not found.

        * src/cmt_tag.cxx (unmark): Reset the use pointer

        * src/cmt_tag.cxx (action): Install the use origin.

        * src/cmt_tag.cxx (add): Install the use origin and the context
        information. It will be reset to the new context in case of
        re-definition. Suppress various excessive debug printouts.

        * src/cmt_tag.cxx (clear): clear use and context new information

        * src/cmt_tag.cxx (show): Improve the display of tags with
        hierarchical display of subtags and context information.

        * src/cmt_tag.h (class Tag): Added Use* use parameter to action
        and add methods. Store a pointer to the package (Use*) who
        originated the definition, and a context string to qualify the
        definition.

        * src/cmt_system.h (class CmtSystem): 
        * src/cmt_system.cxx (add_cmt_paths_from_text): Factor out the
        code to register a set of CMTPATH entries, with the context
        information.
        
        * src/cmt_system.cxx (is_home_package): Add is_home_package and
        is_user_context_package query functions.

        * src/cmt_system.cxx (get_cmt_site): Default site is empty
        (instead of LAL)

        * src/cmt_symbol.cxx (print_clean): Suppress some obsolete
        print_tabs () formattings. Apply unset instead of unset for
        aliases as well.
        
        * src/cmt_symbol.cxx (action): Add special treatment for CMTXXX
        environment variables : the new setting has to be taken into
        account as soon as it is parsed.

        * src/cmt_selector.cxx (create): remove some debug code.

        * src/cmt_generator.cxx (build_default_makefile): Produce only
        Makefile on Unix and only NMake on Windows.

        * mgr/requirements: Renaming new script_launcher fragments into
        application_launcher

        * src/cmt.h (class Cmt): Added Use* use arguments to configure_xxx
        functions to transfer.
        
        Added use_user_context_requirements () to include post-context
        requirements file.

        Added the static value primary_tag to store the primary tag.
        

        * src/cmt_generator.cxx (build_default_makefile): Create Makefile
        only un Unix and NMake only on WIN32

2001-10-24  Christian Arnault  <carnault@lxplus038.cern.ch> 55

        * src/cmt_parser.cxx (parser): add the recursive property to
        action_show_path.

        * src/cmt_system.h (class CmtSystem): 
        * src/cmt_system.cxx (get_user_context_package): 
        * src/cmt_system.cxx (is_user_context_package): 
        * src/cmt_use.cxx (add): 
        (show_all): 
        (class use_action_iterator): 
        (reach_package): 
        (add): 
        * src/cmt_parser.cxx (configure): 
        * src/cmt_parser.cxx (parser): 
        * src/cmt_parser.cxx (parse_arguments): 
        * src/cmt_parser.cxx (configure_user_context): 
        * src/cmt.h (class Cmt): 

        Adding user_context equivalent of CMTHOME support for post
        requirements file. The corresponding env. var. is CMTUSERCONTEXT.
        The complete scheme for supporting PRE-parsed HOME requirements
        file is exactly copied to those POST-parsed files.

        * mgr/requirements: 
        * fragments/script_launcher_header: 
        * fragments/script_launcher:         
        * fragments/script_launcher_trailer: Introduce a new document
        generator for launching scripts. The same convention as the
        check_application is reused, for pre-action, argument passing and
        post-action. Several scripts (specified in the source list of the
        document) can be executed in sequence.

        * src/cmt_use.cxx (class use_action_iterator): 
        * src/cmt_system.cxx (is_home_package): 
        * src/cmt_system.h (class CmtSystem): Add the is_home_package
        function to encapsulate the syntax of a HOME package (and apply it
        in Use::use_action_iterator)

        * src/cmt_symbol.cxx (action): Prepare specific actions when the
        parsed symbol is one of the CMTXXX standard symbols. So far
           CMTHOME -> re-configure home.

        * src/cmt_parser.cxx (parser): apply use_home_requirements right
        after reading CMT requirements file (ie. before reading current
        package)

        * src/cmt_parser.cxx (configure_home): understand the possible
        "set CMTHOME" declarations (but keep $CMTHOME)

        * src/cmt_parser.cxx (reach_current_package): * src/cmt_system.cxx
        (get_cmt_paths): Restore the automatic addition of "current
        package" in the CMTPATH list.

        * src/cmt_parser.cxx (parse_arguments): bad parsing of the
        -home=xxx argument

        

2001-10-23  Christian Arnault  <carnault@lxplus007.cern.ch> 54

        * mgr/Makefile (demo): Need to add CMTPATH towards ${CMTROOT}/demo
        since CMTPATH to current package is no longer supported !!!

        * fragments/nmake/check_application (check): 
        * fragments/nmake/cleanup_application: 
        * fragments/nmake/application_header: 
        * fragments/nmake/application: 
        * fragments/application: 
        * fragments/application_header: 
        * fragments/cleanup_application: 
        * fragments/check_application (check): 
        * mgr/requirements: Create a new standard macro
        "application_suffix" for making possible to change the .exe
        default suffix of applications

2001-10-22  Christian Arnault  <carnault@lxplus026.cern.ch> 53

        * src/cmt_parser.cxx :
        * src/cmt_system.cxx : Suppress the automatic addition of current 
        package's path into CMTPATH.

        * mgr/Makefile: Change the method to rebuild
        cmt_dependencies by copying what is obtained from CVS. Rebuild it
        manually when needed.

2001-10-19  Christian Arnault  <carnault@lxplus025.cern.ch> 52

        * fragments/make_setup (config): Creating uses.log needs to use an
        intermediate temporary file

        * src\setup.[c]sh : Avoid re-definition of CMTCONFIG

        * src\cmt_use.cxx (add): temporarily discard the mecanism by which
        uses.log files are read before the requirements files.

        * src\cmt_system.cxx (is_version_directory): returns -1 for fields
        that were wildcarded

        * src\cmt_use.cxx (add): 
        * src\cmt_use.cxx (need_new):         
        * src\cmt_use.cxx (BestFitSelector::operate): Start the
        implementation of priority control between explicit use
        specification over wildcarded ..

        * src\cmt_parser.cxx (reach_current_package): Change the value of
        the CMTPATH for the current package once it has been reached (but
        before reading its requirements file)
        
        * src\cmt_parser.cxx (install_setup_scripts): (improvement) Add the transfer of
        arguments towards cmt.exe into setup.bat

        * src\cmt_system.cxx (get_cmt_paths): (bug fix) path_sources was
        not cleared as paths.
        Prepend "current path" to the path list under "current package".

        * src\cmt_parser.cxx (parse_arguments): (bug fix) Suppress
        enclosing quotes around cmt.exe arguments so that setup.bat can
        transmit arguments properly

        call setup.bat "-tag_add=a,b,c"

2001-10-18  Christian Arnault  <carnault@lxplus047.cern.ch> 51

        * src/cmt_parser.cxx (set_standard_macros): Set current_tag to
        CMTBIN when in CMT itself (not complete yet)
        
        * src/cmt_generator.cxx (build_dependencies): Use CMTBIN for CMT
        itself (instead of current_tag) well this should be cured later on
        to ensure that current_tag is always set to CMTBIN for CMT itself

        * src/cmt_version.h (CMTVERSION): install v1r10 (not tagged yet)

        * mgr/cmt_system.sh: Do not try to use AFS on Darwin and LynxOS.

        * src/setup.[c]sh: Define CMTBIN as `uname` on Unix and CMTCONFIG
        as `cmt_system.sh`

        * src/cmt_symbol.cxx (show_macro): the trailing space must be
        added only for WIN32 !!

2001-10-17  Christian Arnault  <carnault@lxplus047.cern.ch> 50

        * src/cmt_symbol.cxx (show_macro): add a trailing space on all
        macro definitions (to avoid problem of trailing backslash)
        
        * src/cmt_parser.cxx (set_standard_macro): remove the insertion of
        trailing spaces after the last backslash for WIN32/NMake

        * src/constituents.make (all): (bug fix) re-install the
        build_library_links action for the all target

2001-10-11  Christian Arnault  <carnault@lxplus021.cern.ch> 49

        * src/cmt_version.h: Tagging for v1r9p20011011
        
        * fragments/library: (bug fix) transmit both -tag=<tag> and
        -tag_add=<tag_list> to cmt_make_shlib_common.sh

2001-10-11  Christian Arnault  <arnault@asc.lal.in2p3.fr> 48

        * src/cmt_parser.cxx: remove debug print options

2001-10-10  Christian Arnault  <arnault@asc.lal.in2p3.fr> 47

        * src/cmt_parser.cxx (parse_arguments): fix problems in multiple
        tag management.

        converge in the question of HOME requirements file to support
          - no default
          - define the path to the HOME requirements file in ${CMTHOME}

        converge in the arguments for manipulating the extra tags
          -tag=<tag>
          -tag_add=<tag-list>
          -tag_remove=<tag-list>

2001-10-03  Christian Arnault  <carnault@lxplus036.cern.ch> 46

        * src/constituents.make (makefilesclean): Make all action lists
        run in one single shell (ie. use ;\ everywhere)

        Make an explicit target for build_library_links
        Make it called before any group

2001-10-02  Christian Arnault  <carnault@lxplus007.cern.ch> 45

        * src/cmt_awk.h (class Awk): add a state variable
        (m_continuation_allowed) which when true, take into account the
        trailing backslashes, so as to first accumulate continued lines
        into one. Add the allow_continuation method to base Awk class.

2001-10-01  Christian Arnault  <carnault@lxplus034.cern.ch> 44

        * src/cmt_cvs.cxx (class CvsImplementation): Bug in
        checkout_from_requirements. Did not accept leading spaces on use
        statements.

2001-09-27  Christian Arnault  <carnault@lxplus036.cern.ch> 43

        * src/cmt_version.h: Tagging for v1r9p20010927

        * src/setup.zsh: add the -begin option to the auto-expansion.

        * src/cmt_use.cxx (show_all): Visualize the HOME package when
        applicable.

        * src/cmt_system.cxx (get_home_package): (also do some formatting
        cleanup)
        
        * src/cmt_system.h (class CmtSystem): Adding get_home_package
        function to build the name given to the HOME package (provides the
        HOME requirements file)

2001-09-26  Christian Arnault  <arnault@asc.lal.in2p3.fr> 42

        * src/cmt_parser.cxx (do_show_macro): Improving error detection on
        cmt show macro/set

        * doc/CMTDoc.html: Improve the doc.

        * src/cmt_parser.cxx (print): produce the CMTEXTRATAGS environment
        variable, at setup time.
                             (parse_arguments): take into account this new 
        env.var. to retreive previous extra tags.

        * src/Makefile.header: Add the CMTEXTRATAGS environment variable
        to propagate additional tags to Make.
        
        * fragments/make_setup: 
        * fragments/constituent: 
        * src/Makefile.header:
        * src/constituents.make: Adding  -tag=$(tags) to all calls to cmtexe

        * src/cmt_system.h (class CmtSystem): Adding the bool testenv
        (name) function to test if an environment variable is defined or
        not.

        * src/cmt_parser.cxx (use_home_requirements): 
        * src/cmt.h (class Cmt): Adding support of CMTHOME environment
        variable for specifying home requirements file. Default value will
        be ${HOME}. And can be overridden through the -home=<directory>
        global option. An explicit empty value (or set to eg. NONE) will
        discard the feature

        * src/cmt_parser.cxx (parse_arguments): Implement the tag list
        (comma separated list of extra tags) option -tag=<tag-list> to
        specify a list of tags to validate.

2001-09-25  Christian Arnault  <carnault@lxplus034.cern.ch> 41

        * src/setup.csh: fixed PATH settings (may accept a path with space
        characters eg. for Darwin)
        
        * mgr/cmt_system.sh: Insert the knowledge of Darwin OS (Mac OS
        X). The default CMTCONFIG will be Darwin.

        * src/constituents.make (makefilesclean): Ensure that removal of
        makefile fragments is performed AFTER all cleanup uperations.

        * src/cmt_parser.cxx (use_home_requirements): Add the systematic
        search for a requirements file located in ${HOME}. This
        requirements file when found, is systematically parsed AFTER the
        requirements file of the current package has been parsed (so as to
        give the highest precedence to its statements)
        
        (do_remove_library_links): Upgrade "remove library_links" to make
        it compliant to the algorithm used in "build library_links"

2001-09-24  Christian Arnault  <carnault@lxplus014.cern.ch> 40

        * src/cmt.h (class Cmt): * src/cmt_parser.cxx (configure): Add a
        global configure_error variable to store the possible error
        produced during the configuration.
        (install_test_setup_scripts): Add the -quiet option to the build
        temporary_name command used in setup script generation.

        * src/cmt_error.cxx (get_last_error): 
        * src/cmt_error.h (class CmtError): Add get_last_error to retrieve
        the formatted text of the last error.

        * src/cmt_symbol.cxx (create): 
                             (all_print): 
                             (print): 
                             (build): 
        * src/cmt_parser.cxx (select): Understand the "path" statement as
        a complete re-definition of a path-like variable.

        * src/cmt_system.cxx (add_cmt_path): 
        * src/cmt_error.cxx (class Error): 
        * src/cmt_error.h (class CmtError): Adding "path not found" error
        code, for CMTPATH checking.

        * src/cmt_pattern.cxx ((const cmt_string& name): Return a warning
        for pattern not found.

        * src/cmt_error.h (class CmtError): 
        * src/cmt_error.cxx (class Error): Adding "pattern not found" error
        code, for showing diagnostics in "cmt show pattern"

        * src/cmt_parser.cxx (do_show_macro): Return a warning for symbol
        not found.

        * src/cmt_error.h (class CmtError): 
        * src/cmt_error.cxx (class Error): Adding "symbol not found" error
        code, for showing diagnostics in "cmt show macro/set"

2001-09-19  Christian Arnault  <carnault@lxplus045.cern.ch> 39

        * mgr/cmt_make_shlib_common.sh : return a status value which
        reflects the success or failure of the shared library build
        command.

        * src/cmt_cvs.cxx (class CvsImplementation): Discard the versions
        specified with wild cards in the recursive checkout.

        * src/cmt_triggers.cxx: Protect the error messages in the trigger
        facility by Cmt::quiet.

        * src/cmt_constituent.cxx (class constituents_action_iterator):
        temporarily discard the -triggers option.

2001-08-24  Christian Arnault  <carnault@lxplus011.cern.ch> 38

        Tagging v1r9p2001p0824

2001-08-24  Christian Arnault  <carnault@lxplus011.cern.ch> 38

        * mgr/cmt_system.sh: Improve the reliability of the cmt_system.sh
        script against variants of "fs sysname"

2001-08-23  Christian Arnault  <carnault@lxplus030.cern.ch> 37

        * src/cmt_cvs.cxx (class CvsImplementation): Since the tag filter
        is back to cmtcvs.cxx, the temporary forced tag filter in CMT is
        removed.

        * src/setup.zsh: upgrade the completion for the broadcast command.

        * src/cmt_parser.cxx (do_broadcast): Make the -select independent
        of the -local or -global options. This is achieved by adding a
        "path_selections" list only managed by the -depth, -local -global
        modifiers while the "selections" list is managed by the -select
        modifier. The -exclude is left unchanged.

2001-08-22  Christian Arnault  <carnault@lxplus024.cern.ch> 36

        * src/cmt_cvs.cxx (class CvsImplementation): Add the possibility
        to transmit a flag to the CVS pluggin, by inserting a /cmtcvstest
        in the module name to import. This will have to be decoded by the
        CVS pluggin itself !!

2001-08-21  Christian Arnault  <carnault@lxplus013.cern.ch> 35

        * src/setup.tcsh: Improving the tcsh completion mechanism (for cmt co).

        * src/setup.zsh: Improving the zsh completion mechanism (for cmt co).

        * src/cmt_cvs.cxx (class CvsImplementation): Converging on HEAD
        management strategy...

        Starting implementation of the Atlas filter for CVS tags right
        into cmt_cvs.cxx rather than inside the CVS pluggin...

2001-08-20  Christian Arnault  <carnault@lxplus028.cern.ch> 34

        * src/cmt_cvs.cxx (class CvsImplementation): Improving the
        recursive checkout process

2001-08-20    <arnault@lal.in2p3.fr> 33

        * src\cmt_cvs.cxx (class CvsImplementation): Reorganizing some CVS operations:<ul>
          <li> Apply the CMTCVSOFFSET env. variable to all actions (tags, branches, subpackages)
          <li> cleanup checkout algorithms (remove some obsolete variables)
          <li> add the -requirements <requirements-file-path> option to checkout according to
            a set of use statements.
          <li> remove the inheritance to Awk of CvsImplementation to split the filter into 2
            phases (implemented as 2 separated Awk derived classes) RecursivePass1 and
            RecursivePass2.</ul>

2001-08-16  Christian Arnault  <carnault@lxplus046.cern.ch> 32

        * src/cmt_symbol.cxx (print): Bug in path_remove when the
        specified path variable only contained one item : the remove
        operation was not applied.

2001-07-20  Christian Arnault  <arnault@lal.in2p3.fr> 31

        * src/cmt_version.h: setting the patch v1r9p20010720

2001-07-20  Christian Arnault  <carnault@lxplus019.cern.ch> 30

        * src/cmt_regexp.h (cmt_regexp::begin): Add an optional pos
        argument to the begin method.

        * doc/CMTDoc.html: Improvements, English cleanup...

2001-07-18  Christian Arnault  <carnault@lxplus041.cern.ch> 29

        * src/cmt_cvs.cxx (CvsImplementation::checkout_package): Change
        the mechanism to get top files, since the " -d . " does not work
        anymore when CVSROOT is set to kserver!!!!

2001-07-16  Christian Arnault  <carnault@lxplus030.cern.ch> 28

        * doc/CMTDoc.html: Old PREFIX fragment variable has been replaced
        by FILEPATH long ago. This was not upgraded in the doc.

        * fragments/constituent: The -f <file> MUST be specified BEFORE
        other Make flags!!

        * fragments/dependencies: Tried to comment out the dependencies to
        cmt_path.make etc... but it confused the dependencies fragment
        production. Uncomment it but need to understand the side effect.

2001-07-09  Christian Arnault  <carnault@lxplus012.cern.ch> 27

        * src/cmt_generator.cxx (build_readme): Bug: the VERSION variable
        was not used for installing the readme_trailer (although the
        documentation was mentioning it)

2001-07-04  Christian Arnault  <carnault@lxplus034.cern.ch> 26

        * src/cmt_version.h: setting the patch v1r9p20010704

2001-07-02  Christian Arnault  <carnault@lxplus034.cern.ch> 25

        * fragments/dependencies: Cleaning some old debug printouts.

        * src/cmt_cvs.cxx (class CvsImplementation): Bug in replacing the
        wild card expression. v5r* has to be replaced by v5r0 while v5*
        has to be replaced by v5 in case no matching tag exists in the CVS
        repository.  Other bug : All split operations should be performed
        against " \t" (include tab character)

2001-06-29  Christian Arnault  <carnault@lxplus047.cern.ch> 24

        * src/cmt_cvs.cxx (class CvsImplementation): Final Validation of
        the change in the implementation of the m_installed stack used to
        avoid recursion due to dependency cycles.

2001-06-22  Christian Arnault  <carnault@lxplus020.cern.ch> 23

        * src/cmt_cvs.cxx (class CvsImplementation): doing some
        optimizations for the big checkout operations.

        * src/cmt_parser.cxx (do_config): Remove .[n]make files also from
        the binary directory.

        * src/cmt_cvs.cxx (class CvsImplementation): Always fetch the cmt
        branch at HEAD even if the checkout operation is applied to a
        required tag (temporary feature).

2001-06-18    <arnault@lal.in2p3.fr> 22

        * src\cmt_cvs.cxx (class CvsImplementation): insert a space
        between top tags and other tags.

        * mgr\cmt_make_shlib.bat: Write extra options received through
        arguments into a temporary option file, used by @<optionfile> to
        resolve line-too-long prolems.

        * fragments\nmake\cpp_library: 
        * fragments\nmake\cpp:
        Add the /Tp qualifier for allowing non-standard file suffixes.

2001-06-05  Christian Arnault  <arnault@lal.in2p3.fr> 22

        * src/cmt_use.cxx (class use_action_iterator): Default to the
        -no_auto_import was to keep the most recent specification. Change
        this to always request auto_import by default, (unless otherwise
        specified)

2001-06-01  Christian Arnault  <arnault@lal.in2p3.fr> 22

        * src/cmt_parser.cxx (do_broadcast): Bug fix in do_broadcast: the
        -begin option wrongly implied the -global option.

2001-06-13    <arnault@lal.in2p3.fr> 22

        * src/cmt_cvs.cxx (class CvsImplementation): Improving the
        strategy for getting version tags from the repository:
          o If a request specifies a tag which is not applied to the 
            requirements file, the specified tag is used to create the
            version directory but the HEAD is used in the repository.
          o CvsImplementation::show_cvs_infos () :
            stores all received infos into xxx_info corresponding
            local properties. Thus this method is only called once per
            package.
          o Error messages are really obtained from the error_info field.

2001-05-30  Christian Arnault  <arnault@lal.in2p3.fr> 22

        * src/cmt_generator.cxx (build_document_makefile):
        * src/cmt_system.cxx (get_dot_suffix): fix bug for file_names
        without any suffix

        * src/cmt.h & src/cmt_parser.cxx (set_standard_macros): Add a
        state standard_macros_done to protect against multiple calls to
        set_standard_macros.

2001-05-28  Christian Arnault  <arnault@lal.in2p3.fr> 22

        * src/cmt_cvs.cxx (class CvsImplementation): display the tags in a
        one-per-line basis instead of space separated when doing cmt
        cvstags.

        * src/cmt_use.cxx (operate): Make the version selector operator a
        little bit more quiet...

2001-05-25  Christian Arnault  <arnault@lal.in2p3.fr> 22

        * mgr/Makefile (demo): improve the gmake check action in the demo
        target.

        * src/cmt_use.cxx (fill_macro_all): build use_xxx standard macros
        using macro_append instead of macro.

2001-05-22  Christian Arnault  <arnault@lal.in2p3.fr> 22

        * src/cmt_parser.cxx (do_broadcast): Fix the default (-local)
        option to act as -depth=1.
        Improve some error messages.

2001-05-21    <arnault@lal.in2p3.fr> 21

        * src\setup.bat: Improved skeleton for setup.bat. Base it on
        CMTBIN rather than on CMTCONFIG. Do not override CMTCONFIG if
        defined by the user. Do not care about PATH for Visual tools.

        * mgr\install.mak: change the strategy for building the setup.bat
        script for CMT itself at INSTALL time. Now copy ..\src\setup.bat
        skeleton.

        * mgr\requirements: Fix WIN32/VisualC tag definitions and PATH
        settings for cleaner handling of default tag overriding.

        * src\cmt_use.cxx (operate): Implement the algorithm for using
        aliases to alternate version specification in uses.

-------------------------------------------------------------------------------------
2001-05-18  Christian Arnault  <arnault@lal.in2p3.fr> 21

        -> Tag CMTv1r9p20010521

        * src/cmt_use.cxx (show_sub_uses): Start the implementation of
        version_alias and path_alias for equivalencing two version naming
        policies.

        * src/cmt_cvs.cxx (class CvsImplementation): Adding the -o offset
        option to cmt checkout for specifying a global offset to the base
        CVS repository. This offset will be prepended to all modules
        during the various CVS operations.

        the m_offset attribute is added to the CvsImplementation class.

        (class CvsImplementation): Improve protection against CVS modules
        not found.
        
        (class CvsImplementation): Added the --help option the cmt checkout.

2001-07-10  Christian Arnault  <carnault@lxplus017.cern.ch> b-21

        * mgr/requirements: add the -tag=$(tag) option to the
        build_dependencies macro.

        * fragments/dependencies: take the improvements into account.

        * src/cmt_generator.cxx (build_dependencies): Improve the
        dependency builder: re-generate all entries of the
        <constituent>_dependencies.make that are missing from the complete
        source list (thus regenerate it when it is empty).
        Optimize the file scan for getting the new source list.

        * src/cmt_parser.cxx (do_build_dependencies): Dynamically shifts
        arguments of the build dependencies command to keep only the
        new-source-list. The complete command being 
        "cmt <args> build dependencies <constituent-name> <new-source-list>"
        
        (do_config): drop all makefile fragments from the mgr/cmt
        directory AND from the binary directory.

2001-05-11  Christian Arnault  <arnault@lal.in2p3.fr> 20

        * Moving to v1r8
        
        
2001-05-11  Christian Arnault  <arnault@lal.in2p3.fr> 19

        * src/cmt_deps_builder.cxx (): Augmented local internal
        line buffer (from 1024 to 16384).

        * doc/CMTDoc.html: document the new &lt;package>_root macro

        * src/cmt_parser.cxx (set_standard_macros) (get_best_form): Define
        a new set of standard macros using the pattern <package>_root
        similar to <PACKAGE>ROOT except that this new definition uses the
        get_best_form, with a relative path to the package. The
        <PACKAGE>ROOT macro is restored to the previous convention, that
        it uses the absolute path.
        
        * src/cmt_use.cxx (fill_includes_macro): Adapt the
        fill_includes_macro to use the new <package>_root standard macro


2001-05-10  Christian Arnault  <arnault@lal.in2p3.fr> 18

        * src/cmt_parser.cxx (do_broadcast): Add the -begin=<pattern>
        option to start the broadcast loop from a given package. This
        option can be combined with other options such as -select or
        -exclude.

        * src/cmt_generator.cxx (filter_paths): Suppress two unused
        variables.

        * src/cmt_use.cxx (add): Bug fixing: during the discovery of
        versions requested for a given package, the discarded versions
        were not correctly replaced by the finally selected version,
        especially in the Use::get_paths method. The
        Use::get_selected_version has been added to obtain the effective
        replacement for a discarded version.

        * fragments/check_application: suppress the ". setup.sh" before
        application run.

2001-05-04  Christian Arnault  <carnault@lxplus023.cern.ch> 17

        * src/cmt_parser.cxx (set_standard_macros): The production of all
        use_xxx standard macros now is based on a "macro_append" keyword
        instead of "macro", since "macro" resets all previous
        definitions. Therefore if the user's requirements did augment
        those use_xxx macros, these specifications would be ignored.
        
        (do_broadcast): Set the -local option to broadcast the
        default. Add the -global option to revert to the old default (with
        no selection and to any depth)

2001-05-03  Christian Arnault  <carnault@lxplus019.cern.ch> 17

        * src/cmt_symbol.cxx (add_value_to_list): A new macro or set
        keyword resets (discards) all previous definitions for the
        corresponding symbol.

        * src/cmt_symbol.h (class SymbolValueList): Added an attribute
        discarded for symbol resetting.

        * src/cmt_parser.cxx (print_macros): Exclude scripts from macros
        defined in the $(tag).make file.

2001-04-27  Christian Arnault  <carnault@lxplus022.cern.ch> 16

        * src/cmt_parser.cxx (get_best_form): Validate the compression
        algorithm for paths to packages (only for the macro <PACKAGE>ROOT
        - this is still not true for the <PACKAGE>ROOT environment
        variable) into a relative form when it is shorter than the
        absolute form.

        * src/cmt_system.cxx (compress_path): Fix the algorithm for
        compressing the patterns "aaaa/xxxx/../bbbb" into aaaa/bbbb.

        * src/cmt_generator.cxx (filter_paths): use
        CmtSystem::compress_path instead of duplicating its algorithm for
        erasing "/aaa/.." patterns

2001-04-25  Christian Arnault  <carnault@lxplus022.cern.ch> 15

        * src/cmt_parser.cxx (set_standard_macros): Prepare the production
        of <PACKAGE>ROOT macros as relative paths rather than absolute
        ones, when the relative expression is shorter than the absolute
        one. Temporarily, trigger that feature by setting the
        CMTTESTPREFIX environment variable until absence of side effects
        is confirmed.

2001-04-18  Christian Arnault  <carnault@atlas009.cern.ch> 15

        * src/cmt_generator.cxx (build_readme): bug when generating the
        readme_trailer fragment : the PACKAGE variable should be reset to
        current.

2001-04-11  Christian Arnault  <arnault@lal.in2p3.fr> 15

        * src/cmt_generator.h (class Generator): 
        * src/cmt_parser.cxx (do_build_readme): 
        * src/cmt.h (class Cmt): do_build_readme now propagates argument list

        * fragments/readme_trailer:
        * src/cmt_generator.cxx (build_readme): Added DATE and USER information when building the README.html file. readme_trailer fragment updated accordingly.
        
        (build_readme): Add the -url=<url> argument to the cmt build
        readme command. The specified URL will be used in place of the
        package path when generating the URL for used packages.

2001-04-18  Christian Arnault  <arnault@lal.in2p3.fr> 14

        * src/cmt_symbol.cxx (build): In all builder objects, symbol value
        lists registered by discarded Uses are now ignored.

        * src/cmt_symbol.h (class SymbolValue): cleanup a comment.

        * src/cmt_symbol.cxx (print): protect setup script execution
        against missing files.

2001-04-10  Christian Arnault  <arnault@lal.in2p3.fr> 13

        * src/cmt_generator.cxx (build_readme): 
        * fragments/readme_use: building readme.html requires to know the
        mgr/cmt style of each used package. This fragment now requires a
        fourth variable MGRSTYLE which reflects the use->mgr_style
        attribute. Generator::build_readme fills in this new variable.

2001-04-06  Christian Arnault  <arnault@lal.in2p3.fr> 12

        * src/cmt_parser.cxx 
        (reach_current_package): Use CmtSystem::getenv instead of base getenv
        
        * src/cmt_symbol.cxx (action): Now really private stuff is
        selected when access is at UserMode and scope is Private.

        * src/cmt_use.cxx (add): This method does not need to maintain
        current scope and access mode any longer.

        * src/cmt_parser.cxx (parse_requirements): Cmt::parse_requirements
        now manages the AccessMode and Scope when recursing into
        requirements files of used packages.

        Cmt::scope          handles the sticky state provided by private/public statements
        Cmt::current_access handles the access mode that reflects the situation of the user

        * src/cmt_parser.h (enum): introduce the AccessMode to distinguish
        between DeveloperMode (when pwd is in the current package
        directory) and UserMode (otherwise).

        * src/cmt.h (class Cmt): Cmt::current_mode is now current_access
        and is of type AccessMode

        * src/cmt_parser.cxx (reach_current_package): Use
        CmtSystem::getenv instead of base getenv

        * src/cmt_use.cxx (Use::get_paths): 
        * src/cmt_pattern.cxx (Pattern::apply ()) : bug in computing the
        path between two Uses. The result now includes the current Use.

2001-04-05    <arnault@lal.in2p3.fr> 12

        * src\cmt_tag.cxx (Tag::add(const cmt_string& name, int priority):
        clear a newly created Tag object (to deal with the reuse of old
        objects)

        * src\cmt_pattern.cxx (Pattern::add) : clear a newly created
        pattern object (to deal with the reuse of old objects)

        * src\cmt_use.h (class Use): Add Use::author_action and
        Use::manager_action to fill in the author and manager information.

        * src\cmt_parser.cxx (select): fill in author and manager values
        with the complete line. When several author and manager statements
        are provided, fill in as several lines (separated with a new-line).

        * src\cmt_generator.cxx (analyze_file (const Constituent&
        constituent, const cmt_string& file) : production of objects for
        libraries and applications is strictly identical.

2001-04-03  Christian Arnault  <arnault@lal.in2p3.fr> 11

        * src/cmt_constituent.cxx (clear): constituent.parameters was not
        cleared in Constituent::clear

        * src/cmt_symbol.cxx (build): add cleanup ValueList objects after
        their addition for ensuring a really new value (due to cmt_string
        optimizing)

2001-04-03  Christian Arnault  <carnault@atlas006.cern.ch> 10

        * mgr/Makefile: Operate the demo targets on different make action
        lines

        * src/Makefile.header: Added -tag=$(tag) to cmt actions

        * fragments/generator_header: create the output directory if
        needed

2001-04-02    <arnault@lal.in2p3.fr> 9

        * fragments\nmake\constituent: added the -tag=$(tag) option to cmt
        build actions

        * src\cmt_parser.cxx (parser): show_constituentxxx recursively
        reads used requirements files

        * src\cmt_pattern.cxx (Pattern::apply () const): protection added
        for the case where the pattern is applied to the package that
        defines it.

2001-03-29  Christian Arnault  <carnault@atlas005.cern.ch> 8

        * src/cmt_use.cxx (get_paths): 
        * src/cmt_use.h (class Use): 
        * src/cmt_pattern.h (class IgnorePattern): 
        * src/cmt_pattern.cxx (const apply): Bug in apply global patterns
        : a pattern defined in one package should only be applied to the
        Uses that are on one of the paths between the current Use and the
        one wher the pattern is defined (and not to the Uses that never
        pretend to inherit that pattern!!!)

        This required to implement the Use::get_paths which fills in the
        inclusive list of all Uses that are between two Uses.

2001-03-27  Christian Arnault  <carnault@lxplus017.cern.ch> 7

        * fragments/dependencies: protection against missing dependency
        make fragment during clean operations.

        * src/cmt_constituent.cxx (class constituents_action_iterator):
        the -suffix= option was hidden by the user variable specification
        while parsing the constituent parameters.

2001-03-23  Christian Arnault  <carnault@atlas007.cern.ch> 6

        * mgr/requirements: clean up WIN32 tag variants definitions

        * src/Makefile.header (setup.make): Display of the target in case
        of target not found (.DEFAULT)

        * fragments/make_setup (csh): few checks

        * fragments/installer: add the creation of $(install_dir) if
        needed

2001-03-21  Christian Arnault  <arnault@lal.in2p3.fr> 5

        * src/cmt_parser.cxx (parse_arguments): When the tag specified in
        the command line arguments (using -tag=<tag>) is the same as
        CMTCONFIG, then still validate the tag given by uname

        * fragments/dependencies: generate
        ${CONSTITUENT}_dependencies.make into $(bin)

        * fragments/constituent: generate ${CONSTITUENT}.make into $(bin)

        * src/cmt_constituent.cxx (parse): 
        * src/cmt_constituent.h (class Constituent): Added the two-step
        parsing of the constituents specifications : first stage during
        parsing of the requirements file, parameters are simply stored in
        the constituent object and not interpreted. Second stage : after
        building the standard macros (once requirements files have
        entirely been read) then constituent objects are parsed.

        * src/cmt_parser.cxx: Add Constituent::parse_all in
        Cmt::set_standard_macros to finalize the constituent
        parsing. Install set_standard_macros in several additional actions



2001-03-16  Christian Arnault  <arnault@lal.in2p3.fr> 4

        * src/cmt_cvs.cxx (class CvsImplementation): Get the files at the
        top directory when doing a cmt checkout.  

        Only checkout at head for the top package (ie do not recurse at
        head) and when -r is not specified.

        * src/cmt_symbol.cxx (resolve_value_for_macros): Perform the
        substitution of ${} to %% (or reverse) even if the env. var. is
        not defined in CMT.

        * src/cmt_parser.cxx (install_setup_scripts): Setup scripts on
        Windows generate the temporary expansion script in
        %HOMEDRIVE%%HOMEPATH%.

2001-03-16  Christian Arnault  <carnault@atlas009.cern.ch> 3

        * mgr/requirements: clean up variants for VisualC and
        VisualC/debug

2001-03-15    <arnault@lal.in2p3.fr> 2

        * src\cmt_use.cxx (class use_action_iterator): Strange name
        conflict: the use_action_iterator::set method is in conflict with
        something else when the class is named "action_iterator" (is it a
        conflict with the same private class defined in Symbol.cxx ??)

        * src\NMakefile.header (cmtexe): Fix for re-building cmt when
        cmt.exe does not exist.

2001-03-13  Christian Arnault  <arnault@lal.in2p3.fr> 1

        * src/cmt_use.cxx (class action_iterator): Introducing the
        action_iterator class for managing the local expansion of macros
        in the syntax parser (similart to what was done in Symbol::action)

        * src/cmt_generator.cxx (Generator::build_make_setup) when
        generating setup.make, the default value for constituents is
        extracted from the constituents macro.

2001-03-06  Christian Arnault  <arnault@lal.in2p3.fr>

        * src/cmt_cvs.cxx (class CvsImplementation): Show both top tags
        and non-top tags in cmt cvstags.

        * doc/CMT.htm: Addition of several slide shows (from Atlas)

        * mgr/cmt_buildcvsinfos2.sh (error): The awk script had to be
        protected against multiple ocurrences of the /symbols/,/locks/
        pattern.

        Implement both in python and in shell script the differntiated
        production of top tags and non-top tags. Top tags are the set of
        tags sharing the most recent CVS tagged version id (ie. the HEAD
        may be more recent)

2001-03-05    <arnault@lal.in2p3.fr>

        * src\cmt_parser.cxx (do_build_library_links): Handle libraries
        specified as a full path in <package>_libraries

        * src\cmt_parser.cxx (print_context): 
        * src\cmt_symbol.cxx (all_print): Use one line per
        env. var. assignment when generating setup scripts (instead of ;
        separated instructions) . The latter style should be no longer
        needed since we use temporary files.

        * src\cmt_parser.cxx (set_standard_macros): Add CMTCONFIG to the
        standard sets, so as to let it known as a plain "symbol"

2001-03-02    <arnault@lal.in2p3.fr>

        * src\cmt_system.h: introduce the CmtSystem::ev_open () and
        CmtSystem::ev_close () to get the OS-dependent pattern for
        environment variable definition.

        * src\cmt_symbol.cxx (resolve_value_for_macros): Substitute
        patterns ${xxx} or %xxx% to the appropriate OS-dependent pattern
        when producing "set" values only (this is only done when the
        pattern is not already the good one)

        * src\cmt_parser.cxx (install_setup_scripts): Changed
        >>${tempfile} into >${tempfile} in setup scripts (fix a constraint
        in csh)

2001-02-26  Christian Arnault  <arnault@lal.in2p3.fr>

        * src/cmt_parser.cxx (do_build_temporary_name): Add the build
        temporary_name command to supply that missing function on various
        shells.
        (install_test_setup_scripts): Apply this new build service to
        setup scripts generation.

        * src/Makefile.header: Needed a trailing end-of-line

2001-02-15  Christian Arnault  <arnault@lal.in2p3.fr>

        * src/cmt_cvs.cxx (class CvsImplementation): Fix misuse of
        checkout_package arguments (confusion between package path and
        checkout directory)

2001-02-26    <arnault@lal.in2p3.fr>

        * src\cmt_parser.cxx (install_test_setup_scripts): use mktemp for
        setup scripts.

        * mgr\requirements: Suppress local private configuration of
        MSVC++. It has to be done previously to operate on CMT (even
        before making the INSTALL.bat)

2001-02-26  Christian Arnault  <arnault@lal.in2p3.fr>

        * src/cmt_deps_builder.cxx ((char* ptr,
                              state_def& state,
                              const cmt_string& dir_name,
                              int current_path_index,
                              const CmtSystem::cmt_string_vector& include_paths,
                              const CmtSystem::cmt_string_vector& substitutions,
                              CmtSystem::cmt_string_vector& all_deps,
                              CmtSystem::cmt_string_vector& deps)
        * src/cmt_generator.cxx ((const cmt_string& file_name)

        Rollback recent change to work on cmt_strings rather than char* to
        restore speed.

2001-02-15  Christian Arnault  <arnault@lal.in2p3.fr>

        * src/cmt_generator.cxx (build_dependencies): Restore the
        mechanism that takes into account the arguments, and the source
        list when -all_sources option is provided.

        * mgr/requirements: change /machine:I386 into /machine:IX86 as
        link option for VisualC

2001-02-13    <arnault@lal.in2p3.fr>

        * src\cmt_generator.cxx (build_dependencies): Do not require the
        source list from the arguments. Instead, get the sources directly
        from the constituents definition.

        The "cmt build dependencies" now only requires the constituent name. 

        * src\cmt_deps_builder.cxx: Read files at once into a cmt_string
        and work from the text instead of reainf line by line from the file.

        Install the detection of fortran include statements

2001-02-06    <arnault@lal.in2p3.fr>

        * src\cmt_use.cxx: clean up space & tabs

        * cmt_parser.cxx (parse_requirements_text): Abort the parser in
        case of error, but only for check configuration command.

        * NMakefile.header (lex_echo): Add -quiet option to cmt command
        except cmt check configuration
        
        * constituents.nmake: Add -quiet option to cmt command

2001-01-30    <arnault@lal.in2p3.fr>

        * all dsp fragments : suppress the Win32 Release
        configuration. Only keep the Win32 Debug. This makes possible the
        generation of msdev using the syntax cmt build msdev
        -tag=VisualCdbg

2001-01-30    <arnault@lal.in2p3.fr>

        * mgr/cmt_buildcvsinfos.py: first attempt to make the cvs script
        written in Python

        * mgr/requirements: Consistently base Windows tag on VisualC rather
        than WIN32

        upgraded setup.tcsh setup.zsh

        introduced cmt show include_dirs
        
        introduced cmt show constituent <name>

        bug in Pattern::add : overridden patterns were not cleared.

        cmt config must recursively get used packages (at least to get patterns)

        introduced cmt show pattern_names (at least for completion mechanisms)        
          new action : action_show_pattern_names

        experimental work started on build triggers
        
          macro build_triggers
                implied_library_prefix
                implied_library_sufffix

          new library option -triggers
          new constituent attribute build_triggers
          new fragment dependencies_and_triggers for libraries

        bug in cmt_system.cxx::scan_dir

        Recursively get all requirements file in cmt config action


        Changed strategy for argument parsing error detection
        
2001-01-30    <arnault@lal.in2p3.fr>

        * cmt_use.cxx ((const cmt_string& from_path) : bug in detection of
        "use pack " without version specification at all (ie equiv. to
        *). We needed to check we are on a real CMT package.

        * cmt_constituent.cxx (class action_iterator): Expand the macros
        before acting upon a constituent specification. Each expanded word
        may then result in several words. Thus the line parser is
        re-implemented through a local operator class "action_iterator",
        in charge of filling up a new constituent object from the expanded
        statement. (Note that this mechanism could perfectly be reused for
        other statements eg "use" !!!)

        * cmt_parser.cxx (set_standard_macros): Implement all_constituents
        and all_constituentsclean unconditionally.

        * NMakefile.header (checkuses): if defined statements require that
        the macro to test is provided without quotes.

        * cmt_generator.cxx: Apply the new convention of installing object
        files into $(bin)${CONSTITUENTS} also for applications (was only
        done for libraries)

        * cmt_parser.cxx (print_context): Take the current CONFIG name
        from CmtSystem::get_cmt_config rather than recursively calling
        "cmt system", when generating setup scripts.

        * cmt_cvs.cxx (class CvsImplementation): Use '/' ínstead of
        CmtSystem::file_separator for CVS-only file specs.

2000-12-26    <arnault@lal.in2p3.fr>

        * cmt_fragment.h (class Fragment and FragmentHandle): Install all
        variants of (win)copy methods that act upon a cmt_string instead
        of a FILE*.

        * cmt_model.cxx: Create the implementation file for CmtModel 

        * cmt_model.h (class CmtModel): Create the CmtModel class

        * cmt_parser.cxx (do_expand_model): Add the new command verb :
        'expand model' and all associated features
        (do_expand_model): call the CmtModel::expand

