2012-01-06 477 * mgr/fragments/packages_header: Allow LOG_SUFFIX to be configured with environment variable, simplify expressions for Package_failure_handler * mgr/fragments/nmake/packages_header: idem * mgr/fragments/package: Introduce use of Package_failure_handler in case NO_ALL_GROUPS is set, for clean, binclean, uninstall, check targets, capture stderr and stdout into log file in case BCAST_CMD is list of commands or compound command, for clean, uninstall, check targets, use simplified Package_failure_handler * mgr/fragments/nmake/package: idem * src/Makefile.header: Add clean target to help message 2011-12-23 476 * source/cmt_commands.cxx: In class ArgParser function do_create, check if at least 2 arguments specified and set error otherwise * source/cmt_symbol.cxx: In class SymbolValueList function print, add comments only if Verbose level (of diagnostic messages) is activated so as to make Requirements mode setup output shorter * source/cmt_system.h: In class CmtSystem, make functions file_separator, path_separator, command_separator inline, remove function cwd_variable * source/cmt_system.cxx: Introduce and make use of cwd_env_var preprocessor macro, on Windows, use _unlink, _chmod, _putenv instead of deprecated - beginning in Visual C++ 2005 - POSIX names functions * source/cmt_generators.cxx: In class PackagesMakefileGenerator function build, add template PACKAGEPREFIX for package_fragment * source/cmt_parser.cxx: In class Cmt function do_build_broadcast_config, add _offset, VERSION macros to broadcast tags file * mgr/fragments/packages_header: Include broadcast tags file * mgr/fragments/nmake/packages_header: idem * mgr/fragments/nmake/package: Add package info (name, version, offset) to diagnostic messages, making use of added macros in tags file * mgr/fragments/package: idem, use redirection operator (rather than touch) to create empty or truncate existing package log file * mgr/fragments/nmake/library: For clean target, remove constituent directory and manifest file * mgr/fragments/nmake/library_no_static: idem * mgr/fragments/nmake/library_no_share: For clean target, remove constituent directory * mgr/fragments/nmake/cleanup_application: For clean target, remove manifest file 2011-12-11 475 * source/cmt_error.h: In class CmtError, introduce system_error code * source/cmt_error.cxx: In class TheError, in constructor add introduced system_error code string name * source/cmt_parser.cxx: In class Cmt, in function do_create, check return value of all invoked functions, set error on failure making use of system_error code, and return, so that exit value of "cmt create" command be set according to command success/failure 2011-12-11 474 * source/cmt_system.cxx: In class CmtSystem, in function cd, do not print error message on system chdir function failure, in functions test_directory, test_file, do not set error or print error message on system stat function failure, in functions create_symlink, remove_file, on POSIX systems, do not print error message or return failure on system unlink function failure for errno == ENOTDIR * source/cmt_use.cxx: In function uninstall_library, always remove reference file with internal command (as create) * mgr/cmt_install_action.sh: Exit with error on file command or reference file command error * mgr/cmt_uninstall_action.sh: idem * mgr/cmt_install_action.bat: idem * mgr/cmt_uninstall_action.bat: idem 2011-12-10 473 * source/cmt_system.cxx: In class CmtSystem, when using system stat function on POSIX systems, do not set error for errno == ENOTDIR 2011-12-09 472 * source/cmt_system.h: In class CmtSystem, introduce function cwd_variable * source/cmt_system.cxx: In class CmtSystem, implement function cwd_variable, in functions pwd, cd make use of cwd_variable, in function cd do not put cwd_variable into environment on Windows * source/cmt_use.cxx: In class UseContext function mask_auto_imports switch, add default path to avoid warning on Windows * source/cmt_fragment.cxx: In class Fragment function print, return 0 if fragment not located, in function locate leave path empty if fragment not located, in function copy, set error on read failure * source/cmt_generators.cxx: In class DocumentGenerator function build, return on dependency_fragment copy errors, in class PackagesMakefileGenerator function build, return on fragments copy errors * source/cmt_generator.h: In class InGenerator, add member pedantic * source/cmt_generator.cxx: In class Generator function build_constituent_infile, return value of class InGenerator build function, in class InGenerator class Buffer function print check return value of function initialize and return on error, in class InGenerator classes Languages and Fragments function initialize set error if language or fragment not found, and return number of errors, In class InGenerator function build, check return value of fragments print function, set error and return number of errors, if pedantic is enabled * source/cmt_parser.cxx: In class Cmt functions do_build_constituent(s)_config, set error if tag undefined or empty * mgr/fragments/nmake/dependency: Introduce fragment for document NMakefile generation * mgr/fragments/nmake/package: Introduce fragment for broadcast NMakefile generation * mgr/fragments/nmake/packages_header: idem * mgr/fragments/nmake/packages_trailer: idem * mgr/fragments/nmake/dependencies: Use $(build_dependencies) command with dependencies infile and include directories and source files supplied via CLI, rebuild as needed regardless of QUICK mode * mgr/fragments/nmake/constituent: In QUICK mode, rebuild constituent NMakefile if any requirements file changes, do not rebuild for uninstall target * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/nmake/group: Remove dependency on makefilesclean * mgr/fragments/nmake/constituents_header: Specify explicit (with empty command) rules for requirements files for optimisation * mgr/fragments/nmake/constituents_trailer: Remove remove_library_links, makefilesclean targets (not needed), move binclean target to NMakefile.header * mgr/fragments/nmake/make_header: Define dependencies infile for use with $(build_dependencies) command * mgr/fragments/nmake/cpp: Add explicit dependency on source file to ${CONSTITUENT}_dependencies.nmake * mgr/fragments/nmake/cpp_library: idem * mgr/fragments/nmake/c: idem * mgr/fragments/nmake/c_library: idem * mgr/fragments/nmake/fortran: idem * mgr/fragments/nmake/fortran_library: idem * mgr/fragments/nmake/lex: idem * mgr/fragments/nmake/lex_library: idem * mgr/fragments/nmake/yacc: idem * mgr/fragments/nmake/yacc_library: idem * src/NMakefile.core: Add .in to known suffixes * src/NMakefile.header: Introduce and implement BCAST mode, making use of cmt build broadcast_config command. In QUICK mode, rebuild constituents or broadcast NMakefile and corresponding macros files if any requirements file changes, extend dynamic help messages on targets available for BCAST mode * src/setup.bat: Enable CMT QUICK mode * src/Makefile.header: Improve help message, minor code cleanup * mgr/fragments/make_header: Minor code cleanup * mgr/fragments/constituents_header: Remove makefiles target * mgr/fragments/constituents_trailer: Remove makefilesclean target * mgr/fragments/package: Add check target * mgr/fragments/packages_trailer: idem * mgr/fragments/packages_header: idem, make Package_failure_handler for ignore PACKAGE_FAILURE_POLICY always return 0 2011-12-02 471 * source/cmt_system.cxx: In class CmtSystem functions, add cmt name into system functions error messages, rename helper function to get_absolute_path 2011-12-01 470 * mgr/fragments/application: Specify explicit empty command in (un)install target rules (for optimisation to avoid implicit rule search) * mgr/fragments/library: idem * mgr/fragments/library_no_share: idem * mgr/fragments/library_no_static: idem * mgr/fragments/check_application: idem in check target rule 2011-11-30 469 * source/cmt_system.cxx: In class CmtSystem functions, check return value of system functions getcwd, chdir, stat, unlink, symlink, rmdir, mkdir, tmpnam, putenv, as well as of cmt_string class read function and propagate it via return value, or via setting error, and/or by printing error message * mgr/fragments/dependencies: Remove dependencies Makefile (and stamps) for constituent clean target 2011-11-29 468 * source/cmt_generators.cxx: In class DependencyGenerator, function reset, set default name to "cmt_unnamed", in function prepare_header_file_filters, do not create filter, if corresponding macro is defined with empty value * source/cmt_generator.cxx: In class Generator, function build_dependencies_infile, do not write header file filters macro, if it is defined with empty value * source/cmt_constituent.cxx: Minor code cleanup * mgr/fragments/library: Pass necessary for script $(make_shlib) macro values via environment * mgr/cmt_make_shlib_common.sh: Take necessary macro values from environment, if available, rather than invoke CMT multiple times to compute * mgr/cmt_uninstall_action.sh: Unset CMTDEBUG if set in order to avoid debug output interference with script, and enable shell trace mode 2011-11-28 467 * source/cmt_generators.cxx: In class DependencyGenerator, function build, make constituent name optional for command cmt build dependencies * source/cmt_commands.cxx: Update command help info, in class CommandHelp, functions show, show_all, print help info on stdout (rather than stderr) * mgr/fragments/dependencies: Specify constituent name via option value * source/cmt_vcs.cxx: In class Vcs, function help, print help info on stdout (rather than stderr) 2011-11-28 466 * source/cmt_constituent.cxx: In class Constituent, in function parse, keep associated tag target_ only if this tag is used in tag or symbol expression 2011-11-27 465 * source/cmt_system.cxx: In function CmtSystem::remove_file, do not use custom error message * source/cmt_symbol.h: In class Symbol, add const qualifier to check_tag_used function argument, to resolve_macro_value function * source/cmt_symbol.cxx: idem, add same actions for action_build_broadcast_config as for action_build_constituents_config, action_build_constituent_config * source/cmt_use.h: In class Use, introduce absolute_library_path, remove_library_links functions * source/cmt_use.cxx: Implement introduced functions, in install_library helper function, check return value of called functions, set error (rather than print error message) as appropriate, implement uninstall_library helper function, refactor build_library_links function to use absolute_library_path * source/cmt_deps_builder.h: Make m_filter member of class DepsBuilder::HeaderFilter to be owned by class and cleared accordingly * source/cmt_deps_builder.cxx: In header_file_action, build_deps functions check return value of read function, set error as appropriate, also set error if path specified for dependencies calculation not found. In class DepsBuilder, run function, pass $(app_$(CONSTITUENT)_cppflags), $(lib_$(CONSTITUENT)_cppflags) to external dependencies generator specified via preprocessor_command macro, if any * source/cmt_generators.h: In classes DocumentGenerator, LibraryGenerator, in function build, introduce argument bool& dependencies, in class DocumentGenerator, introduce members Variable m_FILEEXTENSION, FragmentHandle dependency_fragment, in class LibraryGenerator, declare specific function fill_names_outputs. Introduce class PackagesMakefileGenerator, rewrite class DependencyGenerator * source/cmt_generators.cxx: In class LibraryGenerator, implement fill_names_outputs, in class DocumentGenerator function build, add dependency_fragment for each source file with additional template FILEEXTENSION (also added for fragment) so that ${CONSTITUENT}_dependencies.make gets rebuilt whenever source file OR its dependencies change. Implement class PackagesMakefileGenerator used to build BCAST mode Makefile. In class DependencyGenerator, re-implement function build (const CmtSystem::cmt_string_vector&) so that it makes use of files and includes from CLI input, if any, enhance its algorithm, enhance function prepare_header_file_filters so that it makes use of input file dependencies[_CONSTITUENT].in without CMT * source/cmt_generator.h: In class CmtGenerator, remove prepare_use_context function, m_deps_builder member. In class Generator, introduce argument bool& dependencies in build_constituent_makefile function, declare build_library_links_infile, build_dependencies_infile, build_packages_makefile functions * source/cmt_generator.cxx: In class CmtGenerator function reset, reset m_bin, m_output_file_name, m_output_file, m_constituent members, in class Generator, implement build_library_links_infile, build_dependencies_infile, build_packages_makefile functions, in class InGenerator constructor, add document dependency fragment * source/cmt_constituent.h: In class Constituent, change add_for_action function signature * source/cmt_constituent.cxx: In class Constituent, in function parse, do not treat action_value variable definition specially, in function add_for_action, do not assign target_ tag to document corresponding to action by default but only if this tag is used somewhere * source/cmt_commands.cxx: In class ArgParser, in function do_build, introduce broadcast_config command and its options processing, enhance dependencies command options processing so that it makes use of files and includes from CLI input and can have global options specified mixed with its options. In class CommandHelp, in constructor, add help info for broadcast_config, dependencies commands * source/cmt_parser.h: In enumeration ActionType, add value action_build_broadcast_config * source/cmt_parser.cxx: In class Cmt, in function do_broadcast, unset CMTBCAST variable in environment of command(s) being broadcast to avoid looping, in function do_build_constituent_config, generate dependencies infile if needed only, incorporate call to do_check_configuration into function do_build_constituents_config so as not to invoke cmt check configuration command in Makefile, as part of do_build_constituents_config, generate library_links infile, and dependencies infile for constituents without target tag, implement function do_build_broadcast_config to generate broadcast Makefile, and broadcast specific macros Makefile, enhance do_build_library_links function to work with generated library_links infile, make function do_check_configuration set error if non-constant cmtpath_pattern found for package outside CMTPATH - cannot be applied, re-implement do_remove_library_links function making use of remove_library_links from class Use. In function fill_for_all_constituents of class StandardMacroBuilder, print warning message if package requested for import cannot be imported for constituent without target tag during cmt build constituents_config, otherwise during cmt build constituent_config * source/cmt_cmtpath_pattern.h: In class CmtPathPattern, introduce function is_constant * source/cmt_cmtpath_pattern.cxx: Implement is_constant function * source/cmt.h: In class Cmt, introduce function do_build_broadcast_config * mgr/fragments/package: Introduce fragment for broadcast Makefile generation * mgr/fragments/packages_header: idem * mgr/fragments/packages_trailer: idem * mgr/fragments/dependency: Introduce fragment for document Makefile generation * mgr/fragments/dependencies: Use $(build_dependencies) command with dependencies infile and include directories and source files supplied via CLI * mgr/fragments/constituent: In QUICK mode, rebuild constituent Makefile if any requirements file changes. Make constituent uninstall targets independent of constituent Makefile (so that no rebuild happens before uninstall), make remove_library_links dependent on constituent uninstall targets to ensure library links uninstallation order * mgr/fragments/constituent_lock: idem * mgr/fragments/constituents_header: In QUICK mode, run $(build_library_links) command with library_links infile, if any requirements file changes, keep .DEFAULT target if PEDANTIC is undefined, specify explicit (with empty command) rules for requirements files for optimisation * mgr/fragments/constituents_trailer: In QUICK mode, run $(remove_library_links) command with library_links infile, make uninstall target (rather than clean target) dependent on remove_library_links target to ensure library links uninstallation * mgr/fragments/make_header: Define dependencies infile for use with $(build_dependencies) command * mgr/fragments/cpp: Add explicit dependency on source file to ${CONSTITUENT}_dependencies.make * mgr/fragments/cpp_library: idem * mgr/fragments/c: idem * mgr/fragments/c_library: idem * mgr/fragments/fortran: idem * mgr/fragments/fortran_library: idem * mgr/fragments/lex: idem * mgr/fragments/lex_library: idem * mgr/fragments/yacc: idem * mgr/fragments/yacc_library: idem * mgr/requirements: Declare fragments package, packages_header, packages_trailer, dependency * src/Makefile.core: Add .in to known suffixes * src/Makefile.header: Introduce and implement BCAST mode, making use of cmt build broadcast_config command. In QUICK mode, rebuild constituents or broadcast Makefile and corresponding macros files if any requirements file changes, specify explicit (with empty command) rules for requirements files for optimisation, implement dynamic help messages on targets available for BCAST mode * src/setup.csh: Set MAKEFLAGS, if unset, to set number of job slots to number of processors, and enable CMT QUICK mode * src/setup.sh: idem. Use only shell parameter expansion to determine whether shell is intercative. 2011-07-06 464 * src/setup.bash: Simplify _cmt_escape_compreply function 2011-07-05 463 * src/setup.tcsh: Offer CVS related commands for completion if CVSROOT is set and not null only, provide completions for make and run commands * src/setup.zsh: idem, try default completion if no match found * src/setup.sh: Test for BASH and define command completion for it if appropriate * src/setup.bash: Implement command completion for BASH 2011-06-27 462 * src/setup.zsh: Do not execute if zsh is invoked in other shell (e.g., sh, ksh) compatibility mode * src/setup.sh: Do not test for zsh with string leading to syntax error in other shells (as POSIX conformant non-interactive shell exits, case with BASH versions > 4), define command completions for interactive shell only * src/setup.csh: Define command completions for interactive shell only 2011-06-22 461 * src/setup.tcsh: Improve/fix word completions for tcsh * src/setup.zsh: Improve/fix word completions for zsh * src/setup.csh: Ensure tcsh is always identified and word completions are defined 2011-06-09 460 * source/cmt_use.cxx: In class Use, function reach_package, add package selection criterion based on _native_version (-native_version=VERSION option) in case of CMT structuring style without_version_directory (similarly to style with_version_directory), in function add, add mention of native_version, if specified, to warning message * source/cmt_use.h: In class Use, make function clear public (rather than making class Project friend) 2011-06-08 459 * source/cmt_regexp.h: In class cmt_regexp, introduce clear function * source/cmt_regexp.cxx: In class cmt_regexp, implement clear function * source/cmt_use.h: In class Use, make class Project friend (to give access to function clear) * source/cmt_use.cxx: In class Use, function clear, clear new members alternate_is_head_versions and m_head_version, in class UseProjectAction, function run, clear Use new member alternate_is_head_versions * source/cmt_project.h: In class Project, make copy constructor and assignment operator private * source/cmt_project.cxx: In class Project, function container_action, invoke clear function on container (rather than destructor) 2011-05-10 458 * source/cmt_system.cxx: In class CmtSystem, in functions quote, mangle, correct conversion specification in sprintf * source/cmt_use.cxx: In class Use, in function set_auto_imports, idem * mgr/fragments/nmake/constituent: Generate constituent Makefile from input requirements file (with -f, -without_cmt options) for constituent without associated tag * mgr/fragments/nmake/constituent_lock: idem * mgr/Unix.make: Invoke compiler as c++ for any Darwin platform, do not use recent GNU Make features, specify arch i386 or x86_64 explicitly for relevant Darwin platforms * mgr/GNUmakefile: Use ln with -f option 2011-05-04 457 * source/cmt_use.h: In class Use, declare function set_auto_imports_state with modified signature to follow policy similar to that of function set_auto_imports * source/cmt_use.cxx: In class Use, in function set_auto_imports_state, implement policy similar to that of function set_auto_imports * source/cmt_parser.cxx: In class StandardMacroBuilder, in function fill_for_all_constituents, make use of set_auto_imports_state with modified signature 2011-05-02 456 * source/cmt_use.cxx: In class Use, in function show_sub_uses, make output of "cmt show uses" command compatible with original as it is used by tools, tbroadcast, for example, in function set_auto_imports, increase/decrease level before/after considering sub-uses 2011-04-29 455 * source/cmt_use.h: In class Use, declare function show_sub_uses with modified signature to show, in more detail, origin of uses auto_imports state * source/cmt_use.cxx: In class Use, in function set_auto_imports, implement policy where use has Off != auto_imports, if it is (direct) sub-use without -no_auto_imports of either current use or sub-use with Off != auto_imports, implement function show_sub_uses with modified signature, in function show_all, make use of show_sub_uses with modified signature 2011-04-25 454 * source/cmt_use.cxx: In class Use, in function show_sub_uses, make use of find_valid ensure valid uses are followed 2011-04-23 453 * source/cmt_use.cxx: In class Use, in function set_auto_imports_state, revisit uses specified explicitly with -import= encountered in constituent specification for the first time, to ensure is imported, in function set_auto_imports, revisit sub-uses of current use encountered in its requirements file for the first time to ensure their auto_imports state takes precedence 2011-04-20 452 * source/cmt_awk.cxx: Add explicitly include to define PATH_MAX, to fix build failure on Debian * source/cmt_system.cxx: idem 2011-04-20 451 * source/cmt_tag.h: In class Tag, in function mark, introduce mandatory argument (to pass context), introduce member m_act_context to hold context of tag activation, use package name, if available * source/cmt_tag.cxx: In function mark, implement use of introduced argument, make use of it in all function mark invocations, in functions unmark_all, restore_tree, mark, add, introduce or enhance debug messages. In function show_definition, print m_act_context with prefix "activated", if does not duplicate already printed information, to provide tag activation context in "cmt show tags" command output * source/cmt_syntax.cxx: In class SyntaxParser, in function parse_requirements, pass tag activation context to class Tag function mark via argument * source/cmt_commands.cxx: In class ArgParser, in functions do_do, option_tag, option_tag_add, option_tag_remove, idem * source/cmt_project.cxx: In class Project function order_all, in class Strategy function update, idem * source/cmt_parser.cxx: In class Cmt, in functions configure_config_tag, configure_hosttype_tag, configure_site_tag, restore_all_tags, configure_tags, configure_uname_tag, configure_devenv_tag, configure_version_tag, load, reach_current_package, use_extra_file, idem. In class Cmt, in function do_check_configuration, for standalone package, if current use is outside CMTPATH (and action is not action_setup) do not issue warning or set error 2011-04-18 450 * source/cmt_parser.cxx: In class Cmt, in function do_check_configuration, if current use is outside CMTPATH (and action is not action_setup) issue warning or set error, provided [CMT]PEDANTIC environment variable is set, thus adding this check to "cmt check configuration" command 2011-04-15 449 * source/cmt_use.h: In class Use, introduce functions find_valid, is_head_version, members m_head_version, alternate_is_head_versions * source/cmt_use.cxx: Implement functions find_valid, is_head_version. Make use of find_valid in functions set_auto_imports_state, set_auto_imports to ensure valid uses are followed. Make use of is_head_version, in functions reach_package, add, of alternate_is_head_versions, in function select_alternate, to ensure head version satisfies any request and takes precedence 2011-04-12 448 * source/cmt_awk.cxx: In class FAwk, in functions run, return failed on error reading file * source/cmt_system.cxx: In class CmtSystem, introduce and implement functions mangle * source/cmt_system.h: idem * source/cmt_install_area.cxx: In class CmtInstallAreaMgr, in function build_current_installarea, make use of Use::current (instead of pwd) * source/cmt_commands.cxx: In class ArgParser, functions option_with(out)_cmt, add -with(out)_cmt to cmtflags * source/cmt_project.cxx: In class Project, in function find_in_cmt_paths, do not invoke pwd * source/cmt_symbol.cxx: In class Symbol, in function create, suppress warning about set/macro ROOT for current package, in function action, use mangled package prefix with scripts, in function print_clean, use mangled set, path names with corresponding message, and quoted path, script values for cleanup scripts, in function print, use mangled set, path names with corresponding message, and quoted script values for setup scripts. In class SymbolValueList, in function print, output CMT package symbols as well * source/cmt.h: In class Cmt, introduce universal function install_scripts for both types of scripts, and function get_cmt_flags working on file, drop functions install_test_cleanup_scripts, install_test_setup_scripts * source/cmt_parser.cxx: In class Cmt, in functions do_config, do_relocate, retrieve cmtflags from input requirements file and current cmtflags, if any, and pass them to universal function install_scripts, in function do_setup, output cmtflags in Requirements mode inverting -with(out)_cmt, implement function get_cmt_flags working on file, universal function install_scripts, move static function mangle to class CmtSystem, in functions print_clean, print_context, use mangled package prefix in cleanup, setup scripts, in function set_standard_macros, create StandardMacroBuilder instance for Use::current (rather than Me). In class StandardMacroBuilder, in constructor, do not invoke pwd, in functions fill_for_package, fill_for_current_package, do not use argument, in function fill_for_branches, do not use pwd. 2011-03-22 447 * source/cmt_use.cxx: In class Use, in functions, set_auto_imports_state, set_auto_imports change order of setting auto_imports state to from first to last, depth first, and first encountered taking precedence * source/cmt_parser.cxx: In class Cmt, in function parser, configure auto_imports state using same order as above * source/cmt_fragment.cxx: Make diagnostic message more informative 2011-03-16 446 * source/cmt_use.h: In class Use, change signature of functions set_auto_imports_state, set_auto_imports * source/cmt_use.cxx: In helper class UseContext, introduce and implement function mask_auto_imports, in class use_action_iterator, in function get_use, do not deal with auto_imports state of added Use object. In class Use, function add, ensure that finally chosen Use object gets appended to sub_uses of context_use, it is used when setting auto_imports states. Implement functions set_auto_imports_state, set_auto_imports with modified signatures making sure all sub uses are operated upon recursively, order from last to first, depth first, and first encountered taking precedence * source/cmt_parser.cxx: In class Cmt, in function parser, configure auto_imports state of all uses after all requirements have been read. In class StandardMacroBuilder, in function fill_for_all_constituents, ensure that all sub uses of imported packages are also imported if not imported yet and not specified with -no_auto_imports option * source/cmt_project.cxx: In class ProjectFactory function create_project, use set_auto_imports with modified signature 2011-03-08 445 * source/cmt_parser.cxx: In class Cmt, in function do_config, remove constituent input requirements file(s), backup Makefile fragments, do not invoke function reach_current_package (done before do_config). In function parser, invoke class SyntaxParser function parse_requirements_text with extra statements, if any, thereby making -e= functional * source/cmt_commands.cxx: In class ArgParser function option_e, do not print warning when extra statement(s) are provided on command line * mgr/fragments/cleanup_header: With PEDANTIC set, fail for taget without rule, using Make function error * mgr/cmt_svn_checkout.py: Rename cmt/version.cmt and issue warning if under version control and checked out with CMT structuring style with_version_directory 2011-03-07 444 * source/cmt_system.cxx: In class CmtSystem, introduce function quote * source/cmt_system.h: idem * source/cmt_fragment.cxx: In class fragment_action_iterator, function add_word, ensure that header, trailer fragments are overridden, if declared again, introduce, parse and set for current use fragment m_path. In class Fragment, in function add, introduce argument path, in function print introduce PrintMode, ostream arguments and add implementation for Requirements mode, in function locate, optimise fragment search, add warning, if not found. In class FragmentHandle, in functions copy do not print info message about not found fragment, in function setup make such message warning * source/cmt_fragment.h: idem * source/cmt_constituent.cxx: In class Constituent, in function show introduce argument ostream, make use of class CmtSystem function quote * source/cmt_constituent.h: idem * source/cmt_language.cxx: In class Language, introduce members m_use, m_dependencies_options_expanded, function dependencies_options_expanded, in function show, introduce PrintMode, ostream arguments and add implementation for Requirements mode, in function action, introduce argument Use* * source/cmt_language.h: idem * source/cmt_syntax.cxx: Make use of modified class Language function action * source/cmt_symbol.cxx: Remove helper function quote * source/cmt.h: In class CmtContext, introduce member m_use_cmt, in class Cmt, function use_extra_file * source/cmt_generators.h: In class ConstituentsMakefileGenerator function build use package, and file arguments only * source/cmt_generators.cxx: In class LibraryGenerator, in function, java_file_action do not test for output file existence, in function build, do not invoke function prepare_use_context. In class DocumentGenerator, in function build, do not invoke function filter_path, prepare_use_context, get_all_files for second time, do not check for existence of source file or issue warning (done in function analyze_file), in function analyze_file, do not define variable output_dir. In class ConstituentsMakefileGenerator function build, use file argument rather than parse string vector * source/cmt_generator.h: Introduce class InGenerator, in class Generator function build_constituents_makefile, use file argument rather than string vector, introduce function build_constituent_infile * source/cmt_generator.cxx: Implement introduced class and function in order to generate input constituent requirements file * source/cmt_commands.h: Introduce global options -with_cmt, -without_cmt * source/cmt_commands.cxx: Implement options -with_cmt, -without_cmt, global and for commands "build constituent makefile", "build constituents config", enhance options parsing for commands "build constituent(s) makefile/config", improve error handling, diagnostic and help messages * source/cmt_parser.cxx: Enhance options parsing and error handling in Cmt class functions do_build_constituent(s)_makefile, do_build_constituent(s)_config, generate input requirements file for constituent(s) without associated tag in function do_build_constituents_config. In function parser, handle help requests immediately after parse_arguments, do not use CMT if requested, use extra file instead of requirements, if specified, via implemented function use_extra_file * mgr/fragments/constituent: Generate constituent Makefile from input requirements file (with -f, -without_cmt options) for constituent without associated tag * mgr/fragments/constituent_lock: idem * mgr/cmt_make_shlib_common.sh: Improve error handling, unset CMTDEBUG if set in order to avoid debug output interference with script * mgr/cmt_install_action.sh: idem * mgr/requirements: Do not declare readme_doc fragment (not provided) 2010-09-07 443 * mgr/Unix.make: Derive mode/architecture from CMTBIN or from command line switch M32/M64 and specify it explicitly for g++ * mgr/GNUmakefile: Do not recreate cmt->cmt.exe symlink if exists 2010-09-04 442 * mgr/Unix.make: Introduce tag specific Makefile (derived from part of mgr/Makefile) with macro definitions for Unix-like systems, allows for user overrides/extra flags via CXXFLAGS, LDFLAGS, TARGET_ARCH variables * mgr/GNUmakefile: Introduce Makefile (derived from mgr/Makefile) which builds CMT with standard constituents.make file section, e.g., includes core definitions, mgr/Unix.make as tag specific Makefile, rebuilds cmt.make * mgr/cmt.make: Include core definitions, tag specific Makefile - similarly to when building any other application/library 2010-09-01 441 * mgr/requirements: Do not modify MAKEFLAGS * src/Makefile.core: Append --no-print-directory to MAKEFLAGS when echoing Make commands 2010-08-27 440 * source/cmt_parser.cxx: In class Cmt, in functions do_build_constituent(s)_config, call clear on file stream after closing it, necessary in case close fails, e.g., file does not exist (the case with Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86, but does not seem to be the case with gcc 4.1.2) * src/NMakefile.header: Check exit code of commands and use error Makefile preprocessing directive, if appropriate 2010-08-25 439 * source/cmt_parser.cxx: In class Cmt, in function configure_current_package for standalone case, do not (re)set m_current_structuring_style yet, rather do it in reach_current_package 2010-08-25 438 * source/cmt_parser.cxx: In class Cmt, in functions install_setup_scripts, install_cleanup_scripts, install_test_setup_scripts, install_test_cleanup_scripts, dos_script_prefix, ensure that in setup/cleanup scripts, shell variable name holding temporary file name - with script contents - contains package name, so as to avoid name clashes in case user provided scripts invoke CMT generated setup/cleanup scripts from other packages (which lead to temporary file not being cleaned up). In functions do_config, do_relocate, do not use functions install_test_setup_scripts, install_test_cleanup_scripts for standalone package, use install_setup_scripts, install_cleanup_scripts instead as for standard packages 2010-08-24 437 * source/cmt_project.cxx: In class Project function order_all, consider for ordering projects (which may come from CMTPATH entries) other than current in case current project does not have parents (may have children), unmark tag with project name as appropriate, in function add, print error message about conflicting releases without mode Verbose, in function create, fix typo in diagnostic message. In class ProjectFactory function create_project, add more info to debug message 2010-08-23 436 * source/cmt_project.cxx: In class ProjectFactory function create_project, in case of project requested with conflicting releases, issue warning, do not set CmtError 2010-08-23 435 * source/cmt_commands.h: Introduce option -xml to produce output in XML format, currently for commands "cmt setup", "cmt show projects", "cmt show uses" * source/cmt_commands.cxx: Implement function option_xml * source/cmt.h: In class Cmt, introduce function print_xml_prolog * source/cmt_parser.h: Introduce PrintMode Xml * source/cmt_parser.cxx: In class Cmt, in functions do_setup, print, print_context, implement case for mode Xml, in functions do_show_projects, do_show_uses, pass mode to Project::show_all, Use::show_all, implement function print_xml_prolog * source/cmt_symbol.cxx: In class Symbol, in functions all_print, print, implement case for mode Xml * source/cmt_project.h: In class Project, in functions show_all, show, add optional argument of type PrintMode * source/cmt_project.cxx: Implement added optional argument for mode Xml, in particular * source/cmt_use.h: In class Use, in functions show_all, add optional argument of type PrintMode * source/cmt_use.cxx: Implement added optional argument for mode Xml, in particular, in function get_cmtpath_and_offset, set offset to real_path for packages not belonging to any project * mgr/CMT.dtd: Introduce document type definition for XML format output * src/setup.sh: In PATH, CLASSPATH, only strip entries matching /CMT/, rather than CMT (similar to src/setup.csh) 2010-08-12 434 * source/cmt_commands.h: Introduce option -requirements for command "cmt setup" to generate standalone requirements file from which generate setup script. In class ArgParser, introduce function option_requirements * source/cmt_commands.cxx: Implement function option_requirements * source/cmt_parser.h: Introduce PrintMode Requirements * source/cmt_parser.cxx: In class Cmt functions print and print_context, add case for mode Requirements, former also prints all active tags, latter prints PACKAGEROOT and PACKAGECONFIG as sets. In class Cmt function do_show_macro, do not set error wrong_symbol_type for macros or sets with name of form NAMEROOT. In class StandardMacroBuilder function fill_for_branches, for standalone package case, do not override basic macros (srcdir, src, inc, doc, bin, BIN, javabin, mgr) if they are defined in requirements, similar to standard cmt package case * source/cmt_tag.h: In class Tag functions show_definition, show, add optional argument prefix * source/cmt_tag.cxx: Implement added optional argument * source/cmt_symbol.h: In class SymbolValueList, introduce function print, in class ValueBuilder, introduce function print, in class Symbol, introduce function print_macro, and member printed * source/cmt_symbol.cxx: Implement introduced functions, in class Symbol function all_print, add case for mode Requirements which also deals with macros and invokes print_macro 2010-08-04 433 * mgr/fragments/dependencies: In QUICK mode, only generate dependencies file if it does not exist * mgr/fragments/nmake/dependencies: idem * mgr/fragments/constituent: In QUICK mode, run "cmt build constituent_config" command, if any of constituent Makefile, tag specific Makefile, setup definitions file does not exist * mgr/fragments/constituent_lock: idem 2010-08-03 432 * source/cmt_parser.h: Add to ActionType action_build_constituents_config, action_build_constituent_config * source/cmt_commands.cxx: Introduce commands "cmt build constituents_config", and "cmt build constituent_config" and their help messages * source/cmt_tag.h: In class Tag functions show_definition, show, add optional argument of type ostream * source/cmt_tag.cxx: Implement optional argument * source/cmt_std.h: Add header file and shortcut for ostringstream * source/cmt_symbol.h: In class Symbol function show_macro, add optional argument of type ostream * source/cmt_symbol.cxx: Implement optional argument, add actions action_build_constituents_config, action_build_constituent_config in same context as action_build_tag_makefile * source/cmt.h: In class Cmt, introduce functions do_build_constituents_config, do_build_constituent_config, for functions do_show_setup, do_show_path, do_show_tags, do_show_uses, print_macros add optional argument of type ostream * source/cmt_parser.cxx: Implement Cmt class functions and optional argument, add actions action_build_constituents_config, action_build_constituent_config in same context as action_build_constituents_makefile and action_build_constituent_makefile, make use of functions do_build_constituents_config and do_build_constituent_config, and in same context as action_build_tag_makefile * source/cmt_project.h: In class Project function show_paths, add optional argument of type ostream * source/cmt_project.cxx: Implement optional argument * source/cmt_use.h: In class Use functions show_all, show_sub_uses, add optional argument of type ostream * source/cmt_use.cxx: Implement optional argument * source/cmt_generators.cxx: In class ConstituentsMakefileGenerator function build, parse option -outdir= * src/Makefile.header: Make use of "cmt build constituents_config" command, use .DEFAULT for (almost) all possible targets (rather than common_target) * src/NMakefile.header: Make use of "cmt build constituents_config" command * mgr/fragments/nmake/constituents_header: No longer use commands "cmt build tag_makefile" or "cmt show setup" * mgr/fragments/constituent: Make use of "cmt build constituent_config" command, ensure QUICK mode can be used for from scratch build * mgr/fragments/constituent_lock: idem * mgr/fragments/nmake/constituent: idem * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/dependencies: Do not use QUICK switch (dependencies should be rebuilt as needed by Make) * mgr/fragments/nmake/dependencies: idem 2010-07-02 431 * source/cmt_tag.h: In class Tag, introduce member m_ref_uses to hold uses which by means of tag statement associate tag(s) with this tag and member function add_ref_use * source/cmt_tag.cxx: Implement function add_ref_use and make its use in function show_definition to show list of packages which imply tags for particular tag (previously, all tags were attributed to last package from list) 2010-07-02 430 * source/cmt_system.cxx: In function get_uname, use "uname" system call rather than "popen". This call conforms to POSIX.1-2001, does NOT exist in 4.3BSD * source/cmt_symbol.cxx: In function select_first, when several alternative values are specified through several tag-value pairs, select the first matching condition (rather than based on conditions priorities) * mgr/fragments/library_no_static: Generate .stamp in addition to .shstamp * mgr/fragments/nmake/library_no_static: idem 2010-04-05 429 * source/cmt_awk.cxx: For Windows, define PATH_MAX via _MAX_PATH * source/cmt_system.cxx: idem. In function close_ostream, define prev_fail and fclose_fail as int (rather than bool) * source/cmt_pattern.cxx: In function ApplyPattern::action, print warning pattern_not_found in DeveloperMode (i. e., in current package) and on the condition requirements files are parsed recursively only (to avoid false warnings) * mgr/cmt_dependencies.nmake: Update * mgr/VisualC.nmake: idem 2010-04-02 428 * mgr/requirements: Introduce cmt_parallel_bins tag to enable locking mechanism which allows for simultaneous/parallel builds for multiple binary tags (not activated by default) * source/cmt_commands.cxx: Introduce optional arguments []... for "cmt show container" command * source/cmt_parser.cxx: Implement introduced additional functionality of "cmt show container" command * source/cmt_project.h: idem * source/cmt_project.cxx: idem 2010-03-31 427 * source/cmt_vcs.cxx: In method GlobalProjectAction::run, add container with relative path (rather than absolute) which can be used for container checkout. Same in method Packages::find, when adding package in case of found package validation failure. In method Walkthru::filter, print warning and return in case of macro reference(s) encountered when reading requirements * source/cmt_project.cxx: In function Project::order_all, fix setting of current project pointer 2010-03-30 426 * source/cmt_vcs.cxx: Allow for -r option version tag to be HEAD which also applies to packages specified in option -requirements file. Use dependencies are only resolved when -C option is specified and -r HEAD option is not specified. In function Vcs::resolve_uses, make use of class Packages functions exclude_current_project, restore_current_project 2010-03-30 425 * source/cmt_system.cxx: In function CmtSystem::pwd, use strncpy instead of strcpy * source/cmt_use.cxx: In function move_to, minor simplification 2010-03-29 424 * source/cmt_commands.cxx: In functions option_path, option_use of class ArgParser, validate current use object reset from command line options, reorder and/or create projects, if needed * source/cmt_project.cxx: In function ProjectFactory::create_project, do not specify current project (and its tag). In function Project::order_all, specify current project (and its tag) based on current directory path or current use object real path, if the latter is located * source/cmt_parser.cxx: In function Cmt::guess_current_project, make use of current use object real path, if it is located, or current directory path otherwise. This allows for doing setup with setup scripts generated by "cmt config" from any place (with a correct CMTPROJECTPATH), resolving ticket #57 * source/cmt_use.cxx: In function move_to, search for package in absolute path first, if it is specified * source/cmt_pattern.cxx: In function ApplyPattern::action, print warning pattern_not_found in DeveloperMode (i. e., in current package) only 2010-03-26 423 * source/cmt_use.h: In function move_to, introduce second parameter curdir with default value false to specify where to search for package: in current directory or in CMTPATH entries * source/cmt_use.cxx: Modify function move_to accordingly * source/cmt_project.cxx: In function container_action, make use of move_to to search for container in current directory only * source/cmt_parser.cxx: In function reach_current_package, search for package in current directory and in CMTPATH entries as it was 2010-03-26 422 * source/cmt_system.cxx: In function CMTPathManager::do_add_cmt_path, ensure that projects created from CMTPATH environment variable entries do not become each others children-parents automatically (that will be based on use statements in project.cmt files). Ensure that command exit status is returned by CmtSystem::execute (const cmt_string&, cmt_string&) * source/cmt_database.h: Introduce member m_ordered_projects to keep vector of pointers to the ordered projects and function ordered_projects to return that * source/cmt_database.cxx: Implement function ordered_projects * source/cmt_project.h: Introduce functions order_all, set_is_current, is_current, erase_child, and member m_is_current * source/cmt_project.cxx: Implement introduced functions. In function ProjectFactory::create_project, call Project::order_all () if projects dependencies are updated or new project is created, call Cmt::get_current_dir_real to determine (and set the project member accordingly) whether project is current or not, do NOT make project that has no parent the top project. In function get_current, make use of is_current rather than pwd. Function Project::ordered_projects now only returns ordered projects pointers vector, projects ordering is done in Project::order_all. Ordering starts with current project, if exists, and projects without parents, if current project does not exist or has no parents and no children (the case for projects created from CMTPATH environment variable entries), and aims to put parents before children in projects order. If current project exists, only ordered projects are present in ordered projects vector. For projects without parents and without children, strategies are updated from the project next after them in the ordered projects vector. In function Project::show_all, always show all projects (rather than children of current or first project only), first show ordered projects, then show the rest. In function Project::visit, do not reorder current project if exists. Implement functions is_current, set_is_current, erase_child. In function container_action, start search from project m_cmtpath_pwd, if container is found, ensure its real_path is absolute path * source/cmt_use.h: Add helper function get_info to return use info as string * source/cmt_use.cxx: In function show_all, for home_package and user_context_package use version assigned when they are created rather than hard-wire version here, set error package_not_found if there are uses that are not located. In function reach_package, consider case of empty version. Implement get_info and make use of it in function Use::add * source/cmt_pattern.cxx: In function ApplyPattern::action, always print warning pattern_not_found, if appropriate, but do not set error (for now) * source/cmt_syntax.cxx: In functions do_parse_requirements, do_parse_words, clear syntax_error only, and print error messages in case of syntax_error only * source/cmt_log.h: Add CmtMessage::verbose function * source/cmt.h: Introduce functions get_current_dir_real, get_current_path, set_recursive * source/cmt_parser.cxx: Implement introduced functions, in function use_special_requirements, set use m_located member value to true, if requirements file exists * source/cmt_vcs.h: In class Vcs, introduce functions checkout_context, parse_arguments, resolve_uses, introduce class IUseVisitor * source/cmt_vcs.cxx: Introduce and implement class GlobalProjectAction, class Packages, in order to generate uses available via current context and search for specific packages among them. Rewrite class Walkthru to accept an implementation of IUseVisitor interface, replace parse_checkout with parse_arguments with new options -C, -i, and implement new parse_checkout, in particular, in order to implement new options -C, -i. Introduce helper classes VisitorForInfo, VisitorForCheckout implementing IUseVisitor interface, enhance Vcs::checkout_module to allow for HEAD, head, TRUNK, trunk to be used as arguments of option -r. Implement functions visit, Vcs::checkout_context, Vcs::resolve_uses in order to implement option -C, enhance Vcs::checkout_from_requirements in order to implement option -i * src/Makefile.header: Improve a diagnostic message * src/Makefile.core: Do not ignore errors in command lines beginning with macro echo * mgr/cmt_dependencies.make: Update 2010-02-25 421 * source/cmt_vcs.h: In class Vcs, introduce functions checkout_module, checkout_from_requirements. In class Vcs::Checkout, introduce members m_requirements, m_command, m_recursive, m_context * source/cmt_vcs.cxx: Implement introduced functions so that options -R (recursive checkout) and -requirements (checkout from requirements file) be functional with Subversion 2010-02-03 420 * source/cmt_system.cxx: In functions getwd, pwd, realpath_, execute use system dependent size PATH_MAX for pathname arrays (instead of 256) * source/cmt_awk.cxx: In function PAwk::run, idem 2010-01-13 419 * source/cmt_parser.cxx: In function fill_for_all_constituents of class StandardMacroBuilder, print a warning message if a package requested for import for a constituent cannot be imported 2010-01-08 418 * source/cmt_use.cxx: In function compare_versions, introduce optional argument "match" and implement mode in which versions are compared literally (with * matching any string), in function Use::reach_package, make use of compare_versions in "match" mode when structuring style is "without_version_directory", make use of 2 use class members - style and structuring_style, do not consider version == "" where it is not possible, in functions Use::get_full_path, Use::fill_standard_macros, install_library, Use::build_library_links, Use::show_sub_uses do not use "no_version_style" as value of style member, use also structuring_style instead, allow for standalone package case, introduce helper class PackageReader to deduce package name from requirements file and implement Package::get_name function making use of the class * source/cmt_use.h: Introduce Use class member structuring_style, function Package::get_name * source/cmt_parser.h: Exclude "no_version_style" value from CmtDirStyle enum * source/cmt_parser.cxx: In function Cmt::configure_current_package, use directory structure and package statement in requirements to determine structuring style, in function Cmt::do_create, do not use "no_version_style" as value of CmtContext m_current_style, in function Cmt::do_run, for "cmt run" command, check exit status and set execution_failed error, when appropriate, in function dos_script_prefix, do not use "no_version_style" value no_version_style, in function Cmt::load do not use "no_version_style" as value of CmtContext m_current_style, in StandardMacroBuilder fill_for_use_requirements function, allow for standalone package case * source/cmt_symbol.cxx: In function Symbol::action, allow for standalone package case, do not use "no_version_style" as value of Use style member 2009-11-28 417 * source/cmt_error.h: Introduce error wrong_symbol_type * source/cmt_error.cxx: idem, improve error messages * source/cmt_parser.cxx: In functions Cmt::do_show_action, Cmt::do_show_macro, replace warnings with the introduced error * source/cmt_symbol.cxx: In function Symbol::action, resolve relative script path without using PACKAGEROOT environment variable in case of standalone package (as the variable is not set for it) 2009-11-27 416 * source/cmt_symbol.cxx: In function Symbol::action, resolve relative script path without using PACKAGEROOT environment variable in case SetupRoot strategy is not enabled (no_root), in function Symbol::print, set cmtsetupstatus shell variable to 1 in case script specified via setup_script statement exits with non-zero status, similarly, in function Symbol::print_clean, set cmtcleanupstatus shell variable to 1 in case script specified via cleanup_script statement exits with non-zero status * source/cmt_parser.cxx: Make use of cmtsetupstatus, cmtcleanupstatus shell variables in setup.[c]sh, cleanup.[c]sh scripts in order to exit with a non-zero status on failure, which takes into account failures of user provided setup, cleanup scripts 2009-11-25 415 * source/cmt_awk.cxx: In function PathScanner::scan_path, skip .svn directories, invoke a.run with 4th argument "true" when the structure is without version directory * source/cmt_system.cxx: Correct a comment typo * source/cmt_use.cxx: In function Use::get_all_clients, do not issue the warning * source/cmt_fragment.cxx: In function Fragment::show, set error if the fragment is not found * source/cmt_error.h: Introduce errors constituent_not_found, fragment_not_found, language_not_found * source/cmt_error.cxx: idem * source/cmt_commands.cxx: In function ArgParser::do_show, pass all arguments to "cmt show packages", correct "cmt show clients" help message, add "cmt show container" help message, update "cmt show packages" help message * source/cmt_project.cxx: In function Project::scan_paths_for_package, set error if the package is not found * source/cmt_language.cxx: In function Language::show, set error if the language is not found * source/cmt_parser.cxx: In function Cmt::do_config, invoke Generator::build_default_makefile after parsing the requirements file in order to keep track of possible errors (which may be cleared otherwise), in function Cmt::do_show_constituent, set error if the constituent is not found, in function Cmt::do_show_packages, search and show packages in all paths supplied (if any), in function Cmt::do_show_use_paths, set error if the package is not found * mgr/cmt_dependencies.make: Update 2009-11-20 414 * source/cmt_system.h: In class CmtSystem, introduce functions close_ostream, close_stdout in order check whether there are file write errors, and exit with an error if that is the case * source/cmt_system.cxx: Implement introduced functions, in function CmtSystem::compare_and_update_files, check file stream status * source/cmt_generators.cxx: Set file_access_error error if file cannot be opened for writing, close file streams on writing making use of close_ostream * source/cmt_generator.cxx: idem * source/cmt_parser.cxx: idem, in setup.[c]sh, cleanup.[c]sh scripts, check CMT command exit status, on failure, print the command and exit, for "cmt filter" command, set path_not_found error, when appropriate * source/cmt.cxx: Close stdout with CmtSystem::close_stdout before exiting the program * source/cmt_string.cxx: In function cmt_string::write, check file stream status * src/Makefile.header: Improve a diagnostic message by using the standard macros * mgr/cmt_dependencies.make: Update 2009-11-13 413 * source/cmt_project.h: In class Project, restore function get_container returning (reference to) container object * source/cmt_project.cxx: Implement the modified function * source/cmt_syntax.cxx: In function SyntaxParser::parse_requirements, apply tag container_package if the current package is the container package of the project 2009-11-06 412 * source/cmt_project.h: In class Project, introduce (static) function show_container, functions get_container_name, get_container_path, set_container_name, set_container_path, and drop functions get_container, set_container, add and drop class members accordingly, change container_action function signature to allow for the generic CMT container statement syntax * source/cmt_project.cxx: Implement the introduced and modified functions * source/cmt_syntax.cxx: In class KwdContainer, modify function action to reflect the changes above * source/cmt_commands.cxx: Introduce and implement "cmt show container" command making use of the functions introduced above * source/cmt_parser.h: idem * source/cmt_parser.cxx: idem * source/cmt.h: idem * src/setup.tcsh: Add completion for "cmt show container" command in TCSH * src/setup.zsh: Add completion for "cmt show container" command in Z shell 2009-10-15 411 * mgr/requirements: Revert for now the modifications of C.L. 407 (they are not backwards compatible, and at least the users should be prepared first) 2009-10-15 410 * source/cmt_syntax.cxx: In class KwdSetupStrategy, add new strategy SetupScripts with values scripts and no_scripts * source/cmt_project.cxx: In StrategyMgr default constructor, add the setup strategy values (default: scripts), in function Strategy::update, check if m_off_tag is 0 and, if so, initialise it * source/cmt_parser.cxx: In Cmt::do_show_strategies, show the value of the SetupScripts strategy, in functions Cmt::install_[test_]cleanup_scripts, Cmt::install_[test_]setup_scripts, do not generate (or remove existing) cleanup and setup scripts if SetupScripts strategy is no_scripts (i. e., setup_strategy includes no_scripts) 2009-09-18 409 * mgr/requirements: For Windows, set macro devenv_command to "devenv /?" if VS (for Visual Studio) tag is activated * mgr/VisualC.nmake: Update 2009-09-17 408 * source/cmt.h: Declare function Cmt::configure_devenv_tag * source/cmt_parser.cxx: Implement Cmt::configure_devenv_tag making use of command specified by macro "devenv_command" to retrieve version of Microsoft (R) Visual Studio and define a corresponding tag * mgr/requirements: For Windows, set macro devenv_command to "devenv /?" (can be overridden via CMTHOME requirements file) * mgr/VisualC.nmake: Update 2009-09-10 407 * mgr/requirements: For Linux, only keep the OS major version number when creating the tag. For the gcc compliler, only keep the major and minor version numbers when creating the tag. * mgr/cmt_mac_version.sh: Optimise the retrieval of the Mac OS version 2009-09-09 406 * source/cmt_project.cxx: In function Project::ordered_projects, use static for reference to Project::projects. In function Project::show_all, ensure Project::ordered_projects is always invoked. In function Project::show, output "v0" as version for CMTUSERCONTEXT, CMTHOME to be consistent with "cmt show uses" 2009-08-10 405 * source/cmt_parser.cxx: In functions Cmt::do_remove_library_links, Cmt::do_broadcast, set CmtError::execution_error when CmtSystem::execute returns a non-zero (including 2) value 2009-07-15 404 * source/cmt_system.cxx: In function CMTPathManager::do_add_cmt_path, ensure that CMTUSERCONTEXT or CMTHOME is not set as parent project for other projects. In function CmtSystem::get_cmt_paths, create CMTUSERCONTEXT and/or CMTHOME projects before projects from CMTPATH so that their source does not change after sourcing a setup script * source/cmt_project.h: In function Project::visit, add offset parameter * source/cmt_project.cxx: In function ProjectFactory::create_project, do not make CMTUSERCONTEXT or CMTHOME project top project because it has no parent, or add it as child to the top project. In function Project::ordered_projects, make CMTUSERCONTEXT first and CMTHOME last project, if existent, with the child - the next, and the parent - last but one project in order respectively. In functions Project::fill_selection, Project::show_all make use of Project::ordered_projects. In function, Project::visit, make use offset parameter, when reordering projects, put the child project right after the parent project. In function Project::show, ensure the project is shown once * source/cmt_use.cxx: In function Use::get_strategy, fix the search of the project for a use (in case the use has an offset), make use of function Project::ordered_projects instead of Project::projects function 2009-07-01 403 * mgr/cmt_svn_checkout.py: Introduce a version working on Windows. Do not use module commands, instead, in class Utils, introduce portable (static) methods getstatusoutput, getstatuserror, and make use of them 2009-06-27 402 * mgr/cmt_svn_checkout.py: Introduce the version using the Subversion CLI (rather than Subversion Python bindings). Introduce the CMTHEADVERSION environment variable to hold the string that is written into the version.cmt file on "cmt checkout" of the package's trunk when it is different from any existing tag. The value may contain the templates , , , where is replaced with last_changed_rev of the trunk. Use "cmt -q config" and always return 0 from function generate of CmtContext to avoid error messages even when the function actually succeeds. Treat URL, OFFSET, PATH as (Subversion scheme) URLs, introduce function urljoin (using "the last wins algorithm") to construct the checkout URL from them * mgr/requirements: For Linux, set macro svn_checkout_command to use the Python in the PATH to execute mgr/cmt_svn_checkout.py 2009-06-18 401 * mgr/cmt_svn_checkout.py: Introduce function trunk_tag to determine the tag of the module's trunk 2009-05-23 400 * src/NMakefile.core: Fix a typo * mgr/fragments/cmt_action_runner_header: Remove ${CONSTITUENT}_dependencies as it is dealt with in constituents.make, cannot be dealt here anyway (but may only generate a warning) 2009-05-20 399 * source/cmt_parser.cxx: In function set_standard_macros, if the Verbose level is activated, check whether the names of different packages in upper case coincide and issue a warning appropriately * source/cmt_pattern.cxx: In function ApplyPattern::action, add the package name (and offset) to the warning message about an undefined pattern 2009-05-19 398 * source/cmt_parser.cxx: In function fill_for_use_requirements, build the macro making use of macros _root rather than ROOT to avoid ambiguity if the names of different packages in upper case coincide 2009-05-18 397 * mgr/fragments/library: Pass all objects as arguments to macro ar to allow the macro to be "libtool -o" for Darwin. Rebuild static library completely whenever an object changes to be consistent on all systems * mgr/requirements: For Darwin, build statically linked (archive) libraries with "libtool", the recommended way. For Linux, use the system Python in svn_checkout_command to ensure the Subversion Python bindings installed on the system are used 2009-05-15 396 * source/cmt_project.cxx: In function Project::add, print a diagnostic message only if the Verbose level is activated * mgr/cmt_lsb_system_version.sh: Make the script more generic * mgr/cmt_svn_checkout.py: Update the version 2009-05-05 395 * mgr/cmt_svn_checkout.py: Improve error messages (string representation of SubversionException is simply a tuple) 2009-05-04 394 * mgr/cmt_linux_version.sh: Take into account Fedora distribution, make the output of the form DISTRIBUTION-VERSION where VERSION has the `.'s unchanged so that is possible to filter the major and minor versions later 2009-04-29 393 * mgr/cmt_svn_checkout.py: To allow for checkout of branch tags 2009-04-29 392 * source/cmt_system.cxx: In function CmtSystem::execute, return -1 on failure and return status of the command otherwise * source/cmt_vcs.cxx: Ensure "cmt checkout" command exit status is set to a nonzero value on error. In particular, in function execute_and_retry, on failure, exit with the exit status of the last failed command, in function check_protocol, on failure, exit with 1, also make use of CmtError::set when appropriate * mgr/cmt_svn_checkout.py: Catch ImportError exception in case Subversion Python bindings cannot be imported 2009-04-27 391 * source/cmt_error.h: Add an error configuration_error * source/cmt_error.cxx: idem * source/cmt_commands.cxx: Set CmtError::syntax_error for "cmt checkout" command when appropriate to ensure the exit status is set to a nonzero value on error. Add the mention of SVN to help message * source/cmt_vcs.h: Declare generic CVS-like checkout class Vcs (for Version Control System) and Subversion checkout class Svn * source/cmt_vcs.cxx: Implement Vcs, Svn classes. The choice between CVS and Subversion is made based on which environment variable - CVSROOT or SVNROOT - is set. Svn uses the command specified via macro svn_checkout_command for checkout from Subversion repository. CVS checkout is still done via Cvs::checkout * source/cmt_parser.cxx: Add the possibility to do checkout from Subversion repository by making use of class Vcs to implement "cmt checkout" command. After help message is printed, return a nonzero value from Cmt::parser on error * mgr/requirements: For Linux, Darwin, and Windows, set macro svn_checkout_command to mgr/cmt_svn_checkout.py. Replace cmt_cvs.cxx with cmt_vcs.cxx 2009-04-20 390 * mgr/cmt_svn_checkout.py: Add script to checkout CMT package(s) from Subversion repository 2009-04-07 389 * source/cmt_pattern.cxx: Print a warning message when an undefined pattern is referenced with the Verbose level activated 2009-03-28 388 * mgr/fragments/cleanup_header: For the DEFAULT target, add a check in case the file recording the package setup is referred to by the older name 2009-03-15 387 * mgr/fragments/constituent: Restore the dependency of $(cmt_local_${CONSTITUENT}_makefile) on $(${CONSTITUENT}_dependencies). For the constituent makefile to be generated properly, the constituent source files have to exist. The latter may be generated as a result of building other constituent(s). Discard the ${CONSTITUENT}clean dependency on $(cmt_local_${CONSTITUENT}_makefile). Make ${CONSTITUENT}uninstall also depend on $(${CONSTITUENT}uninstall_dependencies) and compute the latter to insure that uninstallation be done in reverse build order * mgr/fragments/constituent_lock: idem * mgr/fragments/nmake/constituent: Restore the dependency of $(cmt_local_${CONSTITUENT}_makefile) on $(${CONSTITUENT}_dependencies) as detailed above. Discard the ${CONSTITUENT}clean dependency on $(cmt_local_${CONSTITUENT}_makefile). Make ${CONSTITUENT}uninstall independent of $(cmt_local_${CONSTITUENT}_makefile) but rather generate the latter in the rule command, if non-existent * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/check_application_header: Discard the ${CONSTITUENT}check dependency on $(cmt_local_${CONSTITUENT}_makefile) but rather generate the latter in the rule command, if non-existent * mgr/fragments/nmake/check_application_header: idem * mgr/cmt_lockfile.sh: Use POSIX conformant syntax for the test utility * mgr/fragments/nmake/library: Improve control of NMake verbosity * mgr/fragments/nmake/library_no_share: idem * mgr/fragments/nmake/library_no_static: idem 2009-02-11 386 * mgr/fragments/cleanup_header: Use POSIX conformant syntax for the expr utility 2009-02-05 385 * mgr/cmt_mac_version.sh: Add script to optimise the retrieval of the Mac OS version * mgr/requirements: Make use of the added script 2009-02-02 384 * mgr/requirements: Under Windows, add a trailing space to the make action definition so that the trailing backslash (\) in $(bin) is not followed by a newline character when the action is executed via NMake (NMake interprets a backslash followed by a newline character as a space in the command) 2009-01-30 383 * source/cmt_generator.h: In class CmtGenerator, introduce member m_HASDEPENDENCIES * source/cmt_generator.cxx: idem * source/cmt_generators.cxx: Depending on whether the constituent needs the generation of dependencies, set m_HASDEPENDENCIES appropriately and fill the makefiles fragments with the value * mgr/fragments/nmake/constituent: Implement the generation of dependencies depending on the files modifications rather than every time NMake is run * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/nmake/dependencies: idem * mgr/fragments/nmake/cpp: idem * mgr/fragments/nmake/cpp_library: idem * mgr/fragments/nmake/c: idem * mgr/fragments/nmake/c_library: idem * mgr/fragments/nmake/fortran: idem * mgr/fragments/nmake/fortran_library: idem * mgr/fragments/nmake/yacc: idem * mgr/fragments/nmake/yacc_library: idem * mgr/fragments/nmake/lex: idem * mgr/fragments/nmake/lex_library: idem * mgr/fragments/nmake/make_header: idem * mgr/fragments/nmake/constituents_trailer: Fix a typo * mgr/fragments/nmake/cmt_action_runner: Introduce NMake version of the file * mgr/requirements: Under Windows, build the stamps files for dependencies by default (as under Linux, Darwin) * mgr/cmt_format_deps.bat: Use the type command to create the stamps files * mgr/fragments/constituents_header: Introduce the makefiles target to only build all the makefiles * mgr/fragments/constituent: idem * mgr/fragments/constituent_lock: idem 2009-01-08 382 * source/cmt_parser.cxx: In function Cmt::do_show_groups, ensure that the constituents are parsed so that command "cmt show groups" is functional * src/Makefile.header: Make the READONLY mode obsolete (the relocation of the binary build directory provides this functionality as well). Change the name of the file recording the setup to $(bin)setup.make and generate it here. Do not specify the first, config targets. Add the uninstall targets to the help message * mgr/fragments/constituents_header: Make the READONLY mode obsolete. Change the name of the file recording the setup to $(bin)setup.make and do not generate it here. Remove the first, config, checkuses targets * mgr/fragments/constituent: Make the READONLY mode obsolete. Change the names of the files recording the setup to $(bin)setup.make and $(bin)setup_${CONSTITUENT}.make, do not override the latter when identical (see C.L. 233). Make $(cmt_local_${CONSTITUENT}_makefile) only depend on $(cmt_local_tagfile_${CONSTITUENT}). Make ${CONSTITUENT}clean also depend on $(cmt_local_${CONSTITUENT}_makefile) * mgr/fragments/constituent_lock: idem * mgr/fragments/make_header: Make the READONLY mode obsolete. Change the names of the files recording the setup to $(bin)setup.make and $(bin)setup_${CONSTITUENT}.make. Add a rule with an empty command for $(use_requirements) for optimisation. * mgr/fragments/cmt_action_runner_header: Improve control of Make verbosity * mgr/fragments/protos_header: idem * mgr/fragments/buildproto: idem * mgr/fragments/cleanup_objects: Clean up per object file dependencies files and stamps * mgr/fragments/library: idem * mgr/fragments/library_no_share: idem * mgr/fragments/library_no_static: idem * mgr/fragments/dependencies: Do not include dependencies fragment in the constituent makefile when "make uninstall" is run * mgr/fragments/c: idem * mgr/fragments/c_library: idem * mgr/fragments/cpp: idem * mgr/fragments/cpp_library: idem * mgr/fragments/cleanup_library: Fix for the clean command * mgr/fragments/check_application_header: Improve control of Make verbosity, make ${CONSTITUENT}check depend on $(cmt_local_${CONSTITUENT}_makefile) * mgr/fragments/check_application: Specify the application path when running it (so that the command does not fail if . is not in the PATH) * mgr/fragments/constituents_trailer: Minor change to diagnostic messages * mgr/fragments/cleanup_application: idem * mgr/fragments/cleanup_header: Replace cd . with an empty command * mgr/cmt_uninstall_action.sh: Ensure that dangling symbolic links can be uninstalled * src/NMakefile.header: Improve the help message, make it the same as for UNix-like systems. In the QUICK mode, generate $(cmt_constituents_makefile) if non-existent * mgr/fragments/nmake/constituents_header: Do not override the $(bin)setup.nmake when identical (see C.L. 233). In the QUICK mode, generate $(cmt_local_tagfile) if non-existent. Add diagnostic messages * mgr/fragments/nmake/constituent: Change the names of the files recording the setup to $(bin)setup.nmake and $(bin)setup_${CONSTITUENT}.nmake, do not override the latter when identical (see C.L. 233). Make $(cmt_local_${CONSTITUENT}_makefile) only depend on $(cmt_local_tagfile_${CONSTITUENT}). Make ${CONSTITUENT}clean also depend on $(cmt_local_${CONSTITUENT}_makefile). In the QUICK mode, generate $(cmt_local_tagfile_${CONSTITUENT}) if non-existent * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/nmake/cmt_action_runner_header: Improve control of Make verbosity * mgr/fragments/nmake/protos_header: idem * mgr/fragments/nmake/buildproto: Introduce NMake version of the file * mgr/fragments/nmake/cpp: Fix a typo * mgr/fragments/nmake/cpp_library: idem * mgr/fragments/nmake/c: idem * mgr/fragments/nmake/c_library: idem * mgr/fragments/nmake/application: Remove the connection between clean and uninstall targets - same as the for Unix-like systems (see C.L. 246) * mgr/fragments/nmake/library: idem * mgr/fragments/nmake/library_no_share: idem * mgr/fragments/nmake/library_no_static: idem * mgr/fragments/nmake/jar: idem * mgr/fragments/nmake/java_header: idem * mgr/fragments/nmake/install_includes_header: idem * mgr/fragments/nmake/dependencies: Do not attempt to include the dependencies file if non-existent * mgr/fragments/nmake/group: Make ${GROUP} also depend on $(${GROUP}_dependencies) * mgr/fragments/nmake/check_application_header: Improve control of Make verbosity, make ${CONSTITUENT}check depend on $(cmt_local_${CONSTITUENT}_makefile) * mgr/fragments/nmake/make_header: Change the names of the files recording the setup to $(bin)setup.nmake and $(bin)setup_${CONSTITUENT}.nmake. Add a rule with an empty command for $(use_requirements) for optimisation * mgr/fragments/nmake/constituents_trailer: Remove the connection between binclean and clean targets to make the former a fast removal of $(bin) * mgr/fragments/nmake/cleanup_header: Add a clean target dependent on ${CONSTITUENT}clean 2008-12-17 381 * source/cmt_language.h: In class Language, replace the members dependencies_options, native_dependencies with m_dependencies_options, m_native_dependencies and make them private, introduce member functions to retrieve the values and to setup m_native_dependencies member on demand for the language(s) that is/are actually used (rather than for all known) * source/cmt_language.cxx: Implement the introduced functions dependencies_options and native_dependencies * source/cmt_generators.cxx: Make use of Language::dependencies_options () and Language::native_dependencies () functions * source/cmt_generator.cxx: In function CmtGenerator::fill_names_outputs, replace parts of the sources paths (m_LINE) with standard macros, if possible * mgr/fragments/document_header: Improve diagnostic messages by using the standard macros 2008-12-15 380 * source/cmt_parser.cxx: In functions fill_for_use_libraries and fill_for_all_constituents, discard the previous modification concerning the use_libraries and _libraries macros. This is in order to be consistent with the command "cmt build library_links" that creates symlinks based on the used packages macro _libraries regardless of the -no_auto_imports options 2008-12-14 379 * source/cmt_parser.cxx: In function fill_for_use_stamps, ensure that the use_stamps macro is set taking into account the -no_auto_imports options, in function fill_for_all_constituents, set the _stamps macro to the stamps introduced by the -import= option(s). Similar for use_libraries, _libraries macros * mgr/fragments/application: Make use of the _stamps macro * mgr/fragments/nmake/application: idem 2008-12-13 378 * source/cmt_language.h: In class Language, introduce the members dependencies_options, native_dependencies * source/cmt_language.cxx: In class Language, in function action, add the parsing of the -dependencies_options=OPTIONS option, in function show, add the display of that option, implement the setup_native_dependencies function to set .native_dependencies to true, if .dependencies_options expands to a non-empty string * source/cmt_generator.h: In class CmtGenerator, add the m_DEPENDENCIESOPTS member * source/cmt_generator.cxx: Handle the m_DEPENDENCIESOPTS member * source/cmt_generators.cxx: In function LibraryGenerator::module_file_action, replace the DEPENDENCIESOPTS template in the , _library fragments with the value of .dependencies_options, do not include the dependencies fragment in the constituent (library/application) Make file, if the language preprocessor(s) of all the source file(s) support the generation of dependencies and the corresponding compiler options are passed via the -dependencies_options=OPTIONS option of the language(s) * mgr/fragments/cpp: Implement the generation of dependencies Make files (one per source file) making use of the language compiler if the the corresponding compiler options are passed * mgr/fragments/cpp_library: idem * mgr/fragments/c: idem * mgr/fragments/c_library: idem * mgr/fragments/nmake/cpp: idem * mgr/fragments/nmake/cpp_library: idem * mgr/fragments/nmake/c: idem * mgr/fragments/nmake/c_library: idem * mgr/requirements: define the cppdepflags, cdepflags macros to generate dependencies making use of the language compiler for Linux, Darwin, VisualC when the tags cpp_native_dependencies, c_native_dependencies are activated, pass cppdepflags, cdepflags to the c++, c languages, define the format_dependencies macro * src/Makefile.core: Add the dep_echo, dep_silent macros to be used when generating dependencies, add .make .stamp .cxx to the list of known suffixes for optimisation * src/NMakefile.core: idem * src/Makefile.header: Remove the Make rule for src/Makefile.core * mgr/fragments/constituent: In case STRUCTURED_OUTPUT is defined, create the $(bin)${CONSTITUENT} here rather than in the constituent Make file * mgr/fragments/constituent_lock: idem * mgr/fragments/make_header: idem * mgr/NMake: Filter macros containing personal names out of VisualC.nmake * mgr/VisualC.nmake: idem * mgr/cmt_format_deps.sh: Introduced to be used for the generation of one dependencies Make file per source file * mgr/cmt_format_deps.bat: idem 2008-11-29 377 * source/cmt_project.cxx: In function show_paths, introduce and implement the -d option of the "cmt show path" command to show how the the package search paths list is formed (default: the original succinct one line per path output) * source/cmt_project.h: idem * source/cmt_parser.cxx: idem * source/cmt_commands.cxx: idem. Add help text for the introduced option. 2008-11-28 376 * source/cmt_parser.cxx: In function fill_for_all_constituents, ensure that the _use_linkopts macro is set in case the constituent -import= options effectively import nothing 2008-11-18 375 * source/cmt_generator.h: Introduce function CmtGenerator::fill_names_outputs in order to fill the Make LINE macro taking in account the constituent -k=regexp, -x=regexp options * source/cmt_generator.cxx: Implement the CmtGenerator::fill_names_outputs function * source/cmt_generators.cxx: Make use of the CmtGenerator::fill_names_outputs function to fill m_LINE. In function DependencyGenerator::build, allow for the options specification Windows style (/option[:value]) as the Windows command shell may not pass on -option=value with the = character * mgr/fragments/dependencies: Restore passing the arguments on to the $(build_dependencies) command (via $(LINE)) to allow for external tool use * mgr/fragments/nmake/dependencies: idem, use the -out:file option (rather than -out=file) * mgr/cmt_build_deps.sh: Add and implement options -no_stamps (creating stamps if not specified), -out=. Use the same preprocessor flags as those used in fragments c, c_library, cpp, cpp_library. Treat the files with non-C or non-C++ extensions as C++ files. Allow for the use of macro c_pp to specify the C preprocessor (the tool used by default is cpp -M) * mgr/cmt_filter3_version.sh: Minor correction in the description * mgr/cmt_lsb_system_version.sh: Add script to retrieve the Linux distribution info on LSB conformant systems in the format - * mgr/cmt_filter1_version.sh: Add script to keep the major version only (in tags) 2008-11-02 374 * mgr/fragments/nmake/constituent: Do not pass the NMake QUICK macro value from constituents.nmake to constituent *.nmake files on the command line as it is not necessary * mgr/fragments/nmake/constituent_lock: idem 2008-11-01 373 * src/NMakefile.header: Do not rebuild any *.nmake or dependencies files when the NMake QUICK macro is set to a non-empty string * mgr/fragments/nmake/constituents_header: idem * mgr/fragments/nmake/constituent: idem * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/nmake/dependencies: idem 2008-11-01 372 * source/cmt_project.h: Optimise performance of the previous change. In class Project, change method ordered_projects to return ProjectPtrVector, add method visit (int&, ProjectPtrVector&), add member m_order * source/cmt_project.cxx: Implement method visit (int&, ProjectPtrVector&), make use of it to re-implement method Project::ordered_projects, use the latter in Project::fill_cmtpaths 2008-10-30 371 * source/cmt_project.h: In class IProjectVisitor, add method in_again to be executed when the project is visited more then once. In class Project, add method ordered_projects to return ProjectVector ordered according to the CMTPATH entries, add method visit (IProjectVisitor&, ProjectPtrVector&), add member m_visits to hold the number of times the project has been visited * source/cmt_project.cxx: Implement method Project::ordered_projects, implement method in_again in classes VisitorForFillCMTPATH, VisitorForShowPaths. In Project::broadcast, Project::reverse_broadcast make use of ordered_projects to ensure that cmtpath_pattern and cmtpath_pattern_reverse are applied according to the order of the CMTPATH entries. Implement method visit (IProjectVisitor&, ProjectPtrVector&) to be used to visit the projects tree - the order is the projects upon which the project depends directly, then the direct dependencies of the of the first dependency, of the second dependency and so on. That is first left to right, then downwards. In method Project::start_visit, make use of the visit 2008-10-29 370 * source/cmt_parser.cxx: In function fill_for_branches, generate the BIN macro to hold an absolute path for the path specified by the bin macro (both are file separator terminated) * source/cmt_generators.cxx: In function DependencyGenerator::build, implement the -out=file option of the cmt build dependencies command, do not read the existing dependency file (if any) with the -all_sources option * mgr/fragments/dependencies: Make use of the -out=file option to allow for the relocation of the binary build directory * mgr/fragments/nmake/dependencies: idem * mgr/fragments/library: Allow for the relocation of the binary build directory (via redefinition of the bin macro) * mgr/fragments/library_no_share: idem * mgr/fragments/library_no_static: idem * mgr/fragments/application: idem * mgr/fragments/cpp_library: idem * mgr/fragments/cpp: idem * mgr/fragments/c_library: idem * mgr/fragments/c: idem * mgr/fragments/fortran_library: idem * mgr/fragments/fortran: idem * mgr/fragments/cleanup_objects: idem * mgr/fragments/nmake/library: idem * mgr/fragments/nmake/library_no_share: idem * mgr/fragments/nmake/library_no_static: idem * mgr/fragments/nmake/application: idem * mgr/cmt_make_shlib_common.sh: idem * mgr/cmt_make_shlib.bat: idem * mgr/requirements: idem * src/NMakefile.header: Allow for the relocation of the binary build directory (via redefinition of the bin macro), place all the make files generated by CMT in the binary build directory * mgr/fragments/nmake/constituents_header: idem * mgr/fragments/nmake/constituent: idem * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/nmake/make_header: idem 2008-10-20 369 * source/cmt_parser.cxx: In function fill_for_all_constituents, correct the setting of macros in case the -import option for constituents is used so as to import what is requested only. Do not set macro ${CONSTITUENT}linkopts * mgr/fragments/application: Use $(cmt_installarea_linkopts) with $(${CONSTITUENT}_use_linkopts) instead of $(use_linkopts) * mgr/fragments/dsp_application_header: idem * mgr/fragments/dsp_windows_header: idem * mgr/fragments/nmake/application: idem 2008-09-24 368 * source/cmt_log.h: Introduce the Verbose level of diagnostic messages that is higher than the Debug level and lower than the Info level. * source/cmt_parser.cxx: Set the Verbose level of diagnostic messages if the CMTVERBOSE environment variable is set to a non-empty string * source/cmt_symbol.cxx: Print the message about non-existent directories in path-like environment variables when the Verbose level is activated * source/cmt_generator.cxx: Optimise the build_windefs function 2008-09-22 367 * source/cmt_generators.cxx: Implement the -no_static option for libraries * source/cmt_generators.h: idem * source/cmt_parser.cxx: idem * source/cmt_commands.cxx: idem. Add the help text for the enhanced cmt build windefs command which now accepts multiple object and/or library files on the command line and/or via command file(s) and has an option to specify the library name * source/cmt_generator.h: In the build_windefs function, implement the enhanced functionality of the cmt build windefs command * source/cmt_generator.cxx: idem * mgr/fragments/constituent_lock: Minor code cleanup * mgr/requirements: Add the c option for the ar utility on Linux to avoid the warning. Declare the library_no_static make fragment * mgr/fragments/library_no_static: Introduce the make fragment to use with the -no_static option * mgr/fragments/nmake/library_no_static: idem for Windows 2008-07-30 366 * mgr/cmt_gcc_version.sh: Set the "C" locale * mgr/cmt_cxx_version.sh: idem * mgr/cmt_dcc_version.sh: idem * mgr/cmt_CC_version.sh: idem * mgr/cmt_filter_version.sh: idem * mgr/cmt_filter3_version.sh: idem * mgr/cmt_linux_version.sh: idem * mgr/cmt_system.sh: idem * mgr/cmt_make_shlib.sh: idem * mgr/cmt_make_shlib_common.sh: Set GREP_OPTIONS to the empty string, if not empty 2008-07-19 365 * source/cmt_system.cxx: In the CmtSystem::compress_path function, take into account one more boundary case 2008-07-18 364 * source/cmt_system.cxx: In the CmtSystem::compress_path function, add the replacement of "/.." with "/" (one cannot walk down past the root), more careful treatment of some boundary cases * source/cmt_parser.cxx: Add 2 debug level messages in the function Cmt::guess_current_project 2008-06-25 363 * src/Makefile.header: Ensure that $(cmt_final_setup) is (re)built when make is run with non default target(s) 2008-06-24 362 * source/cmt_use.h: In the Package class, declare get_version_file_name () to return "version.cmt", and get_version () to retrieve the package version when structuring style used is `without_version_directory' by checking: 1) the get_version_file_name () file if available (and readable) 2) version statement in the package requirements file * source/cmt_use.cxx: Implement and systematically use the get_version_file_name (), and get_version () functions * source/cmt_parser.cxx: Systematically use the implemented functions * source/cmt_awk.cxx: idem * source/cmt_cvs.cxx: idem 2008-06-22 361 * source/cmt_parser.cxx: Ensure the requirements file in ${CMTHOME} is parsed if exists * source/cmt_project.cxx: Ensure the cmt broadcast command works correctly in case CMTHOME or/and CMTUSERCONTEXT is/are defined 2008-05-30 360 * source/cmt_log.h: Introduce an enumeration to hold diagnostic messages levels (Debug, Info, Warning, Error, Fatal). Implement a class to hold and manage diagnostic messages prefix, level (default values: #CMT--->, Info), and functions to produce diagnostic messages * source/cmt_parser.cxx: Implement functions to configure diagnostic messages prefix, and level using the environment variables CMTMSGPREFIX, and CMTDEBUG, CMTINFO, CMTWARNING, CMTERROR, CMTFATAL (in order of precedence) if set to a non-empty string. Extend functions to configure the diagnostic messages level using the existing command line options -warnings (Warning), -disable_warnings (Error), -quiet (Fatal). Introduce the CMTFLAGS environment variable (set up automatically) in order to contain command line options (currently, to configure the diagnostic messages level and the structuring style) so as to pass the flags to recursive cmt invocations. If CMTFLAGS exists in the environment, the flags from it are processed before the command line options. Implement the CMTFLAGS functionality described above. Use the diagnostic message functions for the messages * source/cmt.h: idem * source/cmt_tag.cxx: Use the diagnostic message functions for the messages * source/cmt_awk.cxx: idem * source/cmt_system.cxx: idem * source/cmt_use.cxx: idem * source/cmt_install_area.cxx: idem * source/cmt_fragment.cxx: idem * source/cmt_generators.cxx: idem * source/cmt_constituent.cxx: idem * source/cmt_syntax.cxx: idem * source/cmt_triggers.cxx: idem * source/cmt_error.cxx: idem * source/cmt_model.cxx: idem * source/cmt_commands.cxx: idem * source/cmt_project.cxx: idem * source/cmt_pattern.cxx: idem * source/cmt_lock.cxx: idem * source/cmt_generator.cxx: idem * source/cmt_cvs.cxx: idem * source/cmt_symbol.cxx: idem * mgr/requirements: Do not use the -quiet command line option * mgr/fragments/constituent: idem * mgr/fragments/make_setup: idem * mgr/fragments/check_application_header: idem * mgr/fragments/constituents_header: idem * mgr/fragments/constituent_lock: idem * mgr/fragments/generator_header: idem * mgr/fragments/cleanup_header: Improve control of Make verbosity * mgr/fragments/make_setup_nmake: Do not use the -quiet command line option * mgr/fragments/nmake/constituent: idem * mgr/fragments/nmake/check_application_header: idem * mgr/fragments/nmake/constituents_header: idem * mgr/fragments/nmake/yacc: idem * mgr/fragments/nmake/constituent_lock: idem * mgr/fragments/nmake/lex: idem * mgr/fragments/nmake/generator_header: idem * mgr/fragments/nmake/yacc_library: idem * mgr/fragments/nmake/lex_library: idem * src/Makefile.header: idem, improve control of Make verbosity * src/constituents.make: Do not use the -quiet command line option * src/NMakefile.header: idem * src/constituents.nmake: idem 2008-05-14 359 * mgr/fragments/cleanup_header: Add a workaround to work in the parallel execution mode with the PEDANTIC Make switch 2008-05-13 358 * source/cmt_project.cxx: Add the real CMTPATH of project to the paths returned by Project::fill_selection () * source/cmt_parser.cxx: When cmt broadcast is run, ensure that the current package is not skipped due to symlinks in the paths 2008-04-21 357 * mgr/fragments/dependencies: Do not include the dependencies fragment in the constituent makefile at all when make clean is run 2008-04-19 356 * mgr/fragments/dependencies: Do not re-calculate the dependencies when make clean is run 2008-04-17 355 * source/cmt_cvs.cxx: Add the -rs suffix option to the cmt checkout command (proposed by David Rousseau) 2008-04-15 354 * source/cmt_parser.cxx: Take into account current value of type CmtDirStyle when checking for file version.cmt * source/cmt_generators.cxx: make a copy of a vector of type Use::UsePtrVector rather than get a reference 2008-04-14 353 * source/cmt_cvs.cxx: Correct the handling of the -with_version_directory and -without_version_directory command line options with cmt checkout. Comment out a duplicate "cmt -quiet config" after the checkout 2008-04-11 352 * source/cmt_parser.cxx: Remove all the library links built, including those for the current package 2008-02-23 351 * mgr/fragments/constituent_lock: Remove the lockfile on receipt of signal HUP, INT, TERM (1, 2, 15) 2008-02-22 350 * src/NMakefile.core: Replace CMTMSGHDR with CMTMSGPREFIX * src/Makefile.core: idem * mgr/cmt_install_action.sh: idem * mgr/cmt_uninstall_action.sh: idem * mgr/cmt_make_shlib.sh: idem * mgr/fragments/cleanup_header: Improve diagnostic messages * mgr/fragments/tex: Correct the fragment 2008-02-21 349 * src/NMakefile.core: Control the verbosity of NMake (similar to Make, see below) * src/NMakefile.header: idem * mgr/fragments/nmake/constituents_header: idem * mgr/fragments/nmake/group: idem * mgr/fragments/nmake/constituent: idem, correct the passing of NMake options * mgr/fragments/nmake/constituent_lock: idem, correct the passing of NMake options * mgr/fragments/nmake/constituents_trailer: idem * mgr/fragments/nmake/application_header: idem * mgr/fragments/nmake/application: idem * mgr/fragments/nmake/library_header: idem * mgr/fragments/nmake/library: idem * mgr/fragments/nmake/library_no_share: idem * mgr/fragments/nmake/c: idem * mgr/fragments/nmake/c_library: idem * mgr/fragments/nmake/cpp: idem * mgr/fragments/nmake/cpp_library: idem * mgr/fragments/nmake/fortran: idem * mgr/fragments/nmake/fortran_library: idem * mgr/fragments/nmake/java_header: idem * mgr/fragments/nmake/jar_header: idem * mgr/fragments/nmake/jar: idem * mgr/fragments/nmake/installer: idem * mgr/cmt_install_action.bat: idem * mgr/cmt_uninstall_action.bat: idem * mgr/fragments/library: Improve control of the verbosity of Make * mgr/fragments/jar_header: idem * mgr/fragments/installer: idem 2008-02-18 348 * source/cmt_system.cxx: Check the pclose () function return value to obtain the exit status of the executed command (used in the CvsImplementation::execute_and_retry () method) 2008-02-16 347 * source/cmt_parser.cxx: Issue a warning when structuring style used is `without_version_directory' but `version.cmt' file is missing (suggested by Laurent Vacavant). Issue a warning when `version.cmt' file exists but cannot be read 2008-02-16 346 * src/Makefile.core: Improve the control of the verbosity of Make * mgr/fragments/library: idem * mgr/cmt_install_action.sh: idem * mgr/cmt_uninstall_action.sh: idem * mgr/cmt_make_shlib.sh: idem 2008-02-15 345 * src/Makefile.core: Control the verbosity of Make by setting the following Make variables (in order of precedence): VERBOSE - print CMT messages and echo Make commands QUIET - print CMT messages (default) ECHO - echo Make commands SILENT - no CMT messages or Make commands echoing Control the prefix of the CMT messages via the Make variable CMTMSGHDR (default value: #CMT--->) * src/Makefile.header: idem * mgr/fragments/constituents_header: idem * mgr/fragments/group: idem * mgr/fragments/constituent: idem * mgr/fragments/constituent_lock: idem * mgr/fragments/constituents_trailer: idem * mgr/fragments/make_header: idem * mgr/fragments/application_header: idem * mgr/fragments/application: idem * mgr/fragments/application_launcher: idem * mgr/fragments/library_header: idem * mgr/fragments/library: idem * mgr/fragments/library_no_share: idem * mgr/fragments/dependencies: idem * mgr/fragments/c: idem * mgr/fragments/c_library: idem * mgr/fragments/cpp: idem * mgr/fragments/cpp_library: idem * mgr/fragments/fortran: idem * mgr/fragments/fortran_library: idem * mgr/fragments/java_header: idem * mgr/fragments/jar: idem * mgr/fragments/cleanup_application: idem * mgr/fragments/installer: idem * mgr/cmt_make_shlib.sh: idem * mgr/cmt_install_action.sh: idem * mgr/cmt_uninstall_action.sh: idem 2008-02-09 344 * mgr/cmt_install_action.sh: Optimise by reducing the number of processes making use of the POSIX shell features * mgr/cmt_uninstall_action.sh: idem, fix options processing 2008-02-02 343 * source/cmt_parser.cxx: Correct treatment of the -with_version_directory and -without_version_directory command line options * source/cmt.h: idem 2008-02-02 342 * source/cmt_project.h: Optimise the use of realpath_ * source/cmt_project.cxx: idem * source/cmt_use.cxx: idem 2008-01-31 341 * mgr/fragments/dependencies: Make sure the dependencies are re-calculated whenever the included files are changed (the problem pointed out by Marco) * mgr/fragments/c: idem * mgr/fragments/c_library: idem * mgr/fragments/cpp: idem * mgr/fragments/cpp_library: idem * mgr/fragments/fortran: idem * mgr/fragments/fortran_library: idem * mgr/fragments/lex: idem * mgr/fragments/lex_library: idem * mgr/fragments/yacc: idem * mgr/fragments/yacc_library: idem 2008-01-25 340 * source/cmt_system.h: Improve the handling of symlinks in the paths * source/cmt_system.cxx: idem * source/cmt_use.cxx: idem * source/cmt_project.cxx: idem * source/cmt_parser.cxx: Comment out a duplicate piece of code 2008-01-18 339 * mgr/fragments/constituent: Do not rebuild any *.make files when QUICK is defined, build all the *.make files in the binary tag directory, do not use MAKEFLAGS explicitly, do not leave a lock file in /tmp * mgr/fragments/constituent_lock: idem * mgr/fragments/constituents_header: idem * mgr/fragments/make_header: idem * src/Makefile.header: idem 2008-01-14 338 * mgr/cmt_dcc_version.sh: Optimise by reducing the number of processes making use of sed * mgr/cmt_gcc_version.sh: idem * mgr/cmt_filter_version.sh: idem * mgr/cmt_filter3_version.sh: idem * mgr/cmt_linux_version.sh: Optimise by reducing the number of processes making use of sed and the POSIX shell features (patch from KELEMEN Peter) 2008-01-14 337 * source/cmt_parser.cxx: Make use of the structuring style, when configuring a package without a version.cmt file, to allow the use of digits in package names of such packages structured without a version directory 2007-11-25 336 * mgr/cmt_lockfile.bat: Enhance basic semaphore-file creator for Windows * mgr/cmt_lockfile.sh: Enhance basic semaphore-file creator for Unix * mgr/requirements: Use enhanced basic semaphore-file creator for Windows * mgr/lockfile.bat: Make obsolete basic semaphore-file creator for Windows * mgr/lockfile.sh: Make obsolete basic semaphore-file creator for Unix 2007-11-22 335 * source/cmt_generators.h: idem * source/cmt_generators.cxx: idem * source/cmt_lock.cxx: idem * mgr/fragments/constituent_lock: idem * mgr/fragments/nmake/constituent_lock: idem * mgr/requirements: Implement a locking mechanism to allow simultaneous/parallel builds for multiple binary tags. Used suggestions from Pere, Stefan, and Andrea * mgr/lockfile.bat: Basic semaphore-file creator for Windows * mgr/lockfile.sh: Basic semaphore-file creator for Unix 2007-10-31 334 * source/cmt_parser.cxx: idem * source/cmt_commands.cxx: idem * source/cmt_generator.h: idem * source/cmt_generator.cxx: idem * source/cmt_generators.h: idem * source/cmt_generators.cxx: Implement the new -out=file option of the cmt build constituent_makefile command * mgr/fragments/constituent: Make use of the new -out=file option of the cmt build constituent_makefile command to allow simultaneous builds for multiple binary tags 2007-09-01 333 * source/cmt_deps_builder.h: idem * source/cmt_deps_builder.cxx: idem * source/cmt_generators.h: idem * source/cmt_generators.cxx: Implement a header file filter mechanism to replace header files matching a pattern with a stamp file when calculating files dependencies 2007-07-09 332 * source/cmt_deps_builder.cxx: Restore the erase of continuation character logic 2007-07-06 331 * source/cmt_awk.cxx: Reinstate print out 2007-04-27 330 * source\cmt_cvs.cxx (class CvsImplementation): Forgot to consider the minimal case where only one tag exists for the package, the tag related with the original import. 2007-04-24 329 * source/cmt_cvs.cxx (class CvsImplementation): Don't consider CVS branches when tag is not specified * source/cmt_project.cxx: Protect warning messages with -quiet * source/cmt_system.cxx: idem * source/cmt_system.h: Improvement of the FilePath class definition * source/cmt_parser.cxx: Prepare using FilePath objet for current dir Better management of the -quiet option * source/cmt.h: Prepare using FilePath objet for current dir 2007-04-23 328 * mgr/fragments/java_header: Make use of the $(jar) macro 2007-04-23 327 * source/cmt_system.cxx: activate the support to PWD env. var. Start the definition of the new generic class FilePath to store physical and logical file specifications 2007-04-20 327 * source/cmt_use.cxx: idem * source/cmt_triggers.cxx: idem * source/cmt_tag.cxx: idem * source/cmt_system.cxx: idem * source/cmt_syntax.cxx: idem * source/cmt_symbol.cxx: idem * source/cmt_sequence.cxx: idem * source/cmt_script.cxx: idem * source/cmt_regexp.cxx: idem * source/cmt_project.cxx: idem * source/cmt_pattern.cxx: idem * source/cmt_parser.cxx: idem * source/cmt_model.cxx: idem * source/cmt_log.cxx: idem * source/cmt_lock.cxx: idem * source/cmt_language.cxx: idem * source/cmt_install_area.cxx: idem * source/cmt_group.cxx: idem * source/cmt_generators.cxx: idem * source/cmt_generator.cxx: idem * source/cmt_fragment.cxx: idem * source/cmt_cvs.cxx: idem Send error & warning messages to stderr instead of stdout * source/cmt_constituent.cxx: idem * source/cmt_cmtpath_pattern.cxx : idem * source/cmt_branch.cxx : idem * source/cmt_awk.cxx : idem * source/cmt.cxx: formatting text 2007-03-28 Vincent Garonne 326 * source/cmt_deps_builder.cxx, cmt_syntax.cxx: Change or by ||, not by ! which create problem on windows 2007-03-22 Vincent Garonne 325 * source/cmt.cxx: Extract the pure status code when executing an action 2007-03-07 Vincent Garonne 324 * source/cmt_commands.cxx: Remove a extra debugging print remained... 2007-02-08 Vincent Garonne 323 * source/cmt_parser.cxx: Disable the creation of ROOT/CONFIG variable for the PACKAGE_POLICY_ virtual package 2007-01-02 Vincent Garonne 322 * source/cmt_parser.cxx: update to deal with the action return status code and the -no_auto_imports differents cases. * source/cmt_constituents.cxx: Add support for the -import=PkgA,PkgB * source/cmt_error.*: update to deal with the action return status code * source/cmt.cxx: return status code 2007-31-01 Vincent Garonne 321 * cmt_deps_builder.cxx: Add support for space, line continuing character, etc. 2006-15-11 Vincent Garonne 320 * mgr/fragments/group, mgr/fragments/nmake/group: Add macros $(${GROUP}_pre_constituents), $(${GROUP}_post_constituents) for having target executed by default. 2006-14-11 Vincent Garonne 319 * cmt.h, cmt_parser.cxx: Generate a native_version.cmt file if the _native_version macro exists at the config step. 2006-14-11 Vincent Garonne 318 * cmt_tag.cxx: Correct the fact that "apply_tag" protected by a private section is exported in all the clients packages. 2006-10-24 317 * source\\cmt_cmtpath_pattern.cxx (apply): Implement the two different traversal modes for the project graph * source\\cmt_cmtpath_pattern.h (class CmtPathPattern): Add extra arguments to action and add AND a new attribute to hold the possible revert mode in the project traversal * source\\cmt_syntax.cxx (class KwdCmtPathPatternRevert): Implement the parsing of the new keyword simply by adding an extra optional arg to the CmtPathPattern::action (SyntaxParser): Add a new keyword cmtpath_pattern_revert to handle project traversal in reverse order (wrt the current order of cmtpath_pattern) 2006-18-10 Vincent Garonne 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 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 315 * source/cmt_std.h: add __APPLE__ for removing compilation warnings 2006-11-10 Vincent Garonne 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 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 312 * source/cmt_symbol.cxx: Bug fixed on the windows platform. 2006-08-17 Vincent Garonne 311 * source/cmt_syntax.cxx: Add support for author syntax to project 2006-06-15 Vincent Garonne 310 * source/cmt_system.cxx: Correct touch function to conserve permission 2006-06-15 Vincent Garonne 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 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 307 * source/cmt_pattern.cxx (expand): Make use of use->get_cmtpath_and_offset to compute the project of the package when expanding the template to fix packages with offset 2006-04-25 Vincent Garonne 306 * cmt_generator.cxx: Add the fixe recommend by markus to deal with extern c data on visual 2006-04-25 Vincent Garonne 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 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 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 302 * source/cmt_cvs.cxx: Do the exact mathing for tag during recursive checkout operation 2006-04-24 Christian Arnault 301 * source/cmt_pattern.cxx(expand): Add support for a template in patterns 2006-14-03 Christian Arnault 300 * source/cmt_cvs.cxx: Switch checkout sequence from multi-co to multi update 2006-03-01 Vincent Garonne 299 * mgr/requirements: Enable tag v1r18 for the HEAD version 2006-02-24 Christian Arnault 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 297 * mgr/requirements: Fill _installarea_linkopts in addition to cmt_installarea_linkopts 2006-02-09 Christian Arnault 296 * mgr/requirements: Fill _installarea_linkopts in addition to cmt_installarea_linkopts 2006-02-07 Christian Arnault 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 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 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 * source/cmt_parser.cxx: Allow with_version_directory option for users. 2006-01-09 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 291 * source/cmt_system.cxx (is_version_directory): Permit version directories not starting by a letter (eg 1.0) 2005-10-30 290 * source/cmt_symbol.cxx (all_set): Must expand PATH values before filtering and setting them 2005-10-28 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 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 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 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 285 * source/cmt_project.cxx (create_project): Protection against single level directories in CMTPATH (/xxx) 2005-10-11 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 283 * mgr/CMT.pacman: Add constraint on version of pacman Use ./INSTALL instead of just INSTALL 2005-09-29 Christian Arnault 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 282 * mgr/Makefile: Adapt (fix) to changes in the doc directory. 2005-09-07 281 * source/cmt_version.h: fix tag v1r18p20050901 * source/cmt_cvs.h: Fix bug when generating version.cmt file after checkout 2005-09-05 280 * source/cmt_std.h: Fix std context for CYGWIN 2005-09-05 Christian Arnault 279 * source/cmt_cvs.cxx (class CvsImplementation): Fix do_need_version * source/cmt_project.cxx (StrategyMgr): Initialize VersionStrategy using default 2005-09-05 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 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 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 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 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 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 274 * source/cmt_symbol.cxx (build): Clean up unneeded path separators 2005-07-19 Christian Arnault 274 * source/cmt_symbol.cxx (build): Suppress old test in CommandPathRemoveRegexp 2005-05-09 Christian Arnault 273 * source/cmt_use.cxx (fill_standard_macros): Fix a bug in setting the project macros (missing CR) 2005-05-02 Christian Arnault 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 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 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 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 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 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 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 266 * source/cmt_commands.cxx (do_cvstags, do_cvssubpackages): Fix arg counting. 2005-04-12 Christian Arnault 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 264 * source/cmt_version.h (CMTVERSION): Prepare for v1r18p20050401 * mgr/requirements: use ln -fs for cmt_installarea_command 2005-03-31 Christian Arnault 263 * doc/ReleaseNotes: prepare release notes * source/cmt_project.cxx (create_project): Fix settings of the project name. 2005-03-30 Christian Arnault 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 261 * doc/table.html: Install link to the Trac bug reporting system. 2005-03-30 Christian Arnault 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 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 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 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. * 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 257 * mgr/NMake (demo): Add project file to the demo context. 2005-03-04 Christian Arnault 256 * source/cmt_project.cxx: Ongoing work for redefining Project graphs. 2005-03-03 Christian Arnault 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 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 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 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 252 * source/cmt_system.cxx (scan_dir): Fix a bug that killed the cmt show packages command in some cases 2005-02-03 251 * source/cmt_commands.cxx (do_cvstags): fix arg counting * source/cmt_commands.cxx (do_cvssubpackages): fix arg counting 2004-12-14 250 * source/cmt_parser.cxx (class StandardMacroBuilder): Fix a bug that caused a premature exit from the scan of constituents. 2004-12-13 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 248 * mgr/fragments/nmake/library: apply patches from Pere about installing pdb files for Debug mode 2004-12-01 247 * source/cmt_version.h (CMTVERSION): Prepare for tagging v1r18p20041201 * source/cmt.h (class Cmt): Fix typo 2004-12-01 Christian Arnault 246 * mgr/cmt_uninstall_action.sh: Better management of directory removal 2004-12-01 Christian Arnault 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 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 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 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 _libraries macro. 2004-11-02 Christian Arnault 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 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 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 _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 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 _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 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)//*.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 238 * mgr/cmt_make_shlib_common.sh: Suppress the systematic creation of a bundle in Darwin context 2004-09-28 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 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 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 only just before printing for empty vector elements 2004-08-31 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 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 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 _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 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 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: for a single expansion for a multiple expansion The element 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 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 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 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 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 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 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 225 * src\\cmt_parser.cxx (need_prototypes): Fix access to prototype mask of build strategy 2004-05-28 Christian Arnault 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 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 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 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 220 * mgr\\NMake (cmttag): Convert VisualC.nmake into VisualC_cmt.nmake * fragments\\nmake\\constituent: Generate tag file for the target 2004-05-18 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 219 * src\\cmt_log.h (class CmtLog): Introducing a centralized log message facility * src\\cmt_log.cxx: first implementation 2004-05-18 Christian Arnault 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_ when "cmt do " is run * fragments/constituent: Generate the target_${CONSTITUENT} tag 2004-05-17 Christian Arnault 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 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 216 * doc\\CMTDoc.xml: Add a section on package semantics 2004-05-07 Christian Arnault 215 * mgr/requirements: Improve support for CEL Upgrade system_version_query_command for Darwin 2004-05-06 Christian Arnault 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 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 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 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 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 210 * src\\cmt_project.cxx (scan_paths): Late patch for LynxOS limitation * src\\cmt_version.h: Prepare for v1r16 2004-03-29 209 * mgr/Makefile: Set compiler options for CYGWIN 2004-03-27 Christian Arnault 208 * src/cmt_syntax.cxx (class KwdSetupStrategy): Implement setup strategy decoding for projects 2004-03-27 Christian Arnault 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 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 206 * src/cmt_cvs.cxx (class CvsImplementation): Reset default verbose mode to off. 2004-03-23 Christian Arnault 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 - 2004-03-22 Christian Arnault 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 205 * doc/emacs.html: doc on the new emacs mode for CMT * doc/table.html: include emacs.html 2004-03-19 Christian Arnault 204 * src/cmt_symbol.cxx (all_set): Only set non empty environment variables 2004-03-22 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 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 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 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 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 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 200 * src\\cmt_parser.cxx (class StandardMacroBuilder): Fill _project macro (class StandardMacroBuilder): Fill _project macro * src\\cmt_project.cxx (get_current): No need to cd 2004-02-13 Christian Arnault 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 198 * src/cmt_parser.cxx (actor): Rename PackageCollector into ClientCollector 2004-02-09 Christian Arnault 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 * 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 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 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 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 195 * fragments\\nmake\\installer: Fixes from Pere. 2004-01-20 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 VERSION when using cmt -use=... 2004-01-17 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 192 * src/cmt_parser.cxx (dos_script_prefix): Suppress spaces before continuation character in DOS format 2004-01-13 Christian Arnault 191 * src/cmt_symbol.cxx (add_value_to_list): Fix for not discarding too much value_lists 2004-01-10 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 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 188 * src/cmt_use.h (class Use): Remove the project relationship between Use and Project 2003-12-18 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 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 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 _cmtpath when symlinks exist along pwd 2003-12-08 Christian Arnault 186 * src/cmt_parser.cxx (do_build_library_links): Fix : should make use of the library_prefix and suffix. 2003-12-06 Christian Arnault 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 185 * mgr/cmt_install_action.bat: Typo * mgr/requirements: Typo in macro cmt_uninstalldir_action 2003-11-20 Christian Arnault 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 $(_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 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 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 181 * fragments/nmake/constituents_trailer (binclean): Fix typo for Windows 2003-11-06 Christian Arnault 180 * mgr/CMT.pacman: Add generic pacman file. All instances of the "" pattern need to be substituted by the effective version of CMT to make it a real pacman file 2003-10-29 Christian Arnault 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 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 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 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 _cmtpath and _offset macros also for the current package * src/cmt_system.cxx (remove_directory): Add a # for error messages (remove_file): idem 2003-10-14 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 175 * fragments/* : Add start and end markers to all make fragments. 2003-10-09 175 * src\\cmt_parser.cxx (do_broadcast): Suppress the catching of return status=2 for last executed command 2003-10-02 Christian Arnault 175 * src/cmt_system.cxx (cd): putenv requires that the string is static !! 2003-10-01 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 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 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 * 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 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 170 * src/cmt_parser.cxx (class StandardMacroBuilder): Add the production of the new macros _cmtpath _offset (class StandardMacroBuilder): Implement the generation of _cmtpath _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 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 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 168 * src/cmt_use.cxx (find_index): Add a protection when a package was not found 2003-08-14 Christian Arnault 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 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 [] () () (...) or (with -quiet) use [] Also fix a bug when trying to remove offset from real_path... 2003-08-11 Christian Arnault 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 166 * mgr\\requirements: Tuning pour CYGWIN 2003-08-06 Christian Arnault 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 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 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 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 instead of 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 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 in -global mode 2003-06-19 161 * src/cmt_system.cxx (add_cmt_path): Fix cmtpath checking for devices on Windows 2003-06-19 Christian Arnault 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 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 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 , , , (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 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 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 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 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 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 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 (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 to display all possible paths between the current package and the specified package. 2003-05-19 152 * mgr\\cmt_linux_version.sh: add a script for querying linux version for various distributions (contribution from Clark McGrew ) * 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 151 * mgr\\requirements: Typo in the cmtpath_pattern : use_includes 2003-05-14 150 * src\\cmt_parser.cxx (restore_all_tags): Bug in managing -tag= 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 149 * fragments/tex: install correction from Marie Anne 2003-05-12 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 ../ * 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 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 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 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 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 143 * doc/gendoc.py : Create a new mechanism for generating HTML documentation from an XML representation. 2003-04-30 Christian Arnault 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 141 * src/cmt_parser.cxx (run): Bug in PackageCollector::run current directory missed the package name. (for cmt show clients) 2003-04-12 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= 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 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= cumulative option to the constituent syntax 2003-04-07 138 * src\\cmt_generator.cxx: Add DIRNAME Variable Add new fragments for vcproj 2003-04-05 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 _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 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 136 * src/cmt_symbol.cxx (build): Bug : the macro_prepend was NOT really prepending. 2003-03-28 Christian Arnault 136 * src/cmt_parser.cxx (class StandardMacroBuilder): Add CMTVERSION standard macro 2003-03-28 135 * src\\cmt_parser.cxx (configure_version_tag): Create three new predefined tags: CMTv CMTr CMTp 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 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 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 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 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 130 * src/cmt_cmtpath_pattern.cxx (apply): Optimize the substitution of "" in cmtpath_patterns by avoiding a loop over path items when the pattern does not contain "" at all 2003-03-13 Christian Arnault 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 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 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 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 128 * src\\cmt_install_area.cxx (setup): Make use of the cmt_installarea_prefix macro (config): idem 2003-03-08 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 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 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 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 125 * src/cmt_symbol.h (class ValueBuilder): due to recursivity, Builder function cannot share the temporary string value 2003-02-26 Christian Arnault 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 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 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 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 121 * src/Makefile.header (clean): Remove the pseudo config target for the clean target 2003-02-04 Christian Arnault 120 * src/cmt_use.cxx (add): Add protection against recursive use statement to current_use 2003-02-04 119 * src\\cmt_use.cxx (need_new): Add protection against recursive use statement to current_use 2003-01-31 Christian Arnault 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 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 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 _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 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 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 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 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 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 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 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 CONFIG and 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 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 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 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 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 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 . * 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 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 102 * fragments/check_java (check): Add run options (global and local) 2002-12-09 Christian Arnault 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 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 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 98 * src/cmt_use.cxx (set_auto_imports_state): bug fix (corresponding to v1r12p20021129) 2002-10-30 Christian Arnault 97 * src/cmt_vector.h (cmt_vector): define frame_size as a static const int instead of enum 2002-10-15 Christian Arnault 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 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 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 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 _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 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
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
introduce action_apply to activate a tag from a requirements file
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 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 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 89 * doc\\todo.html: Adding entries 2002-05-24 Christian Arnault 88 * src/cmt_cvs.cxx (class CvsImplementation): fix few problems with no_version_directory. 2002-05-23 Christian Arnault 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 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 $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 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 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 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 83 * src\\cmt_parser.cxx (print_clean): Suppress the unset of CMTCONFIG 2002-04-10 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 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 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 79 * src/cmt_symbol.cxx (suppress_OS_delimiters): operate on %...% patterns only on Windows machines. 2002-03-20 Christian Arnault 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 77 * src/cmt_parser.cxx (set_standard_macros): Cleanup management of m_current_tag 2002-03-07 Christian Arnault 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 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 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 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 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 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 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 69 * src\\cmt_use.cxx (class use_action_iterator): Install UseContext to manage proper propagation of -no_auto_imports 2002-01-30 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 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 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 66 * src/NMakefile.header (tags): Apply the fix for tags onto NMakefile.header 2002-01-07 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 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 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 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= error 2001-11-08 Christian Arnault 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 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 $() or ${} or %% 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 59 * src/cmt_generator.cxx (build_document_makefile): protect against missing files (causing infinite loops in Make) 2001-11-05 Christian Arnault 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 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 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 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 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 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 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 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 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 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 49 * src/cmt_version.h: Tagging for v1r9p20011011 * fragments/library: (bug fix) transmit both -tag= and -tag_add= to cmt_make_shlib_common.sh 2001-10-11 Christian Arnault 48 * src/cmt_parser.cxx: remove debug print options 2001-10-10 Christian Arnault 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_add= -tag_remove= 2001-10-03 Christian Arnault 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 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 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 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 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= 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= to specify a list of tags to validate. 2001-09-25 Christian Arnault 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 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 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 38 Tagging v1r9p2001p0824 2001-08-24 Christian Arnault 38 * mgr/cmt_system.sh: Improve the reliability of the cmt_system.sh script against variants of "fs sysname" 2001-08-23 Christian Arnault 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 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 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 34 * src/cmt_cvs.cxx (class CvsImplementation): Improving the recursive checkout process 2001-08-20 33 * src\\cmt_cvs.cxx (class CvsImplementation): Reorganizing some CVS operations:
  • Apply the CMTCVSOFFSET env. variable to all actions (tags, branches, subpackages)
  • cleanup checkout algorithms (remove some obsolete variables)
  • add the -requirements option to checkout according to a set of use statements.
  • remove the inheritance to Awk of CvsImplementation to split the filter into 2 phases (implemented as 2 separated Awk derived classes) RecursivePass1 and RecursivePass2.
2001-08-16 Christian Arnault 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 31 * src/cmt_version.h: setting the patch v1r9p20010720 2001-07-20 Christian Arnault 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 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 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 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 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 26 * src/cmt_version.h: setting the patch v1r9p20010704 2001-07-02 Christian Arnault 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 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 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 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 @ 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 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 22 * src/cmt_parser.cxx (do_broadcast): Bug fix in do_broadcast: the -begin option wrongly implied the -global option. 2001-06-13 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 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 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 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 22 * src/cmt_parser.cxx (do_broadcast): Fix the default (-local) option to act as -depth=1. Improve some error messages. 2001-05-21 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 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 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 _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 build dependencies " (do_config): drop all makefile fragments from the mgr/cmt directory AND from the binary directory. 2001-05-11 Christian Arnault 20 * Moving to v1r8 2001-05-11 Christian Arnault 19 * src/cmt_deps_builder.cxx (): Augmented local internal line buffer (from 1024 to 16384). * doc/CMTDoc.html: document the new <package>_root macro * src/cmt_parser.cxx (set_standard_macros) (get_best_form): Define a new set of standard macros using the pattern _root similar to ROOT except that this new definition uses the get_best_form, with a relative path to the package. The 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 _root standard macro 2001-05-10 Christian Arnault 18 * src/cmt_parser.cxx (do_broadcast): Add the -begin= 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 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 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 16 * src/cmt_parser.cxx (get_best_form): Validate the compression algorithm for paths to packages (only for the macro ROOT - this is still not true for the 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 15 * src/cmt_parser.cxx (set_standard_macros): Prepare the production of 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 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 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= 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 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 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 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 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 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 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 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 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 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 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 5 * src/cmt_parser.cxx (parse_arguments): When the tag specified in the command line arguments (using -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 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 3 * mgr/requirements: clean up variants for VisualC and VisualC/debug 2001-03-15 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 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 * 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 * src\\cmt_parser.cxx (do_build_library_links): Handle libraries specified as a full path in _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 * 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 * 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 * src/cmt_cvs.cxx (class CvsImplementation): Fix misuse of checkout_package arguments (confusion between package path and checkout directory) 2001-02-26 * 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 * 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 * 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 * 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 * 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 * 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 * 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 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 * 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 '/' \303\255nstead of CmtSystem::file_separator for CVS-only file specs. 2000-12-26 * 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