Infer output names from first object file alone (ignore root module)

This commit is contained in:
Martin 2016-08-31 23:43:49 +02:00
parent 6c03a3d725
commit d85986be3d

View file

@ -59,17 +59,10 @@ static std::string getOutputName(bool const sharedLib) {
if (global.params.exefile) if (global.params.exefile)
return global.params.exefile; return global.params.exefile;
// Output name is inferred. // Infer output name from first object file.
std::string result; std::string result = global.params.objfiles->dim
? FileName::removeExt((*global.params.objfiles)[0])
// try root module name : "a.out";
if (Module::rootModule) {
result = Module::rootModule->toChars();
} else if (global.params.objfiles->dim) {
result = FileName::removeExt((*global.params.objfiles)[0]);
} else {
result = "a.out";
}
const char *extension = nullptr; const char *extension = nullptr;
if (sharedLib) { if (sharedLib) {
@ -716,15 +709,10 @@ int createStaticLibrary() {
std::string libName; std::string libName;
if (global.params.libname) { // explicit if (global.params.libname) { // explicit
libName = global.params.libname; libName = global.params.libname;
} else { // inferred } else { // infer from first object file
// try root module name libName = global.params.objfiles->dim
if (Module::rootModule) { ? FileName::removeExt((*global.params.objfiles)[0])
libName = Module::rootModule->toChars(); : "a.out";
} else if (global.params.objfiles->dim) {
libName = FileName::removeExt((*global.params.objfiles)[0]);
} else {
libName = "a.out";
}
libName.push_back('.'); libName.push_back('.');
libName.append(global.lib_ext); libName.append(global.lib_ext);
} }