diff --git a/source/dub/generators/build.d b/source/dub/generators/build.d index 594744b..9ddb93f 100644 --- a/source/dub/generators/build.d +++ b/source/dub/generators/build.d @@ -127,7 +127,7 @@ // run post-build commands if (!cached && buildsettings.postBuildCommands.length) { logInfo("Running post-build commands..."); - runBuildCommands(buildsettings.postBuildCommands, pack, settings, buildsettings); + runBuildCommands(buildsettings.postBuildCommands, pack, m_project, settings, buildsettings); } return cached; @@ -159,7 +159,7 @@ if( buildsettings.preBuildCommands.length ){ logInfo("Running pre-build commands..."); - runBuildCommands(buildsettings.preBuildCommands, pack, settings, buildsettings); + runBuildCommands(buildsettings.preBuildCommands, pack, m_project, settings, buildsettings); } // override target path @@ -281,7 +281,7 @@ if( buildsettings.preBuildCommands.length ){ logInfo("Running pre-build commands..."); - runBuildCommands(buildsettings.preBuildCommands, pack, settings, buildsettings); + runBuildCommands(buildsettings.preBuildCommands, pack, m_project, settings, buildsettings); } buildWithCompiler(settings, buildsettings); diff --git a/source/dub/generators/generator.d b/source/dub/generators/generator.d index 1d53b4e..cd28abe 100644 --- a/source/dub/generators/generator.d +++ b/source/dub/generators/generator.d @@ -93,7 +93,7 @@ foreach (pack; m_project.getTopologicalPackageList(true, null, configs)) { BuildSettings buildsettings; buildsettings.processVars(m_project, pack, pack.getBuildSettings(settings.platform, configs[pack.name]), true); - prepareGeneration(pack, settings, buildsettings); + prepareGeneration(pack, m_project, settings, buildsettings); } string[] mainfiles; @@ -109,7 +109,7 @@ BuildSettings buildsettings; buildsettings.processVars(m_project, pack, pack.getBuildSettings(settings.platform, configs[pack.name]), true); bool generate_binary = !(buildsettings.options & BuildOption.syntaxOnly); - finalizeGeneration(pack, settings, buildsettings, Path(bs.targetPath), generate_binary); + finalizeGeneration(pack, m_project, settings, buildsettings, Path(bs.targetPath), generate_binary); } performPostGenerateActions(settings, targets); @@ -332,23 +332,24 @@ /** Runs pre-build commands and performs other required setup before project files are generated. */ -private void prepareGeneration(in Package pack, in GeneratorSettings settings, in BuildSettings buildsettings) +private void prepareGeneration(in Package pack, in Project proj, in GeneratorSettings settings, + in BuildSettings buildsettings) { if (buildsettings.preGenerateCommands.length) { logInfo("Running pre-generate commands for %s...", pack.name); - runBuildCommands(buildsettings.preGenerateCommands, pack, settings, buildsettings); + runBuildCommands(buildsettings.preGenerateCommands, pack, proj, settings, buildsettings); } } /** Runs post-build commands and copies required files to the binary directory. */ -private void finalizeGeneration(in Package pack, in GeneratorSettings settings, in BuildSettings buildsettings, - Path target_path, bool generate_binary) +private void finalizeGeneration(in Package pack, in Project proj, in GeneratorSettings settings, + in BuildSettings buildsettings, Path target_path, bool generate_binary) { if (buildsettings.postGenerateCommands.length) { logInfo("Running post-generate commands for %s...", pack.name); - runBuildCommands(buildsettings.postGenerateCommands, pack, settings, buildsettings); + runBuildCommands(buildsettings.postGenerateCommands, pack, proj, settings, buildsettings); } if (generate_binary) { @@ -440,7 +441,8 @@ } } -void runBuildCommands(in string[] commands, in Package pack, in GeneratorSettings settings, in BuildSettings build_settings) +void runBuildCommands(in string[] commands, in Package pack, in Project proj, + in GeneratorSettings settings, in BuildSettings build_settings) { import std.conv; import std.process; @@ -474,6 +476,8 @@ env["DUB_BUILD_MODE"] = to!string(settings.buildMode); env["DUB_PACKAGE"] = pack.name; env["DUB_PACKAGE_DIR"] = pack.path.toNativeString(); + env["DUB_ROOT_PACKAGE"] = proj.rootPackage.name; + env["DUB_ROOT_PACKAGE_DIR"] = proj.rootPackage.path.toNativeString(); env["DUB_COMBINED"] = settings.combined? "TRUE" : ""; env["DUB_RUN"] = settings.run? "TRUE" : "";