CBMC
Loading...
Searching...
No Matches
ms_link_mode.cpp
Go to the documentation of this file.
1/*******************************************************************\
2
3Module: Visual Studio Link Mode
4
5Author: Daniel Kroening
6
7\*******************************************************************/
8
11
12#include "ms_link_mode.h"
13
14#include <iostream>
15
16#include <util/config.h>
17#include <util/get_base_name.h>
18
19#include "compile.h"
20#include "goto_cc_cmdline.h"
21
26
29{
30 if(cmdline.isset("help"))
31 {
32 help();
33 return 0;
34 }
35
39
41
42 // determine actions to be undertaken
44
45 // get configuration
47
48 compiler.object_file_extension = "obj";
49
50 if(cmdline.isset("LIBPATH"))
51 compiler.library_paths = cmdline.get_values("LIBPATH");
52 // Don't add the system paths!
53
54 if(cmdline.isset("OUT"))
55 {
56 // This must be a file, not a directory.
57 // If the option is given multiple times, the last instance wins.
58 const auto &values = cmdline.get_values("OUT");
59 if(!values.empty())
60 compiler.output_file_executable = values.back();
61 }
62 else
63 {
64 // The first input file is used to determine the default
65 // name of the executable.
66 if(!cmdline.args.empty())
67 compiler.output_file_executable = get_base_name(cmdline.args[0], true)+".exe";
68 }
69
70 // We now iterate over any input files
71
72 for(const auto &arg : cmdline.parsed_argv)
73 if(arg.is_infile_name)
74 compiler.add_input_file(arg.arg);
75
76 // do all the rest
77 if(compiler.doit())
78 return 1;
79
80 return 0;
81}
82
85{
86 std::cout << "goto-link understands the options of "
87 << "link plus the following.\n\n";
88}
configt config
Definition config.cpp:25
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:562
void print_warnings_as_errors(bool yes)
With yes set to true, prefix warnings with an error message.
std::string get_value(char option) const
Definition cmdline.cpp:48
virtual bool isset(char option) const
Definition cmdline.cpp:30
argst args
Definition cmdline.h:154
const std::list< std::string > & get_values(const std::string &option) const
Definition cmdline.cpp:119
@ LINK_LIBRARY
Definition compile.h:41
bool set(const cmdlinet &cmdline)
Definition config.cpp:863
parsed_argvt parsed_argv
goto_cc_cmdlinet & cmdline
void help()
display command line help
static unsigned eval_verbosity(const std::string &user_input, const message_levelt default_verbosity, message_handlert &dest)
Parse a (user-)provided string as a verbosity level and set it as the verbosity of dest.
Definition message.cpp:105
@ M_ERROR
Definition message.h:169
Compile and link source and object files.
std::string get_base_name(const std::string &in, bool strip_suffix)
cleans a filename from path and extension
Command line interpretation for goto-cc.