@@ -250,6 +250,32 @@ public abstract class Compiler {
250
250
protected Compiler () {
251
251
}
252
252
253
+ /**
254
+ * Parses a "NAME=VALUE" string into a name and (optional) value. Logs to warn if argument is null, implying a blank
255
+ * config item (eg <define></define>, or <define>${x}</define> when x is undefined).
256
+ *
257
+ * @param argument the string to parse (may be null)
258
+ * @param configName the name of the argument type, for logging purposes
259
+ * @return the parsed DefineArgument, or null if argument is null
260
+ */
261
+ private DefineArgument parseDefineArgument (final String argument , String configName ) {
262
+ if (argument == null ) {
263
+ this .mojo .getLog ().warn ("NAR configuration: empty " + configName + " - ignoring" );
264
+ return null ;
265
+ }
266
+ final String [] pair = argument .split ("=" , 2 );
267
+
268
+ if (pair [0 ].equals ("" )) {
269
+ this .mojo .getLog ().warn ("NAR configuration: definition has no name in " + configName + " - ignoring" );
270
+ return null ;
271
+ }
272
+
273
+ final DefineArgument define = new DefineArgument ();
274
+ define .setName (pair [0 ]);
275
+ define .setValue (pair .length > 1 ? cleanDefineValue (pair [1 ]) : null );
276
+ return define ;
277
+ }
278
+
253
279
/**
254
280
* Filter elements such as cr\lf that are problematic when used inside a `define`
255
281
*
@@ -328,13 +354,10 @@ public final CompilerDef getCompiler(final String type, final String output)
328
354
}
329
355
330
356
if (this .optionSet != null ) {
331
-
332
357
final String [] opts = this .optionSet .split ("\\ s" );
333
358
334
359
for (final String opt : opts ) {
335
-
336
360
final CompilerArgument arg = new CompilerArgument ();
337
-
338
361
arg .setValue (opt );
339
362
compilerDef .addConfiguredCompilerArg (arg );
340
363
}
@@ -358,31 +381,24 @@ public final CompilerDef getCompiler(final String type, final String output)
358
381
if (this .defines != null ) {
359
382
final DefineSet ds = new DefineSet ();
360
383
for (final String string : this .defines ) {
361
- final DefineArgument define = new DefineArgument ();
362
- final String [] pair = string .split ("=" , 2 );
363
- define .setName (pair [0 ]);
364
- define .setValue (pair .length > 1 ? cleanDefineValue (pair [1 ]) : null );
365
- ds .addDefine (define );
384
+ final DefineArgument define = parseDefineArgument (string , "define" );
385
+ if (define != null ) {
386
+ ds .addDefine (define );
387
+ }
366
388
}
367
389
compilerDef .addConfiguredDefineset (ds );
368
390
}
369
391
370
392
if (this .defineSet != null ) {
371
-
372
393
final String [] defList = this .defineSet .split ("," );
373
394
final DefineSet defSet = new DefineSet ();
374
395
375
396
for (final String element : defList ) {
376
-
377
- final String [] pair = element .trim ().split ("=" , 2 );
378
- final DefineArgument def = new DefineArgument ();
379
-
380
- def .setName (pair [0 ]);
381
- def .setValue (pair .length > 1 ? cleanDefineValue (pair [1 ]) : null );
382
-
383
- defSet .addDefine (def );
397
+ final DefineArgument define = parseDefineArgument (element , "defineSet" );
398
+ if (define != null ) {
399
+ defSet .addDefine (define );
400
+ }
384
401
}
385
-
386
402
compilerDef .addConfiguredDefineset (defSet );
387
403
}
388
404
@@ -400,11 +416,10 @@ public final CompilerDef getCompiler(final String type, final String output)
400
416
if (this .undefines != null ) {
401
417
final DefineSet us = new DefineSet ();
402
418
for (final String string : this .undefines ) {
403
- final DefineArgument undefine = new DefineArgument ();
404
- final String [] pair = string .split ("=" , 2 );
405
- undefine .setName (pair [0 ]);
406
- undefine .setValue (pair .length > 1 ? pair [1 ] : null );
407
- us .addUndefine (undefine );
419
+ final DefineArgument undef = parseDefineArgument (string , "undefine" );
420
+ if (undef != null ) {
421
+ us .addUndefine (undef );
422
+ }
408
423
}
409
424
compilerDef .addConfiguredDefineset (us );
410
425
}
@@ -415,16 +430,11 @@ public final CompilerDef getCompiler(final String type, final String output)
415
430
final DefineSet undefSet = new DefineSet ();
416
431
417
432
for (final String element : undefList ) {
418
-
419
- final String [] pair = element .trim ().split ("=" , 2 );
420
- final DefineArgument undef = new DefineArgument ();
421
-
422
- undef .setName (pair [0 ]);
423
- undef .setValue (pair .length > 1 ? pair [1 ] : null );
424
-
425
- undefSet .addUndefine (undef );
433
+ final DefineArgument undef = parseDefineArgument (element , "undefineSet" );
434
+ if (undef != null ) {
435
+ undefSet .addUndefine (undef );
436
+ }
426
437
}
427
-
428
438
compilerDef .addConfiguredDefineset (undefSet );
429
439
}
430
440
0 commit comments