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_pacmane 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 '/' ínstead 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