diff --git a/package.json b/package.json index 4c612e8..b792a8f 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,16 @@ -{ - "name": "dub", - "description": "Package manager for D packages", - "copyright": "Copyright 2012 rejectedsoftware e.K.", - "version": "0.0.1", - "authors": [ - "Matthias Dondorff", - "Sönke Ludwig" - ], - "dependencies": { - "vibe-d": "~master" - } +{ + "name": "dub", + "description": "Package manager for D packages", + "copyright": "Copyright 2012 rejectedsoftware e.K.", + "version": "0.0.1", + "authors": [ + "Matthias Dondorff", + "Sönke Ludwig" + ], + "dependencies": { + "vibe-d": "~master" + }, + "versions": [ + "VibeCustomMain" + ] } \ No newline at end of file diff --git a/source/app.d b/source/app.d index ab63f90..d64ae81 100644 --- a/source/app.d +++ b/source/app.d @@ -293,7 +293,7 @@ return -1; } dub.loadPackageFromCwd(); - dub.generateProject(ide); + dub.generateProject(ide, build_platform); logDebug("Project files generated."); break; } diff --git a/source/dub/dub.d b/source/dub/dub.d index e18d329..1083905 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -163,7 +163,7 @@ /// Generate project files for a specified IDE. /// Any existing project files will be overridden. - void generateProject(string ide) { + void generateProject(string ide, BuildPlatform build_platform) { auto generator = createProjectGenerator(ide, m_app, m_packageManager); if(generator is null ) { logError("Unsupported IDE, there is no generator available for '"~ide~"'"); @@ -172,7 +172,7 @@ // Q: update before generating? - generator.generateProject(); + generator.generateProject(build_platform); } /// Creates a zip from the application. diff --git a/source/dub/generators/generator.d b/source/dub/generators/generator.d index 430c1c1..5e27fcd 100644 --- a/source/dub/generators/generator.d +++ b/source/dub/generators/generator.d @@ -8,6 +8,7 @@ module dub.generators.generator; import dub.project; +import dub.package_; import dub.packagemanager; import dub.generators.monod; import dub.generators.visuald; @@ -17,14 +18,14 @@ /// A project generator generates projects :-/ interface ProjectGenerator { - void generateProject(); + void generateProject(BuildPlatform build_platform); } /// Creates a project generator. ProjectGenerator createProjectGenerator(string projectType, Project app, PackageManager mgr) { enforce(app !is null, "app==null, Need an application to work on!"); enforce(mgr !is null, "mgr==null, Need a package manager to work on!"); - switch(projectType) { + switch(projectType) { default: return null; case "MonoD": logTrace("Generating MonoD generator."); diff --git a/source/dub/generators/monod.d b/source/dub/generators/monod.d index 3384a8f..3eada2c 100644 --- a/source/dub/generators/monod.d +++ b/source/dub/generators/monod.d @@ -36,7 +36,7 @@ m_pkgMgr = mgr; } - void generateProject() + 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()); diff --git a/source/dub/generators/visuald.d b/source/dub/generators/visuald.d index 000c33f..3355c3e 100644 --- a/source/dub/generators/visuald.d +++ b/source/dub/generators/visuald.d @@ -38,9 +38,9 @@ m_pkgMgr = mgr; } - void generateProject() { + void generateProject(BuildPlatform buildPlatform) { 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()); + generateProjects(m_app.mainPackage(), buildPlatform); generateSolution(); } @@ -137,11 +137,11 @@ formattedWrite(ret, "\n\t\t%s.%s.%s = %s", to!string(projectUuid), c, s, c); } - void generateProjects(const Package main) { + void generateProjects(const Package main, BuildPlatform buildPlatform) { // TODO: cyclic check - generateProj(main); + generateProj(main, buildPlatform); version(VISUALD_SEPERATE_PROJECT_FILES) { @@ -149,12 +149,12 @@ performOnDependencies(main, (const Package dependency) { if(dependency.name in m_generatedProjects) return; - generateProjects(dependency); + generateProjects(dependency, buildPlatform); } ); } } - void generateProj(const Package pack) { + void generateProj(const Package pack, BuildPlatform buildPlatform) { int i = 0; auto ret = appender!(char[])(); @@ -164,8 +164,8 @@ %s", guid(projName)); // Several configurations (debug, release, unittest) - generateProjectConfiguration(ret, pack, Config.Debug); - generateProjectConfiguration(ret, pack, Config.Release); + generateProjectConfiguration(ret, pack, Config.Debug, buildPlatform); + generateProjectConfiguration(ret, pack, Config.Release, buildPlatform); // generateProjectConfiguration(ret, pack, Config.Unittest); // Add all files @@ -237,14 +237,8 @@ sln.flush(); } - void generateProjectConfiguration(Appender!(char[]) ret, const Package pack, Config type) { - BuildPlatform platform; - platform.platform ~= "windows"; - platform.architecture ~= "x86"; - platform.compiler = "dmd"; - + void generateProjectConfiguration(Appender!(char[]) ret, const Package pack, Config type, BuildPlatform platform) { auto settings = m_app.getBuildSettings(platform, m_app.getDefaultConfiguration(platform)); - string[] getSettings(string setting)(){ return __traits(getMember, settings, setting); } // Specify build configuration name @@ -356,8 +350,8 @@ "); - // Add libraries. - string linkLibs = join(getSettings!"libs"(), " "); + // Add libraries, system libs need to be suffixed by ".lib". + string linkLibs = join(map!("a~\".lib\"")(getSettings!"libs"()), " "); string addLinkFiles = join(getSettings!"files"(), " "); ret.formattedWrite(" %s", linkLibs ~ " " ~ addLinkFiles);