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_broadcast (const CmtSystem::cmt_string_vector& arguments, 00035 int argc, 00036 char* argv[]); 00037 static void do_build_constituent_makefile (const CmtSystem::cmt_string_vector& arguments, 00038 int argc, 00039 char* argv[]); 00040 static void do_build_constituents_makefile (const CmtSystem::cmt_string_vector& arguments, 00041 int argc, 00042 char* argv[]); 00043 static void do_build_dependencies (const CmtSystem::cmt_string_vector& arguments, 00044 int argc, 00045 char* argv[]); 00046 static void do_build_library_links (); 00047 static void do_build_make_setup (); 00048 static void do_build_msdev (const CmtSystem::cmt_string_vector& arguments); 00049 static void do_build_os9_makefile (const CmtSystem::cmt_string_vector& arguments); 00050 static void do_build_prototype (const CmtSystem::cmt_string_vector& arguments); 00051 static void do_build_readme (const CmtSystem::cmt_string_vector& arguments); 00052 static void do_build_tag_makefile (); 00053 static void do_build_temporary_name (); 00054 static void do_build_triggers (const CmtSystem::cmt_string_vector& arguments); 00055 static void do_build_windefs (const CmtSystem::cmt_string_vector& arguments); 00056 static void do_check_configuration (); 00057 static void do_check_files (const CmtSystem::cmt_string_vector& arguments); 00058 static void do_check_version (const CmtSystem::cmt_string_vector& arguments); 00059 static void do_checkout (const CmtSystem::cmt_string_vector& arguments); 00060 static void do_cleanup (PrintMode& mode); 00061 static void do_config (); 00062 static void do_create (const CmtSystem::cmt_string_vector& arguments); 00063 static void do_cvsbranches (const CmtSystem::cmt_string_vector& arguments); 00064 static void do_cvssubpackages (const CmtSystem::cmt_string_vector& arguments); 00065 static void do_cvstags (const CmtSystem::cmt_string_vector& arguments); 00066 static void do_expand_model (const CmtSystem::cmt_string_vector& arguments); 00067 static void do_filter (const CmtSystem::cmt_string_vector& arguments); 00068 static void do_help (); 00069 static void do_lock (const cmt_string& package, 00070 const cmt_string& version, 00071 const cmt_string& path); 00072 static void do_remove (const cmt_string& package, 00073 const cmt_string& version, 00074 const cmt_string& path); 00075 static void do_remove_library_links (); 00076 static void do_run (const CmtSystem::cmt_string_vector& arguments); 00077 static void do_setup (PrintMode& mode); 00078 static void do_show_all_tags (); 00079 static void do_show_applied_patterns (); 00080 static void do_show_author (); 00081 static void do_show_branches (PrintMode& mode); 00082 static void do_show_clients (const CmtSystem::cmt_string_vector& arguments); 00083 static void do_show_constituent (const CmtSystem::cmt_string_vector& arguments); 00084 static void do_show_constituent_names (); 00085 static void do_show_constituents (); 00086 static void do_show_fragment (const CmtSystem::cmt_string_vector& arguments); 00087 static void do_show_fragments (); 00088 static void do_show_groups (); 00089 static void do_show_include_dirs (); 00090 static void do_show_language (const CmtSystem::cmt_string_vector& arguments); 00091 static void do_show_languages (); 00092 static void do_show_macro (const CmtSystem::cmt_string_vector& arguments, 00093 PrintMode& mode); 00094 static void do_show_macro_value (const CmtSystem::cmt_string_vector& arguments, 00095 PrintMode& mode); 00096 static void do_show_macros (PrintMode& mode); 00097 static void do_show_manager (); 00098 static void do_show_packages (const CmtSystem::cmt_string_vector& arguments); 00099 static void do_show_path (); 00100 static void do_show_pattern (const CmtSystem::cmt_string_vector& arguments); 00101 static void do_show_pattern_names (); 00102 static void do_show_patterns (); 00103 static void do_show_pwd (); 00104 static void do_show_set (const CmtSystem::cmt_string_vector& arguments, 00105 PrintMode& mode); 00106 static void do_show_set_value (const CmtSystem::cmt_string_vector& arguments, 00107 PrintMode& mode); 00108 static void do_show_sets (PrintMode& mode); 00109 static void do_show_strategies (); 00110 static void do_show_tags (); 00111 static void do_show_uses (); 00112 static void do_show_version (); 00113 static void do_show_versions (const CmtSystem::cmt_string_vector& arguments); 00114 static void do_show_system (); 00115 static void do_unlock (const cmt_string& package, 00116 const cmt_string& version, 00117 const cmt_string& path); 00118 static void do_version (); 00119 00120 00121 static const cmt_string& filter_dir (const cmt_string& dir); 00122 00123 static ActionType get_action (); 00124 static const CmtSystem::cmt_string_vector& get_cmt_path (); 00125 static const cmt_string& get_cmt_home (); 00126 static const cmt_string& get_cmt_user_context (); 00127 static const cmt_string& get_current_dir (); 00128 static const cmt_string& get_current_package (); 00129 static AccessMode get_current_access (); 00130 static VersionStrategy get_current_strategy (); 00131 static const cmt_string& get_current_version (); 00132 static const cmt_string& get_current_target (); 00133 static bool get_debug (); 00134 static bool get_quiet (); 00135 static bool get_recursive (); 00136 static ScopeType get_scope (); 00137 00138 static void install_cleanup_scripts (); 00139 static void install_setup_scripts (); 00140 static void install_test_cleanup_scripts (); 00141 static void install_test_setup_scripts (); 00142 static bool load (const cmt_string& path, 00143 const cmt_string& package, 00144 const cmt_string& version, 00145 const cmt_string& tag_name = ""); 00146 static bool need_prototypes (); 00147 static void parse_arguments (int argc, char* argv[], 00148 CmtSystem::cmt_string_vector& arguments, 00149 cmt_string& extra_line, 00150 cmt_string& extra_file, 00151 PrintMode& mode); 00152 static void parse_requirements (const cmt_string& file_name, Use* use); 00153 static void parse_requirements_line (const cmt_string& line, 00154 Use* use, 00155 const cmt_string& file_name = "", 00156 int line_number = 0); 00157 static void parse_requirements_text (const cmt_string& text, 00158 const cmt_string& file_name, 00159 Use* use); 00160 static int parser (const cmt_string& command_line); 00161 static int parser (int argc, char* argv[]); 00162 static void print (PrintMode mode); 00163 static void print_clean (PrintMode mode); 00164 static void print_context (Use& use, PrintMode mode, const cmt_string& tag); 00165 static void print_macros (PrintMode mode); 00166 static void print_tabs (int tabs); 00167 static int reach_current_package (); 00168 static void restore_all_tags (Use* use); 00169 static void select (const CmtSystem::cmt_string_vector& words, Use* use, 00170 const cmt_string& file_name, 00171 int line_number); 00172 static void set_standard_macros (); 00173 static void use_cmt (); 00174 static void use_home_requirements (); 00175 static void use_user_context_requirements (); 00176 static cmt_string vector_to_string (const CmtSystem::cmt_string_vector& v); 00177 static void vector_to_string (const CmtSystem::cmt_string_vector& v, 00178 const cmt_string& separator, 00179 cmt_string& result); 00180 00181 private: 00182 00184 00185 static ActionType m_action; 00186 static bool m_build_nmake; 00187 static cmt_string m_cmt_config; 00188 static CmtSystem::cmt_string_vector m_cmt_path; 00189 static CmtSystem::cmt_string_vector m_cmt_path_pwds; 00190 static CmtSystem::cmt_string_vector m_cmt_path_sources; 00191 static cmt_string m_cmt_root; 00192 static cmt_string m_cmt_home; 00193 static cmt_string m_cmt_user_context; 00194 static cmt_string m_cmt_site; 00195 static cmt_string m_cmt_version; 00196 00197 static int m_current_build_strategy; 00198 00199 static cmt_string m_current_dir; 00200 static cmt_string m_current_package; 00201 static cmt_string m_current_config; 00202 static cmt_string m_current_path; 00203 static cmt_string m_current_prefix; 00204 00205 static AccessMode m_current_access; 00206 static VersionStrategy m_current_strategy; 00207 static CmtDirStyle m_current_style; 00208 00209 static cmt_string m_current_tag; 00210 static cmt_string m_current_target; 00211 static cmt_string m_current_version; 00212 00213 static cmt_string m_extra_tags; 00214 static cmt_string m_configure_error; 00215 00216 static bool m_debug; 00217 00218 static cmt_string m_default_path; 00219 static cmt_string m_filtered_text; 00220 static bool m_quiet; 00221 static bool m_recursive; 00222 static ScopeType m_scope; 00223 static bool m_simulation; 00224 static bool m_standard_macros_done; 00225 }; 00226 00227 #endif