38 transform(result.begin(), result.end(), result.begin(), tolower);
43 int wmain(
int argc,
const wchar_t **argv_wide)
45 int main(
int argc,
const char **argv)
54 if(argv==
nullptr || argc<1)
56 std::cerr <<
"failed to determine base name\n";
62 std::string base_name=
68 if(base_name==
"goto-link" || base_name==
"link" ||
69 base_name==
"goto-cl" || base_name==
"cl")
75 return ms_cl_mode.
main(argc, argv);
77 else if(base_name==
"goto-cw" ||
78 base_name==
"goto-cw-link")
83 cw_modet cw_mode(cmdline, base_name);
84 return cw_mode.
main(argc, argv);
86 else if(base_name==
"goto-armcc" ||
87 base_name==
"goto-armlink")
92 return armcc_mode.
main(argc, argv);
96 else if(base_name==
"goto-clang" ||
97 base_name.find(
"goto-gcc")!=std::string::npos)
103 gcc_modet gcc_mode(cmdline, base_name,
true);
104 return gcc_mode.
main(argc, argv);
106 else if(base_name.find(
"goto-ld")!=std::string::npos)
110 ld_modet ld_mode(cmdline, base_name);
111 return ld_mode.
main(argc, argv);
113 else if(base_name.find(
"goto-bcc")!=std::string::npos)
119 gcc_modet gcc_mode(cmdline, base_name,
true);
120 return gcc_mode.
main(argc, argv);
122 else if(base_name.find(
"goto-as86")!=std::string::npos)
127 as_modet as_mode(cmdline, base_name,
false);
128 return as_mode.
main(argc, argv);
130 else if(base_name.find(
"goto-as")!=std::string::npos)
134 as_modet as_mode(cmdline, base_name,
true);
135 return as_mode.
main(argc, argv);
141 gcc_modet gcc_mode(cmdline, base_name,
false);
142 return gcc_mode.
main(argc, argv);
std::string narrow(const wchar_t *s)
A special command line object for Bruce's C Compiler Author: Michael Tautschnig Date: July 2016...
A special command line object for the gcc-like options.
virtual int main(int argc, const char **argv)
starts the compiler
std::string to_lower_string(const std::string &s)
int main(int argc, const char **argv)
Base class for command line interpretation.
Base class for command line interpretation.
A special command line object for the ld-like options.
std::string get_base_name(const std::string &in, bool strip_suffix)
cleans a filename from path and extension
A special command line object for GNU Assembler Author: Michael Tautschnig Date: July 2016...
std::vector< std::string > narrow_argv(int argc, const wchar_t **argv_wide)
Base class for command line interpretation for CL.
std::vector< const char * > to_c_str_array(It b, It e)
A special command line object for the gcc-like options.
Base class for command line interpretation.
A special command line object for as86 (of Bruce's C Compiler) Author: Michael Tautschnig Date: July ...
A special command line object to mimic ARM's armcc.