@@ -305,6 +305,7 @@ subroutine cmd_run(settings,test)
305
305
logical , intent (in ) :: test
306
306
307
307
integer :: i, j
308
+ logical :: found(size (settings% name))
308
309
type (error_t), allocatable :: error
309
310
type (package_t) :: package
310
311
type (fpm_model_t) :: model
@@ -328,6 +329,7 @@ subroutine cmd_run(settings,test)
328
329
end if
329
330
330
331
! Enumerate executable targets to run
332
+ found(:) = .false.
331
333
allocate (executables(0 ))
332
334
do i= 1 ,size (model% targets)
333
335
@@ -352,6 +354,7 @@ subroutine cmd_run(settings,test)
352
354
353
355
if (trim (settings% name (j))==exe_source% exe_name) then
354
356
357
+ found(j) = .true.
355
358
exe_cmd% s = exe_target% output_file
356
359
executables = [executables, exe_cmd]
357
360
@@ -367,6 +370,45 @@ subroutine cmd_run(settings,test)
367
370
368
371
end do
369
372
373
+ ! Check all names are valid
374
+ if (any (.not. found)) then
375
+
376
+ write (stderr,' (A)' ,advance= " no" )' fpm::run<ERROR> specified names '
377
+ do j= 1 ,size (settings% name)
378
+ if (.not. found(j)) write (stderr,' (A)' ,advance= " no" ) ' "' // trim (settings% name (j))// ' " '
379
+ end do
380
+ write (stderr,' (A)' ) ' not found.'
381
+ write (stderr,* )
382
+
383
+ j = 1
384
+ write (stderr,* ) ' Available names:'
385
+ do i= 1 ,size (model% targets)
386
+
387
+ exe_target = > model% targets(i)% ptr
388
+
389
+ if (exe_target% target_type == FPM_TARGET_EXECUTABLE .and. &
390
+ allocated (exe_target% dependencies)) then
391
+
392
+ exe_source = > exe_target% dependencies(1 )% ptr% source
393
+
394
+ if (exe_source% unit_scope == &
395
+ merge (FPM_SCOPE_TEST,FPM_SCOPE_APP,test)) then
396
+
397
+ write (stderr,' (A17)' ,advance= (merge (" yes" ," no " ,modulo (j,4 )==0 ))) basename(exe_target% output_file)
398
+
399
+ j = j + 1
400
+
401
+ end if
402
+
403
+ end if
404
+
405
+ end do
406
+
407
+ write (stderr,* )
408
+ stop 1
409
+
410
+ end if
411
+
370
412
! NB. To be replaced after incremental rebuild is implemented
371
413
if (.not. settings% list .and. &
372
414
any ([(.not. exists(executables(i)% s),i= 1 ,size (executables))])) then
0 commit comments