Skip to content

Commit da49de2

Browse files
committed
fix #2618
1 parent adeb545 commit da49de2

File tree

4 files changed

+62
-33
lines changed

4 files changed

+62
-33
lines changed

source/dub/compilers/dmd.d

+16-10
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,13 @@ config /etc/dmd.conf
305305
string getTargetFileName(in BuildSettings settings, in BuildPlatform platform)
306306
const {
307307
import std.conv: text;
308-
assert(settings.targetName.length > 0, "No target name set.");
308+
309+
string targetName()
310+
{
311+
assert(settings.targetName.length > 0, "No target name set.");
312+
return settings.targetName.idup;
313+
}
314+
309315
final switch (settings.targetType) {
310316
case TargetType.autodetect:
311317
assert(false,
@@ -315,23 +321,23 @@ config /etc/dmd.conf
315321
case TargetType.sourceLibrary: return null;
316322
case TargetType.executable:
317323
if (platform.isWindows())
318-
return settings.targetName ~ ".exe";
319-
else return settings.targetName.idup;
324+
return targetName ~ ".exe";
325+
else return targetName;
320326
case TargetType.library:
321327
case TargetType.staticLibrary:
322328
if (platform.isWindows())
323-
return settings.targetName ~ ".lib";
324-
else return "lib" ~ settings.targetName ~ ".a";
329+
return targetName ~ ".lib";
330+
else return "lib" ~ targetName ~ ".a";
325331
case TargetType.dynamicLibrary:
326332
if (platform.isWindows())
327-
return settings.targetName ~ ".dll";
333+
return targetName ~ ".dll";
328334
else if (platform.platform.canFind("darwin"))
329-
return "lib" ~ settings.targetName ~ ".dylib";
330-
else return "lib" ~ settings.targetName ~ ".so";
335+
return "lib" ~ targetName ~ ".dylib";
336+
else return "lib" ~ targetName ~ ".so";
331337
case TargetType.object:
332338
if (platform.isWindows())
333-
return settings.targetName ~ ".obj";
334-
else return settings.targetName ~ ".o";
339+
return targetName ~ ".obj";
340+
else return targetName ~ ".o";
335341
}
336342
}
337343

source/dub/compilers/gdc.d

+20-10
Original file line numberDiff line numberDiff line change
@@ -160,28 +160,38 @@ class GDCCompiler : Compiler {
160160

161161
string getTargetFileName(in BuildSettings settings, in BuildPlatform platform)
162162
const {
163-
assert(settings.targetName.length > 0, "No target name set.");
163+
import std.conv: text;
164+
165+
string targetName()
166+
{
167+
assert(settings.targetName.length > 0, "No target name set.");
168+
return settings.targetName.idup;
169+
}
170+
164171
final switch (settings.targetType) {
165-
case TargetType.autodetect: assert(false, "Configurations must have a concrete target type.");
172+
case TargetType.autodetect:
173+
assert(false,
174+
text("Configurations must have a concrete target type, ", settings.targetName,
175+
" has ", settings.targetType));
166176
case TargetType.none: return null;
167177
case TargetType.sourceLibrary: return null;
168178
case TargetType.executable:
169179
if (platform.isWindows())
170-
return settings.targetName ~ ".exe";
171-
else return settings.targetName.idup;
180+
return targetName ~ ".exe";
181+
else return targetName;
172182
case TargetType.library:
173183
case TargetType.staticLibrary:
174-
return "lib" ~ settings.targetName ~ ".a";
184+
return "lib" ~ targetName ~ ".a";
175185
case TargetType.dynamicLibrary:
176186
if (platform.isWindows())
177-
return settings.targetName ~ ".dll";
187+
return targetName ~ ".dll";
178188
else if (platform.platform.canFind("darwin"))
179-
return "lib" ~ settings.targetName ~ ".dylib";
180-
else return "lib" ~ settings.targetName ~ ".so";
189+
return "lib" ~ targetName ~ ".dylib";
190+
else return "lib" ~ targetName ~ ".so";
181191
case TargetType.object:
182192
if (platform.isWindows())
183-
return settings.targetName ~ ".obj";
184-
else return settings.targetName ~ ".o";
193+
return targetName ~ ".obj";
194+
else return targetName ~ ".o";
185195
}
186196
}
187197

source/dub/compilers/ldc.d

+21-12
Original file line numberDiff line numberDiff line change
@@ -192,34 +192,43 @@ config /etc/ldc2.conf (x86_64-pc-linux-gnu)
192192

193193
string getTargetFileName(in BuildSettings settings, in BuildPlatform platform)
194194
const {
195-
assert(settings.targetName.length > 0, "No target name set.");
195+
import std.conv: text;
196+
197+
string targetName()
198+
{
199+
assert(settings.targetName.length > 0, "No target name set.");
200+
return settings.targetName.idup;
201+
}
196202

197203
const p = platform.platform;
198204
final switch (settings.targetType) {
199-
case TargetType.autodetect: assert(false, "Configurations must have a concrete target type.");
205+
case TargetType.autodetect:
206+
assert(false,
207+
text("Configurations must have a concrete target type, ", settings.targetName,
208+
" has ", settings.targetType));
200209
case TargetType.none: return null;
201210
case TargetType.sourceLibrary: return null;
202211
case TargetType.executable:
203212
if (p.canFind("windows"))
204-
return settings.targetName ~ ".exe";
213+
return targetName ~ ".exe";
205214
else if (p.canFind("wasm"))
206-
return settings.targetName ~ ".wasm";
207-
else return settings.targetName.idup;
215+
return targetName ~ ".wasm";
216+
else return targetName;
208217
case TargetType.library:
209218
case TargetType.staticLibrary:
210219
if (p.canFind("windows") && !p.canFind("mingw"))
211-
return settings.targetName ~ ".lib";
212-
else return "lib" ~ settings.targetName ~ ".a";
220+
return targetName ~ ".lib";
221+
else return "lib" ~ targetName ~ ".a";
213222
case TargetType.dynamicLibrary:
214223
if (p.canFind("windows"))
215-
return settings.targetName ~ ".dll";
224+
return targetName ~ ".dll";
216225
else if (p.canFind("darwin"))
217-
return "lib" ~ settings.targetName ~ ".dylib";
218-
else return "lib" ~ settings.targetName ~ ".so";
226+
return "lib" ~ targetName ~ ".dylib";
227+
else return "lib" ~ targetName ~ ".so";
219228
case TargetType.object:
220229
if (p.canFind("windows"))
221-
return settings.targetName ~ ".obj";
222-
else return settings.targetName ~ ".o";
230+
return targetName ~ ".obj";
231+
else return targetName ~ ".o";
223232
}
224233
}
225234

source/dub/generators/build.d

+5-1
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,11 @@ private NativePath getMainSourceFile(in Package prj)
708708

709709
private NativePath getTargetPath(const scope ref BuildSettings bs, const scope ref GeneratorSettings settings)
710710
{
711-
return NativePath(bs.targetPath) ~ settings.compiler.getTargetFileName(bs, settings.platform);
711+
auto targetFileName = settings.compiler.getTargetFileName(bs, settings.platform);
712+
713+
if (!targetFileName.length)
714+
return NativePath.init;
715+
return NativePath(bs.targetPath) ~ targetFileName;
712716
}
713717

714718
private string shrinkPath(NativePath path, NativePath base)

0 commit comments

Comments
 (0)