00001 #ifndef __cmt_h__
00002 #define __cmt_h__
00003
00004 #include "cmt_parser.h"
00005 #include "cmt_system.h"
00006
00007 class Symbol;
00008 class Tag;
00009
00010 class Cmt
00011 {
00012 public:
00013 static void build_config (const cmt_string& prefix, cmt_string& config);
00014 static void build_makefile (const cmt_string& target);
00015 static void build_msdev_file (const cmt_string& target);
00016 static bool build_nmake ();
00017 static void build_OS9_makefile (const cmt_string& target);
00018 static void build_prefix (const cmt_string& package, cmt_string& prefix);
00019 static void clear ();
00020
00021 static void configure ();
00022 static void configure_cmt_path (Use* use);
00023 static void configure_config_tag ();
00024 static void configure_current_dir ();
00025 static void configure_current_package ();
00026 static void configure_default_path ();
00027 static void configure_home (Use* use);
00028 static void configure_user_context (Use* use);
00029 static void configure_hosttype_tag ();
00030 static void configure_site_tag (Use* use);
00031 static void configure_tags (Use* use);
00032 static void configure_uname_tag ();
00033
00034 static void do_awk (const CmtSystem::cmt_string_vector& arguments);
00035 static void do_broadcast (const CmtSystem::cmt_string_vector& arguments,
00036 int argc,
00037 char* argv[]);
00038 static void do_build_constituent_makefile (const CmtSystem::cmt_string_vector& arguments,
00039 int argc,
00040 char* argv[]);
00041 static void do_build_constituents_makefile (const CmtSystem::cmt_string_vector& arguments,
00042 int argc,
00043 char* argv[]);
00044 static void do_build_dependencies (const CmtSystem::cmt_string_vector& arguments,
00045 int argc,
00046 char* argv[]);
00047 static void do_build_library_links ();
00048 static void do_build_make_setup ();
00049 static void do_build_msdev (const CmtSystem::cmt_string_vector& arguments);
00050 static void do_build_os9_makefile (const CmtSystem::cmt_string_vector& arguments);
00051 static void do_build_prototype (const CmtSystem::cmt_string_vector& arguments);
00052 static void do_build_readme (const CmtSystem::cmt_string_vector& arguments);
00053 static void do_build_tag_makefile ();
00054 static void do_build_temporary_name ();
00055 static void do_build_triggers (const CmtSystem::cmt_string_vector& arguments);
00056 static void do_build_windefs (const CmtSystem::cmt_string_vector& arguments);
00057 static void do_check_configuration ();
00058 static void do_check_files (const CmtSystem::cmt_string_vector& arguments);
00059 static void do_check_version (const CmtSystem::cmt_string_vector& arguments);
00060 static void do_checkout (const CmtSystem::cmt_string_vector& arguments);
00061 static void do_cleanup (PrintMode& mode);
00062 static void do_config ();
00063 static void do_create (const CmtSystem::cmt_string_vector& arguments);
00064 static void do_cvsbranches (const CmtSystem::cmt_string_vector& arguments);
00065 static void do_cvssubpackages (const CmtSystem::cmt_string_vector& arguments);
00066 static void do_cvstags (const CmtSystem::cmt_string_vector& arguments);
00067 static void do_expand_model (const CmtSystem::cmt_string_vector& arguments);
00068 static void do_filter (const CmtSystem::cmt_string_vector& arguments);
00069 static void do_help ();
00070 static void do_lock (const cmt_string& package,
00071 const cmt_string& version,
00072 const cmt_string& path);
00073 static void do_remove (const cmt_string& package,
00074 const cmt_string& version,
00075 const cmt_string& path);
00076 static void do_remove_library_links ();
00077 static void do_run (const CmtSystem::cmt_string_vector& arguments);
00078 static void do_run_sequence (const CmtSystem::cmt_string_vector& arguments);
00079 static void do_setup (PrintMode& mode);
00080 static void do_show_all_tags ();
00081 static void do_show_applied_patterns ();
00082 static void do_show_author ();
00083 static void do_show_branches (PrintMode& mode);
00084 static void do_show_clients (const CmtSystem::cmt_string_vector& arguments);
00085 static void do_show_constituent (const CmtSystem::cmt_string_vector& arguments);
00086 static void do_show_constituent_names ();
00087 static void do_show_constituents ();
00088 static void do_show_fragment (const CmtSystem::cmt_string_vector& arguments);
00089 static void do_show_fragments ();
00090 static void do_show_groups ();
00091 static void do_show_include_dirs ();
00092 static void do_show_language (const CmtSystem::cmt_string_vector& arguments);
00093 static void do_show_languages ();
00094 static void do_show_macro (const CmtSystem::cmt_string_vector& arguments,
00095 PrintMode& mode);
00096 static void do_show_macro_names (const CmtSystem::cmt_string_vector& arguments,
00097 PrintMode& mode);
00098 static void do_show_macro_value (const CmtSystem::cmt_string_vector& arguments,
00099 PrintMode& mode);
00100 static void do_show_macros (const CmtSystem::cmt_string_vector& arguments,
00101 PrintMode& mode);
00102 static void do_show_manager ();
00103 static void do_show_packages (const CmtSystem::cmt_string_vector& arguments);
00104 static void do_show_path ();
00105 static void do_show_pattern (const CmtSystem::cmt_string_vector& arguments);
00106 static void do_show_pattern_names ();
00107 static void do_show_patterns ();
00108 static void do_show_pwd ();
00109 static void do_show_set (const CmtSystem::cmt_string_vector& arguments,
00110 PrintMode& mode);
00111 static void do_show_set_names (const CmtSystem::cmt_string_vector& arguments,
00112 PrintMode& mode);
00113 static void do_show_set_value (const CmtSystem::cmt_string_vector& arguments,
00114 PrintMode& mode);
00115 static void do_show_sets (const CmtSystem::cmt_string_vector& arguments,
00116 PrintMode& mode);
00117 static void do_show_strategies ();
00118 static void do_show_tags ();
00119 static void do_show_uses ();
00120 static void do_show_version ();
00121 static void do_show_versions (const CmtSystem::cmt_string_vector& arguments);
00122 static void do_show_system ();
00123 static void do_unlock (const cmt_string& package,
00124 const cmt_string& version,
00125 const cmt_string& path);
00126 static void do_version ();
00127
00128
00129 static const cmt_string& filter_dir (const cmt_string& dir);
00130
00131 static ActionType get_action ();
00132 static const CmtSystem::cmt_string_vector& get_cmt_path ();
00133 static const cmt_string& get_cmt_home ();
00134 static const cmt_string& get_cmt_user_context ();
00135 static const cmt_string& get_current_dir ();
00136 static const cmt_string& get_current_package ();
00137 static AccessMode get_current_access ();
00138 static VersionStrategy get_current_strategy ();
00139 static const cmt_string& get_current_version ();
00140 static const cmt_string& get_current_target ();
00141 static bool get_debug ();
00142 static bool get_quiet ();
00143 static bool get_recursive ();
00144 static ScopeType get_scope ();
00145
00146 static void install_cleanup_scripts ();
00147 static void install_setup_scripts ();
00148 static void install_test_cleanup_scripts ();
00149 static void install_test_setup_scripts ();
00150 static bool load (const cmt_string& path,
00151 const cmt_string& package,
00152 const cmt_string& version,
00153 const cmt_string& tag_name = "");
00154 static bool need_prototypes ();
00155 static void parse_arguments (int argc, char* argv[],
00156 CmtSystem::cmt_string_vector& arguments,
00157 cmt_string& extra_line,
00158 cmt_string& extra_file,
00159 PrintMode& mode);
00160 static void parse_requirements (const cmt_string& file_name, Use* use);
00161 static void parse_requirements_line (const cmt_string& line,
00162 Use* use,
00163 const cmt_string& file_name = "",
00164 int line_number = 0);
00165 static void parse_requirements_text (const cmt_string& text,
00166 const cmt_string& file_name,
00167 Use* use);
00168 static int parser (const cmt_string& command_line);
00169 static int parser (int argc, char* argv[]);
00170 static void print (PrintMode mode);
00171 static void print_clean (PrintMode mode);
00172 static void print_context (Use& use, PrintMode mode, const cmt_string& tag);
00173 static void print_macros (PrintMode mode, const cmt_string& pattern = "");
00174 static void print_symbol_names (PrintMode mode, const cmt_string& pattern = "");
00175 static void print_tabs (int tabs);
00176 static int reach_current_package ();
00177 static void restore_all_tags (Use* use);
00178 static void select (const CmtSystem::cmt_string_vector& words, Use* use,
00179 const cmt_string& file_name,
00180 int line_number);
00181 static void set_standard_macros ();
00182 static void use_cmt ();
00183 static void use_home_requirements ();
00184 static void use_user_context_requirements ();
00185 static cmt_string vector_to_string (const CmtSystem::cmt_string_vector& v);
00186 static void vector_to_string (const CmtSystem::cmt_string_vector& v,
00187 const cmt_string& separator,
00188 cmt_string& result);
00189
00190 private:
00191
00193
00194 static ActionType m_action;
00195 static bool m_build_nmake;
00196 static cmt_string m_cmt_config;
00197 static CmtSystem::cmt_string_vector m_cmt_path;
00198 static CmtSystem::cmt_string_vector m_cmt_path_pwds;
00199 static CmtSystem::cmt_string_vector m_cmt_path_sources;
00200 static cmt_string m_cmt_root;
00201 static cmt_string m_cmt_home;
00202 static cmt_string m_cmt_user_context;
00203 static cmt_string m_cmt_site;
00204 static cmt_string m_cmt_version;
00205
00206 static int m_current_build_strategy;
00207
00208 static cmt_string m_current_dir;
00209 static cmt_string m_current_package;
00210 static cmt_string m_current_config;
00211 static cmt_string m_current_path;
00212 static cmt_string m_current_prefix;
00213
00214 static AccessMode m_current_access;
00215 static VersionStrategy m_current_strategy;
00216 static CmtDirStyle m_current_style;
00217
00218 static cmt_string m_current_tag;
00219 static cmt_string m_current_target;
00220 static cmt_string m_current_version;
00221
00222 static cmt_string m_extra_tags;
00223 static cmt_string m_configure_error;
00224
00225 static bool m_debug;
00226
00227 static cmt_string m_default_path;
00228 static cmt_string m_filtered_text;
00229 static bool m_quiet;
00230 static bool m_recursive;
00231 static ScopeType m_scope;
00232 static bool m_simulation;
00233 static bool m_standard_macros_done;
00234 };
00235
00236 #endif