diff --git a/source/dub/dub.d b/source/dub/dub.d index fdd989f..59794b7 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -382,10 +382,12 @@ auto ddox_dub = new Dub(m_packageSuppliers); ddox_dub.loadPackage(ddox_pack.path); + auto compiler_binary = "dmd"; + GeneratorSettings settings; settings.config = "application"; - settings.compiler = getCompiler(settings.platform.compilerBinary); - settings.platform = settings.compiler.determinePlatform(settings.buildSettings, settings.platform.compilerBinary); + settings.compiler = getCompiler(compiler_binary); + settings.platform = settings.compiler.determinePlatform(settings.buildSettings, compiler_binary); settings.buildType = "debug"; ddox_dub.generateProject("build", settings); diff --git a/source/dub/generators/build.d b/source/dub/generators/build.d index 1bddbcf..d92e0bf 100644 --- a/source/dub/generators/build.d +++ b/source/dub/generators/build.d @@ -51,6 +51,10 @@ auto buildsettings = settings.buildSettings; m_project.addBuildSettings(buildsettings, settings.platform, settings.config, null, settings.buildType == "ddox"); m_project.addBuildTypeSettings(buildsettings, settings.platform, settings.buildType); + bool generate_binary = !(buildsettings.options & BuildOptions.syntaxOnly); + // determine the absolute target path + if (!Path(buildsettings.targetPath).absolute) + buildsettings.targetPath = (m_project.mainPackage.path ~ Path(buildsettings.targetPath)).toNativeString(); // make all paths relative to shrink the command line string makeRelative(string path) { auto p = Path(path); if (p.absolute) p = p.relativeTo(cwd); return p.toNativeString(); } @@ -60,7 +64,7 @@ // perform the actual build if (this.useRDMD) performRDMDBuild(settings, buildsettings); - else if (settings.direct) performDirectBuild(settings, buildsettings); + else if (settings.direct || !generate_binary) performDirectBuild(settings, buildsettings); else performCachedBuild(settings, buildsettings); // run post-build commands @@ -70,7 +74,7 @@ } // run the generated executable - if (!(buildsettings.options & BuildOptions.syntaxOnly) && settings.run) { + if (generate_binary && settings.run) { auto exe_file_path = Path(buildsettings.targetPath) ~ getTargetFileName(buildsettings, settings.platform); runTarget(exe_file_path, buildsettings, settings.runArgs); } @@ -195,10 +199,6 @@ prepareGeneration(buildsettings); - // determine the absolute target path - if (!Path(buildsettings.targetPath).absolute) - buildsettings.targetPath = (m_project.mainPackage.path ~ Path(buildsettings.targetPath)).toNativeString(); - // make all target/import paths relative string makeRelative(string path) { auto p = Path(path); if (p.absolute) p = p.relativeTo(cwd); return p.toNativeString(); } buildsettings.targetPath = makeRelative(buildsettings.targetPath);