diff --git a/source/dub/compilers/dmd.d b/source/dub/compilers/dmd.d index 65ee2f4..7576230 100644 --- a/source/dub/compilers/dmd.d +++ b/source/dub/compilers/dmd.d @@ -176,25 +176,25 @@ BuildSettings settings; auto compiler = new DMDCompiler; auto bp = compiler.determinePlatform(settings, "dmd", "x86"); - assert(bp.platform.canFind("windows")); + assert(bp.isWindows()); assert(bp.architecture.canFind("x86")); assert(bp.architecture.canFind("x86_omf")); assert(!bp.architecture.canFind("x86_mscoff")); settings = BuildSettings.init; bp = compiler.determinePlatform(settings, "dmd", "x86_omf"); - assert(bp.platform.canFind("windows")); + assert(bp.isWindows()); assert(bp.architecture.canFind("x86")); assert(bp.architecture.canFind("x86_omf")); assert(!bp.architecture.canFind("x86_mscoff")); settings = BuildSettings.init; bp = compiler.determinePlatform(settings, "dmd", "x86_mscoff"); - assert(bp.platform.canFind("windows")); + assert(bp.isWindows()); assert(bp.architecture.canFind("x86")); assert(!bp.architecture.canFind("x86_omf")); assert(bp.architecture.canFind("x86_mscoff")); settings = BuildSettings.init; bp = compiler.determinePlatform(settings, "dmd", "x86_64"); - assert(bp.platform.canFind("windows")); + assert(bp.isWindows()); assert(bp.architecture.canFind("x86_64")); assert(!bp.architecture.canFind("x86")); assert(!bp.architecture.canFind("x86_omf")); @@ -254,7 +254,7 @@ if (!(fields & BuildSetting.libs)) { resolveLibs(settings, platform); - if (platform.platform.canFind("windows")) + if (platform.isWindows()) settings.addSourceFiles(settings.libs.map!(l => l~".lib")().array()); else settings.addLFlags(settings.libs.map!(l => "-l"~l)().array()); @@ -305,22 +305,22 @@ case TargetType.none: return null; case TargetType.sourceLibrary: return null; case TargetType.executable: - if (platform.platform.canFind("windows")) + if (platform.isWindows()) return settings.targetName ~ ".exe"; else return settings.targetName.idup; case TargetType.library: case TargetType.staticLibrary: - if (platform.platform.canFind("windows")) + if (platform.isWindows()) return settings.targetName ~ ".lib"; else return "lib" ~ settings.targetName ~ ".a"; case TargetType.dynamicLibrary: - if (platform.platform.canFind("windows")) + if (platform.isWindows()) return settings.targetName ~ ".dll"; else if (platform.platform.canFind("darwin")) return "lib" ~ settings.targetName ~ ".dylib"; else return "lib" ~ settings.targetName ~ ".so"; case TargetType.object: - if (platform.platform.canFind("windows")) + if (platform.isWindows()) return settings.targetName ~ ".obj"; else return settings.targetName ~ ".o"; } @@ -338,7 +338,7 @@ settings.addDFlags("-lib"); break; case TargetType.dynamicLibrary: - if (platform.compiler != "dmd" || platform.platform.canFind("windows") || platform.platform.canFind("osx")) + if (platform.compiler != "dmd" || platform.isWindows() || platform.platform.canFind("osx")) settings.addDFlags("-shared"); else settings.prependDFlags("-shared", "-defaultlib=libphobos2.so"); diff --git a/source/dub/compilers/gdc.d b/source/dub/compilers/gdc.d index 04ed9dd..bce6259 100644 --- a/source/dub/compilers/gdc.d +++ b/source/dub/compilers/gdc.d @@ -160,20 +160,20 @@ case TargetType.none: return null; case TargetType.sourceLibrary: return null; case TargetType.executable: - if (platform.platform.canFind("windows")) + if (platform.isWindows()) return settings.targetName ~ ".exe"; else return settings.targetName.idup; case TargetType.library: case TargetType.staticLibrary: return "lib" ~ settings.targetName ~ ".a"; case TargetType.dynamicLibrary: - if (platform.platform.canFind("windows")) + if (platform.isWindows()) return settings.targetName ~ ".dll"; else if (platform.platform.canFind("darwin")) return "lib" ~ settings.targetName ~ ".dylib"; else return "lib" ~ settings.targetName ~ ".so"; case TargetType.object: - if (platform.platform.canFind("windows")) + if (platform.isWindows()) return settings.targetName ~ ".obj"; else return settings.targetName ~ ".o"; } diff --git a/source/dub/compilers/utils.d b/source/dub/compilers/utils.d index f1e74b6..959024e 100644 --- a/source/dub/compilers/utils.d +++ b/source/dub/compilers/utils.d @@ -47,9 +47,9 @@ default: return false; case ".lib", ".obj", ".res", ".def": - return platform.platform.canFind("windows"); + return platform.isWindows(); case ".a", ".o", ".so", ".dylib": - return !platform.platform.canFind("windows"); + return !platform.isWindows(); } } @@ -85,9 +85,9 @@ default: return false; case ".lib", ".pdb", ".dll", ".exp": - return platform.platform.canFind("windows"); + return platform.isWindows(); case ".so", ".dylib": - return !platform.platform.canFind("windows"); + return !platform.isWindows(); } } @@ -133,7 +133,7 @@ if (settings.targetType == TargetType.library || settings.targetType == TargetType.staticLibrary) { logDiagnostic("Ignoring all import libraries for static library build."); settings.libs = null; - if (platform.platform.canFind("windows")) + if (platform.isWindows()) settings.sourceFiles = settings.sourceFiles.filter!(f => !f.endsWith(".lib")).array; } diff --git a/source/dub/generators/build.d b/source/dub/generators/build.d index 448553c..4ba7331 100644 --- a/source/dub/generators/build.d +++ b/source/dub/generators/build.d @@ -29,7 +29,7 @@ string getObjSuffix(const scope ref BuildPlatform platform) { - return platform.platform.canFind("windows") ? ".obj" : ".o"; + return platform.isWindows() ? ".obj" : ".o"; } string computeBuildName(string config, GeneratorSettings settings, const string[][] hashing...) @@ -107,7 +107,7 @@ if (bs.targetType != TargetType.staticLibrary && !(bs.options & BuildOption.syntaxOnly) && isLinkerFile(settings.platform, location)) { bs.addSourceFiles(location); - } else if (settings.platform.platform.canFind("windows") && location.endsWith(".dll")) { + } else if (settings.platform.isWindows() && location.endsWith(".dll")) { // switch from linking against the dll to against the import library, // and copy any dependent build artifacts if found too @@ -408,7 +408,7 @@ // Windows: add .pdb, .lib and .exp if found const tt = buildsettings.targetType; if ((tt == TargetType.executable || tt == TargetType.dynamicLibrary) && - settings.platform.platform.canFind("windows")) + settings.platform.isWindows()) { import std.path : setExtension; const pdbFilename = filenames[0].setExtension(".pdb"); diff --git a/source/dub/platform.d b/source/dub/platform.d index 39e5557..face9ca 100644 --- a/source/dub/platform.d +++ b/source/dub/platform.d @@ -266,6 +266,20 @@ bp.frontendVersion = 2067; assert(bp.frontendVersionString == "2.067"); } + + /// Checks to see if platform field contains windows + bool isWindows() const { + import std.algorithm : canFind; + return this.platform.canFind("windows"); + } + /// + unittest { + BuildPlatform bp; + bp.platform = ["windows"]; + assert(bp.isWindows); + bp.platform = ["posix"]; + assert(!bp.isWindows); + } }