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