@@ -57,8 +57,8 @@ struct BuildSettings {
57
57
string [string ] postBuildEnvironments;
58
58
string [string ] preRunEnvironments;
59
59
string [string ] postRunEnvironments;
60
- @byName BuildRequirements requirements;
61
- @byName BuildOptions options;
60
+ @byName Flags ! BuildRequirement requirements;
61
+ @byName Flags ! BuildOption options;
62
62
63
63
BuildSettings dup ()
64
64
const {
@@ -153,11 +153,11 @@ struct BuildSettings {
153
153
void addPostRunEnvironments (in string [string ] value) { add(postRunEnvironments, value); }
154
154
void updatePostRunEnvironments (in string [string ] value) { update(postRunEnvironments, value); }
155
155
void addRequirements (in BuildRequirement[] value... ) { foreach (v; value) this .requirements |= v; }
156
- void addRequirements (in BuildRequirements value) { this .requirements |= value; }
156
+ void addRequirements (in Flags ! BuildRequirement value) { this .requirements |= value; }
157
157
void addOptions (in BuildOption[] value... ) { foreach (v; value) this .options |= v; }
158
- void addOptions (in BuildOptions value) { this .options |= value; }
158
+ void addOptions (in Flags ! BuildOption value) { this .options |= value; }
159
159
void removeOptions (in BuildOption[] value... ) { foreach (v; value) this .options &= ~ v; }
160
- void removeOptions (in BuildOptions value) { this .options &= ~ value; }
160
+ void removeOptions (in Flags ! BuildOption value) { this .options &= ~ value; }
161
161
162
162
private :
163
163
static auto filterDuplicates (T)(ref string [] arr, in T vals, bool noDuplicates = true )
@@ -342,15 +342,6 @@ enum BuildRequirement {
342
342
noDefaultFlags = 1 << 9 , // / Do not issue any of the default build flags (e.g. -debug, -w, -property etc.) - use only for development purposes
343
343
}
344
344
345
- struct BuildRequirements {
346
- import dub.internal.vibecompat.data.serialization : ignore;
347
-
348
- @ignore BitFlags! BuildRequirement values ;
349
- this (BuildRequirement req) { values = req; }
350
-
351
- alias values this ;
352
- }
353
-
354
345
enum BuildOption {
355
346
none = 0 , // / Use compiler defaults
356
347
debugMode = 1 << 0 , // / Compile in debug mode (enables contracts, -debug)
@@ -385,16 +376,24 @@ enum BuildOption {
385
376
_ddox = 1 << 27 , // Compile docs.json
386
377
}
387
378
388
- struct BuildOptions {
389
- import dub.internal.vibecompat.data.serialization : ignore;
379
+ struct Flags (T) {
380
+ import dub.internal.vibecompat.data.serialization : ignore;
381
+
382
+ @ignore BitFlags! T values ;
390
383
391
- @ignore BitFlags! BuildOption values ;
392
- this (BuildOption opt) { values = opt; }
393
- this (BitFlags! BuildOption v) { values = v; }
384
+ public this (T opt) @safe pure nothrow @nogc
385
+ {
386
+ this .values = opt;
387
+ }
394
388
395
- alias values this ;
389
+ public this (BitFlags! T v) @safe pure nothrow @nogc
390
+ {
391
+ this .values = v;
396
392
}
397
393
394
+ alias values this ;
395
+ }
396
+
398
397
/**
399
398
All build options that will be inherited upwards in the dependency graph
400
399
@@ -405,11 +404,18 @@ enum BuildOption {
405
404
$(LI The option enabled meta information in dependent projects that are useful for the dependee (e.g. debug information))
406
405
)
407
406
*/
408
- enum BuildOptions inheritedBuildOptions = BuildOption.debugMode | BuildOption.releaseMode
407
+ enum Flags! BuildOption inheritedBuildOptions =
408
+ BuildOption.debugMode | BuildOption.releaseMode
409
409
| BuildOption.coverage | BuildOption.coverageCTFE | BuildOption.debugInfo | BuildOption.debugInfoC
410
410
| BuildOption.alwaysStackFrame | BuildOption.stackStomping | BuildOption.inline
411
411
| BuildOption.noBoundsCheck | BuildOption.profile | BuildOption.ignoreUnknownPragmas
412
412
| BuildOption.syntaxOnly | BuildOption.warnings | BuildOption.warningsAsErrors
413
413
| BuildOption.ignoreDeprecations | BuildOption.deprecationWarnings
414
414
| BuildOption.deprecationErrors | BuildOption.property | BuildOption.profileGC
415
415
| BuildOption.pic;
416
+
417
+ deprecated (" Use `Flags!BuildOption` instead" )
418
+ public alias BuildOptions = Flags! BuildOption;
419
+
420
+ deprecated (" Use `Flags!BuildRequirement` instead" )
421
+ public alias BuildRequirements = Flags! BuildRequirement;
0 commit comments