diff --git a/source/dub/compilers/compiler.d b/source/dub/compilers/compiler.d index 9cc0676..40ffdfa 100644 --- a/source/dub/compilers/compiler.d +++ b/source/dub/compilers/compiler.d @@ -107,6 +107,24 @@ /** + Alters the build options to comply with the specified build requirements. +*/ +void enforceBuildRequirements(ref BuildSettings settings) +{ + settings.addOptions(BuildOptions.warningsAsErrors); + if (settings.requirements & BuildRequirements.allowWarnings) { settings.options &= ~BuildOptions.warningsAsErrors; settings.options |= BuildOptions.warnings; } + if (settings.requirements & BuildRequirements.silenceWarnings) settings.options &= ~(BuildOptions.warningsAsErrors|BuildOptions.warnings); + if (settings.requirements & BuildRequirements.disallowDeprecations) { settings.options &= ~(BuildOptions.ignoreDeprecations|BuildOptions.deprecationWarnings); settings.options |= BuildOptions.deprecationErrors; } + if (settings.requirements & BuildRequirements.silenceDeprecations) { settings.options &= ~(BuildOptions.deprecationErrors|BuildOptions.deprecationWarnings); settings.options |= BuildOptions.ignoreDeprecations; } + if (settings.requirements & BuildRequirements.disallowInlining) settings.options &= BuildOptions.inline; + if (settings.requirements & BuildRequirements.disallowOptimization) settings.options &= ~BuildOptions.optimize; + if (settings.requirements & BuildRequirements.requireBoundsCheck) settings.options &= ~BuildOptions.noBoundsChecks; + if (settings.requirements & BuildRequirements.requireContracts) settings.options &= ~BuildOptions.releaseMode; + if (settings.requirements & BuildRequirements.relaxProperties) settings.options &= ~BuildOptions.property; +} + + +/** Replaces each referenced import library by the appropriate linker flags. This function tries to invoke "pkg-config" if possible and falls back to @@ -158,20 +176,6 @@ /// Invokes the underlying linker directly void invokeLinker(in BuildSettings settings, in BuildPlatform platform, string[] objects); - - final protected void enforceBuildRequirements(ref BuildSettings settings) - { - settings.addOptions(BuildOptions.warningsAsErrors); - if (settings.requirements & BuildRequirements.allowWarnings) { settings.options &= ~BuildOptions.warningsAsErrors; settings.options |= BuildOptions.warnings; } - if (settings.requirements & BuildRequirements.silenceWarnings) settings.options &= ~(BuildOptions.warningsAsErrors|BuildOptions.warnings); - if (settings.requirements & BuildRequirements.disallowDeprecations) { settings.options &= ~(BuildOptions.ignoreDeprecations|BuildOptions.deprecationWarnings); settings.options |= BuildOptions.deprecationErrors; } - if (settings.requirements & BuildRequirements.silenceDeprecations) { settings.options &= ~(BuildOptions.deprecationErrors|BuildOptions.deprecationWarnings); settings.options |= BuildOptions.ignoreDeprecations; } - if (settings.requirements & BuildRequirements.disallowInlining) settings.options &= BuildOptions.inline; - if (settings.requirements & BuildRequirements.disallowOptimization) settings.options &= ~BuildOptions.optimize; - if (settings.requirements & BuildRequirements.requireBoundsCheck) settings.options &= ~BuildOptions.noBoundsChecks; - if (settings.requirements & BuildRequirements.requireContracts) settings.options &= ~BuildOptions.releaseMode; - if (settings.requirements & BuildRequirements.relaxProperties) settings.options &= ~BuildOptions.property; - } } diff --git a/source/dub/generators/visuald.d b/source/dub/generators/visuald.d index c5418b4..a95e893 100644 --- a/source/dub/generators/visuald.d +++ b/source/dub/generators/visuald.d @@ -305,6 +305,7 @@ m_app.addBuildSettings(buildsettings, settings.platform, settings.config, pack); m_app.addBuildTypeSettings(buildsettings, settings.platform, type); settings.compiler.extractBuildOptions(buildsettings); + enforceBuildRequirements(buildsettings); string[] getSettings(string setting)(){ return __traits(getMember, buildsettings, setting); } string[] getPathSettings(string setting)()