summaryrefslogtreecommitdiff
path: root/tools/minicargo/build.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/minicargo/build.cpp')
-rw-r--r--tools/minicargo/build.cpp28
1 files changed, 22 insertions, 6 deletions
diff --git a/tools/minicargo/build.cpp b/tools/minicargo/build.cpp
index 2bf32ac8..145a1c1e 100644
--- a/tools/minicargo/build.cpp
+++ b/tools/minicargo/build.cpp
@@ -612,19 +612,35 @@ Builder::Builder(BuildOptions opts, size_t total_targets):
switch(target.m_type)
{
case PackageTarget::Type::Lib:
- if(crate_type) {
- *crate_type = target.m_is_proc_macro ? "proc-macro" : "rlib";
+ switch( target.m_crate_types.size() > 0
+ ? target.m_crate_types.front()
+ : (target.m_is_proc_macro
+ ? PackageTarget::CrateType::proc_macro
+ : PackageTarget::CrateType::rlib
+ )
+ )
+ {
+ case PackageTarget::CrateType::proc_macro:
+ if(crate_type) *crate_type = "proc-macro";
+ outfile /= ::format("lib", target.m_name, crate_suffix, ".hir"); // TODO: .rlib instead
+ break;
+ case PackageTarget::CrateType::dylib:
+ //if(crate_type) *crate_type = "dylib";
+ //outfile /= ::format("lib", target.m_name, crate_suffix, DLLSUF);
+ //break;
+ case PackageTarget::CrateType::rlib:
+ if(crate_type) *crate_type = "rlib";
+ outfile /= ::format("lib", target.m_name, crate_suffix, ".hir"); // TODO: .rlib instead
+ break;
+ default:
+ throw "";
}
- // TODO: Support dylibs (e.g. if target.m_crate_types is just dylib,
- // emit a dylib)
- outfile /= ::format("lib", target.m_name, crate_suffix, ".hir");
break;
case PackageTarget::Type::Bin:
if(crate_type)
*crate_type = "bin";
outfile /= ::format(target.m_name, EXESUF);
break;
- break;
default:
throw ::std::runtime_error("Unknown target type being built");
}