Add a new option to gather extern crates location.
gcc/rust/ChangeLog:
* lang.opt: Add frust-extern option.
* rust-session-manager.cc (Session::handle_extern_option): Add
frust-extern option handler.
* rust-session-manager.h (struct Session): Add an unordered map
to store library name and locations.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Rust Joined RejectNegative
-frust-crate=<name> Set the crate name for the compilation
+frust-extern=
+Rust RejectNegative Joined
+-frust-extern= Specify where an external library is located
+
frust-debug
Rust Var(flag_rust_debug)
Dump various Rust front end internals.
}
break;
+ case OPT_frust_extern_: {
+ std::string input (arg);
+ ret = handle_extern_option (input);
+ }
+ break;
case OPT_frust_crate_:
// set the crate name
if (arg != nullptr)
return ret;
}
+bool
+Session::handle_extern_option (std::string &input)
+{
+ auto pos = input.find ('=');
+ if (std::string::npos == pos)
+ return false;
+
+ std::string libname = input.substr (0, pos);
+ std::string path = input.substr (pos + 1);
+
+ extern_crates.insert ({libname, path});
+ return true;
+}
+
bool
Session::handle_cfg_option (std::string &input)
{
/* This should really be in a per-crate storage area but it is wiped with
* every file so eh. */
std::string injected_crate_name;
+ std::map<std::string, std::string> extern_crates;
/* extra files get included during late stages of compilation (e.g. macro
* expansion) */
// handle cfg_option
bool handle_cfg_option (std::string &data);
+
+ bool handle_extern_option (std::string &data);
};
} // namespace Rust