diff --git a/source/dub/compilers/compiler.d b/source/dub/compilers/compiler.d index 142aa6e..c08d664 100644 --- a/source/dub/compilers/compiler.d +++ b/source/dub/compilers/compiler.d @@ -326,6 +326,7 @@ requireBoundsCheck = 1<<6, /// Always perform bounds checks requireContracts = 1<<7, /// Leave assertions and contracts enabled in release builds relaxProperties = 1<<8, /// Do not enforce strict property handling (-property) + noDefaultFlags = 1<<9, /// Do not issue any of the default build flags (e.g. -debug, -w, -property etc.) - use only for development purposes } string getTargetFileName(in BuildSettings settings, in BuildPlatform platform) diff --git a/source/dub/generators/build.d b/source/dub/generators/build.d index abb80d8..83abc83 100644 --- a/source/dub/generators/build.d +++ b/source/dub/generators/build.d @@ -44,12 +44,13 @@ auto buildsettings = settings.buildSettings; m_project.addBuildSettings(buildsettings, settings.platform, settings.config); - buildsettings.addDFlags(["-w", "-property"]); + bool usedefflags = !(buildsettings.requirements & BuildRequirements.noDefaultFlags); + if (usedefflags) buildsettings.addDFlags(["-w", "-property"]); string dflags = environment.get("DFLAGS"); if( dflags.length ){ settings.buildType = "$DFLAGS"; buildsettings.addDFlags(dflags.split()); - } else { + } else if (usedefflags) { addBuildTypeFlags(buildsettings, settings.buildType); } diff --git a/source/dub/generators/rdmd.d b/source/dub/generators/rdmd.d index 020eba7..8e6f52e 100644 --- a/source/dub/generators/rdmd.d +++ b/source/dub/generators/rdmd.d @@ -46,14 +46,15 @@ auto buildsettings = settings.buildSettings; m_project.addBuildSettings(buildsettings, settings.platform, settings.config); + bool usedefflags = !(buildsettings.requirements & BuildRequirements.noDefaultFlags); // do not pass all source files to RDMD, only the main source file buildsettings.sourceFiles = buildsettings.sourceFiles.filter!(s => !s.endsWith(".d"))().array(); - buildsettings.addDFlags(["-w"/*, "-property"*/]); + if (usedefflags) buildsettings.addDFlags(["-w", "-property"]); string dflags = environment.get("DFLAGS"); if( dflags ){ settings.buildType = "$DFLAGS"; buildsettings.addDFlags(dflags.split()); - } else { + } else if (usedefflags) { addBuildTypeFlags(buildsettings, settings.buildType); } settings.compiler.prepareBuildSettings(buildsettings, BuildSetting.commandLine); diff --git a/source/dub/package_.d b/source/dub/package_.d index 7786dc4..2c5a51a 100644 --- a/source/dub/package_.d +++ b/source/dub/package_.d @@ -531,10 +531,20 @@ void warnOnSpecialCompilerFlags(string package_name, string config_name) { - string[] all_dflags; - foreach (flags; this.dflags) - all_dflags ~= flags; - .warnOnSpecialCompilerFlags(all_dflags, package_name, config_name); + auto nodef = false; + foreach (req; this.buildRequirements) + if (req & BuildRequirements.noDefaultFlags) + nodef = true; + + if (nodef) { + logWarn("Warning: This package uses the \"noDefaultFlags\" build requirement. Please use only for development purposes and not for released packages."); + logWarn(""); + } else { + string[] all_dflags; + foreach (flags; this.dflags) + all_dflags ~= flags; + .warnOnSpecialCompilerFlags(all_dflags, package_name, config_name); + } } }