diff --git a/source/app.d b/source/app.d index 6f67a61..9ae9af6 100644 --- a/source/app.d +++ b/source/app.d @@ -324,7 +324,7 @@ remove-path Removes a package search path list-installed Prints a list of all installed packages generate Generates project files using the specified generator: - visuald, mono-d, build, rdmd + visuald, visuald-combined, mono-d, build, rdmd describe Prints a JSON description of the project and its dependencies diff --git a/source/dub/generators/generator.d b/source/dub/generators/generator.d index 402a01e..f7f87d6 100644 --- a/source/dub/generators/generator.d +++ b/source/dub/generators/generator.d @@ -67,9 +67,12 @@ case "mono-d": logDebug("Creating MonoD generator."); return new MonoDGenerator(app, mgr); - case "visuald": + case "visuald": logDebug("Creating VisualD generator."); - return new VisualDGenerator(app, mgr); + return new VisualDGenerator(app, mgr, false); + case "visuald-combined": + logDebug("Creating VisualD generator (combined project)."); + return new VisualDGenerator(app, mgr, true); } } diff --git a/source/dub/generators/visuald.d b/source/dub/generators/visuald.d index fc6a9eb..7d7dc9f 100644 --- a/source/dub/generators/visuald.d +++ b/source/dub/generators/visuald.d @@ -24,9 +24,6 @@ import std.exception; -version = VISUALD_SEPERATE_PROJECT_FILES; -//version = VISUALD_SINGLE_PROJECT_FILE; - // Dubbing is developing dub... //version = DUBBING; @@ -38,9 +35,12 @@ Project m_app; PackageManager m_pkgMgr; string[string] m_projectUuids; + bool m_combinedProject; } - this(Project app, PackageManager mgr) { + this(Project app, PackageManager mgr, bool combined_project) + { + m_combinedProject = combined_project; m_app = app; m_pkgMgr = mgr; } @@ -77,8 +77,7 @@ # Visual Studio 2010"); generateSolutionEntry(ret, m_app.mainPackage, settings); - version(VISUALD_SEPERATE_PROJECT_FILES) - { + if (!m_combinedProject) { performOnDependencies(m_app.mainPackage, (pack){ generateSolutionEntry(ret, pack, settings); }); @@ -124,7 +123,7 @@ ret.formattedWrite("\nProject(\"%s\") = \"%s\", \"%s\", \"%s\"", projUuid, projName, projPath, projectUuid); - version(VISUALD_SEPERATE_PROJECT_FILES) { + if (!m_combinedProject) { void addDepsRec(in Package p) { foreach(id, dependency; p.dependencies) { @@ -167,8 +166,7 @@ generateProj(main, settings); - version(VISUALD_SEPERATE_PROJECT_FILES) - { + if (!m_combinedProject) { bool[string] generatedProjects; generatedProjects[main.name] = true; performOnDependencies(main, (const Package dependency) { @@ -205,14 +203,17 @@ generateProjectConfiguration(ret, pack, Config.Unittest, settings); // Add all files - version(VISUALD_SINGLE_PROJECT_FILE){ - auto files = settings.buildSettings; - + auto configs = m_app.getPackageConfigs(settings.platform, settings.config); + auto files = pack.getBuildSettings(settings.platform, configs[pack.name]); + bool[SourceFile] sourceFiles; + if (m_combinedProject) { // add all package.json files to the project - foreach(prj; m_app.getTopologicalPackageList()) + performOnDependencies(pack, (prj) { files.sourceFiles ~= prj.packageInfoFile.toNativeString(); + auto pfiles = prj.getBuildSettings(settings.platform, configs[prj.name]); + files.sourceFiles ~= pfiles.sourceFiles.map!(f => (prj.path ~ f).toNativeString()).array; + }); - bool[SourceFile] sourceFiles; foreach(s; files.sourceFiles){ auto sp = Path(s); if( !sp.absolute ) sp = m_app.mainPackage.path ~ sp; @@ -222,15 +223,9 @@ sf.structurePath = Path(getPackageFileName(pack)) ~ sp.relativeTo(pack.path); sourceFiles[sf] = true; } - } - - version(VISUALD_SEPERATE_PROJECT_FILES){ - auto configs = m_app.getPackageConfigs(settings.platform, settings.config); - auto files = pack.getBuildSettings(settings.platform, configs[pack.name]); - + } else { files.sourceFiles ~= pack.packageInfoFile.toNativeString(); - bool[SourceFile] sourceFiles; foreach(s; files.sourceFiles){ auto sp = Path(s); if( !sp.absolute ) sp = pack.path ~ sp; @@ -397,10 +392,9 @@ 0 0 2 - 0 - 0 - 0 -"); + 0\n"); + ret.formattedWrite(" %s\n", settings.compiler.name == "ldc" ? 2 : settings.compiler.name == "gdc" ? 1 : 0); + ret.formattedWrite(" 0\n"); ret.formattedWrite(" %s\n", bin_path.toNativeString()); ret.formattedWrite(" .dub/obj/%s/%s\n", to!string(type), intersubdir); ret.formattedWrite("%s",