diff --git a/source/dub/generators/monod.d b/source/dub/generators/monod.d
index 3eada2c..dbfa02a 100644
--- a/source/dub/generators/monod.d
+++ b/source/dub/generators/monod.d
@@ -28,22 +28,24 @@
PackageManager m_pkgMgr;
string[string] m_projectUuids;
bool m_singleProject = true;
+ Config[] m_allConfigs;
}
this(Project app, PackageManager mgr)
{
m_app = app;
m_pkgMgr = mgr;
+ m_allConfigs ~= Config("Debug", "AnyCPU", "Any CPU");
}
void generateProject(BuildPlatform build_platform)
{
logTrace("About to generate projects for %s, with %s direct dependencies.", m_app.mainPackage().name, to!string(m_app.mainPackage().dependencies().length));
- /+generateProjects(m_app.mainPackage());
- generateSolution();+/
+ generateProjects(m_app.mainPackage());
+ generateSolution();
}
- /+private void generateSolution()
+ private void generateSolution()
{
auto sln = openFile(m_app.mainPackage().name ~ ".sln", FileMode.CreateTrunc);
scope(exit) sln.close();
@@ -56,27 +58,27 @@
sln.put("Microsoft Visual Studio Solution File, Format Version 11.00\n");
sln.put("# Visual Studio 2010\n");
- generateSolutionEntry(sln, main);
- if( m_singleProject ) enforce(main == m_app.mainPackage());
- else performOnDependencies(main, (const Package pack) { generateSolutionEntries(sln, pack); } );
+ generateSolutionEntry(sln, m_app.mainPackage);
+ if( !m_singleProject )
+ performOnDependencies(m_app.mainPackage, pack => generateSolutionEntry(sln, pack));
sln.put("Global\n");
// configuration platforms
sln.put("\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n");
- foreach(config; allconfigs)
- sln.formattedWrite("\t\t%s|%s = %s|%s\n", config.configName, config.plaformName);
+ foreach(config; m_allConfigs)
+ sln.formattedWrite("\t\t%s|%s = %s|%s\n", config.configName, config.platformName2,
+ config.configName, config.platformName2);
sln.put("\tEndGlobalSection\n");
// configuration platforms per project
sln.put("\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n");
- generateSolutionConfig(sln, m_app.mainPackage());
- auto projectUuid = guid(pack.name());
- foreach(config; allconfigs)
+ auto projectUuid = guid(m_app.mainPackage.name);
+ foreach(config; m_allConfigs)
foreach(s; ["ActiveCfg", "Build.0"])
- sln.formattedWrite("\n\t\t%s.%s|%s.%s = %s|%s",
- projectUuid, config.configName, config.platformName, s,
- config.configName, config.platformName);
+ sln.formattedWrite("\t\t%s.%s|%s.%s = %s|%s\n",
+ projectUuid, config.configName, config.platformName2, s,
+ config.configName, config.platformName2);
// TODO: for all dependencies
sln.put("\tEndGlobalSection\n");
@@ -97,30 +99,27 @@
{
auto projUuid = generateUUID();
auto projName = pack.name;
- auto projPath = pack.name ~ ".visualdproj";
+ auto projPath = pack.name ~ ".dproj";
auto projectUuid = guid(projName);
// Write project header, like so
// Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "derelict", "..\inbase\source\derelict.visualdproj", "{905EF5DA-649E-45F9-9C15-6630AA815ACB}"
- ret.formattedWrite("\nProject(\"%s\") = \"%s\", \"%s\", \"%s\"",
+ ret.formattedWrite("Project(\"%s\") = \"%s\", \"%s\", \"%s\"\n",
projUuid, projName, projPath, projectUuid);
if( !m_singleProject ){
if(pack.dependencies.length > 0) {
- ret.formattedWrite("
- ProjectSection(ProjectDependencies) = postProject");
+ ret.put(" ProjectSection(ProjectDependencies) = postProject\n");
foreach(id, dependency; pack.dependencies) {
// TODO: clarify what "uuid = uuid" should mean
auto uuid = guid(id);
- ret.formattedWrite("
- %s = %s", uuid, uuid);
+ ret.formattedWrite(" %s = %s\n", uuid, uuid);
}
- ret.formattedWrite("
- EndProjectSection");
+ ret.put(" EndProjectSection\n");
}
}
-
- ret.formattedWrite("\nEndProject");
+
+ ret.put("EndProject\n");
}
private void generateProjects(in Package pack)
@@ -136,6 +135,7 @@
if( !m_singleProject )
performOnDependencies(p, &generateRec);
}
+ generateRec(pack);
}
private void generateProject(in Package pack) {
@@ -149,16 +149,37 @@
auto projName = pack.name;
- void generateProperties(Configuration config)
+ sln.put(" \n");
+ sln.put(" Debug\n");
+ sln.put(" AnyCPU\n");
+ sln.put(" 10.0.0\n");
+ sln.put(" 2.0\n");
+ sln.formattedWrite(" %s\n", guid(pack.name));
+ sln.put(" True\n");
+ sln.put(" True\n");
+ sln.put(" True\n");
+ sln.put(" DMD2\n");
+ sln.put(" \n");
+
+ void generateProperties(Config config)
{
- sln.formattedWrite("\t Condition=\" '$(Configuration)|$(Platform)' == '%s|%s' \"\n",
+ sln.formattedWrite(" \n",
config.configName, config.platformName);
- // TODO!
- sln.put("\n\n");
+ sln.put(" True\n");
+ sln.formattedWrite(" bin/%s\n", config.configName);
+ sln.put(" True\n");
+ sln.put(" Executable\n");
+ sln.formattedWrite(" %s\n", pack.name);
+ sln.put(" False\n");
+ sln.formattedWrite(" obj/%s\n", config.configName);
+ sln.put(" 0\n");
+ sln.put(" \n");
+ sln.put(" \n");
+ sln.put(" \n");
}
- foreach(config; allconfigs)
+ foreach(config; m_allConfigs)
generateProperties(config);
@@ -169,18 +190,16 @@
visited[p] = true;
foreach( s; p.sources )
- sln.formattedWrite("\t\t\n", s);
-
- if( m_singleProject ){
- foreach( dep; p.dependencies )
- generateSources(dep);
- }
+ sln.formattedWrite(" \n", (p.path.relativeTo(pack.path) ~ s).toNativeString());
}
- sln.put("\t\n");
+ sln.put(" \n");
generateSources(pack);
- sln.put("\t\n");
+ if( m_singleProject )
+ foreach(dep; m_app.installedPackages)
+ generateSources(dep);
+ sln.put(" \n");
sln.put("");
}
@@ -208,5 +227,11 @@
if(projectName !in m_projectUuids)
m_projectUuids[projectName] = generateUUID();
return m_projectUuids[projectName];
- }+/
+ }
+}
+
+struct Config {
+ string configName;
+ string platformName;
+ string platformName2;
}
\ No newline at end of file