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_applied_patterns (); 00079 static void do_show_author (); 00080 static void do_show_branches (PrintMode& mode); 00081 static void do_show_clients (const CmtSystem::cmt_string_vector& arguments); 00082 static void do_show_constituent (const CmtSystem::cmt_string_vector& arguments); 00083 static void do_show_constituent_names (); 00084 static void do_show_constituents (); 00085 static void do_show_fragment (const CmtSystem::cmt_string_vector& arguments); 00086 static void do_show_fragments (); 00087 static void do_show_groups (); 00088 static void do_show_include_dirs (); 00089 static void do_show_language (const CmtSystem::cmt_string_vector& arguments); 00090 static void do_show_languages (); 00091 static void do_show_macro (const CmtSystem::cmt_string_vector& arguments, 00092 PrintMode& mode); 00093 static void do_show_macro_value (const CmtSystem::cmt_string_vector& arguments, 00094 PrintMode& mode); 00095 static void do_show_macros (PrintMode& mode); 00096 static void do_show_manager (); 00097 static void do_show_packages (const CmtSystem::cmt_string_vector& arguments); 00098 static void do_show_path (); 00099 static void do_show_pattern (const CmtSystem::cmt_string_vector& arguments); 00100 static void do_show_pattern_names (); 00101 static void do_show_patterns (); 00102 static void do_show_pwd (); 00103 static void do_show_set (const CmtSystem::cmt_string_vector& arguments, 00104 PrintMode& mode); 00105 static void do_show_set_value (const CmtSystem::cmt_string_vector& arguments, 00106 PrintMode& mode); 00107 static void do_show_sets (PrintMode& mode); 00108 static void do_show_strategies (); 00109 static void do_show_tags (); 00110 static void do_show_uses (); 00111 static void do_show_version (); 00112 static void do_show_versions (const CmtSystem::cmt_string_vector& arguments); 00113 static void do_show_system (); 00114 static void do_unlock (const cmt_string& package, 00115 const cmt_string& version, 00116 const cmt_string& path); 00117 static void do_version (); 00118 00119 00120 static const cmt_string& filter_dir (const cmt_string& dir); 00121 00122 static ActionType get_action (); 00123 static const CmtSystem::cmt_string_vector& get_cmt_path (); 00124 static const cmt_string& get_cmt_home (); 00125 static const cmt_string& get_cmt_user_context (); 00126 static const cmt_string& get_current_dir (); 00127 static const cmt_string& get_current_package (); 00128 static AccessMode get_current_access (); 00129 static VersionStrategy get_current_strategy (); 00130 static const cmt_string& get_current_version (); 00131 static const cmt_string& get_current_target (); 00132 static bool get_debug (); 00133 static bool get_quiet (); 00134 static bool get_recursive (); 00135 static ScopeType get_scope (); 00136 00137 static void install_cleanup_scripts (); 00138 static void install_setup_scripts (); 00139 static void install_test_cleanup_scripts (); 00140 static void install_test_setup_scripts (); 00141 static bool load (const cmt_string& path, 00142 const cmt_string& package, 00143 const cmt_string& version, 00144 const cmt_string& tag_name = ""); 00145 static bool need_prototypes (); 00146 static void parse_arguments (int argc, char* argv[], 00147 CmtSystem::cmt_string_vector& arguments, 00148 cmt_string& extra_line, 00149 cmt_string& extra_file, 00150 PrintMode& mode); 00151 static void parse_requirements (const cmt_string& file_name, Use* use); 00152 static void parse_requirements_line (const cmt_string& line, 00153 Use* use, 00154 const cmt_string& file_name = "", 00155 int line_number = 0); 00156 static void parse_requirements_text (const cmt_string& text, 00157 const cmt_string& file_name, 00158 Use* use); 00159 static int parser (const cmt_string& command_line); 00160 static int parser (int argc, char* argv[]); 00161 static void print (PrintMode mode); 00162 static void print_clean (PrintMode mode); 00163 static void print_context (Use& use, PrintMode mode, const cmt_string& tag); 00164 static void print_macros (PrintMode mode); 00165 static void print_tabs (int tabs); 00166 static int reach_current_package (); 00167 static void restore_all_tags (Use* use); 00168 static void select (const CmtSystem::cmt_string_vector& words, Use* use, 00169 const cmt_string& file_name, 00170 int line_number); 00171 static void set_standard_macros (); 00172 static void use_cmt (); 00173 static void use_home_requirements (); 00174 static void use_user_context_requirements (); 00175 static cmt_string vector_to_string (const CmtSystem::cmt_string_vector& v); 00176 static void vector_to_string (const CmtSystem::cmt_string_vector& v, 00177 const cmt_string& separator, 00178 cmt_string& result); 00179 00180 private: 00181 00183 00184 static ActionType m_action; 00185 static bool m_build_nmake; 00186 static cmt_string m_cmt_config; 00187 static CmtSystem::cmt_string_vector m_cmt_path; 00188 static CmtSystem::cmt_string_vector m_cmt_path_pwds; 00189 static CmtSystem::cmt_string_vector m_cmt_path_sources; 00190 static cmt_string m_cmt_root; 00191 static cmt_string m_cmt_home; 00192 static cmt_string m_cmt_user_context; 00193 static cmt_string m_cmt_site; 00194 static cmt_string m_cmt_version; 00195 00196 static int m_current_build_strategy; 00197 00198 static cmt_string m_current_dir; 00199 static cmt_string m_current_package; 00200 static cmt_string m_current_config; 00201 static cmt_string m_current_path; 00202 static cmt_string m_current_prefix; 00203 00204 static AccessMode m_current_access; 00205 static VersionStrategy m_current_strategy; 00206 static CmtDirStyle m_current_style; 00207 00208 static cmt_string m_current_tag; 00209 static cmt_string m_current_target; 00210 static cmt_string m_current_version; 00211 00212 static cmt_string m_extra_tags; 00213 static cmt_string m_configure_error; 00214 00215 static bool m_debug; 00216 00217 static cmt_string m_default_path; 00218 static cmt_string m_filtered_text; 00219 static bool m_quiet; 00220 static bool m_recursive; 00221 static ScopeType m_scope; 00222 static bool m_simulation; 00223 static bool m_standard_macros_done; 00224 }; 00225 00226 #endif