1
- cmake_minimum_required (VERSION 3.10 )
1
+ cmake_minimum_required (VERSION 3.19 )
2
2
3
- cmake_policy (VERSION 3.10 ...3.14 )
3
+ cmake_policy (VERSION 3.19 ...3.23 )
4
4
5
5
if (DEFINED ENV{SOURCE_DATE_EPOCH} )
6
6
set (SOURCE_DATE_EPOCH "$ENV{SOURCE_DATE_EPOCH} " )
@@ -104,11 +104,11 @@ if(DEFINED CMAKE_BUILD_TYPE AND "${CMAKE_BUILD_TYPE}" MATCHES "[Rr][Ee][Ll]")
104
104
if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU" )
105
105
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fno-working-directory" )
106
106
endif ()
107
- set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdebug-prefix-map=${CMAKE_SOURCE_DIR} =." )
107
+ set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdebug-prefix-map=\" ${CMAKE_SOURCE_DIR} \" =." )
108
108
if (CMAKE_C_COMPILER_ID MATCHES "GNU" )
109
109
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-working-directory" )
110
110
endif ()
111
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdebug-prefix-map=${CMAKE_SOURCE_DIR} =." )
111
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdebug-prefix-map=\" ${CMAKE_SOURCE_DIR} \" =." )
112
112
endif ()
113
113
114
114
message ( STATUS "Building OpenCoarrays version: ${full_git_describe} " )
@@ -139,6 +139,9 @@ endif()
139
139
if (NOT CMAKE_REQUIRED_FLAGS )
140
140
set (CMAKE_REQUIRED_FLAGS "" )
141
141
endif ()
142
+ if (NOT CMAKE_REQUIRED_DEFINITIONS )
143
+ set (CMAKE_REQUIRED_DEFINITIONS "" )
144
+ endif ()
142
145
if (NOT CMAKE_REQUIRED_LIBRARIES )
143
146
set (CMAKE_REQUIRED_LIBRARIES "" )
144
147
endif ()
@@ -204,6 +207,9 @@ endif()
204
207
205
208
if (CMAKE_BUILD_TYPE MATCHES "Debug|DEBUG|debug" )
206
209
add_definitions (-DEXTRA_DEBUG_OUTPUT )
210
+ set (IMPI_BUILD debug )
211
+ else ()
212
+ set (IMPI_BUILD release )
207
213
endif ()
208
214
209
215
# We have populated CMAKE_Fortran_COMPILER_VERSION if it was missing
@@ -234,7 +240,7 @@ endif()
234
240
235
241
if (gfortran_compiler )
236
242
set (OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} )
237
- set (CMAKE_REQUIRED_FLAGS $< $< COMPILE_LANGUAGE:Fortran > : -fcoarray=single -ffree-form> )
243
+ set (CMAKE_REQUIRED_FLAGS -fcoarray=single )
238
244
endif ()
239
245
include (CheckFortranSourceCompiles )
240
246
CHECK_Fortran_SOURCE_COMPILES ("
@@ -243,7 +249,8 @@ CHECK_Fortran_SOURCE_COMPILES("
243
249
integer :: i
244
250
i = this_image()
245
251
end program
246
- " Check_Simple_Coarray_Fortran_Source_Compiles )
252
+ " Check_Simple_Coarray_Fortran_Source_Compiles
253
+ SRC_EXT F90 )
247
254
if (gfortran_compiler )
248
255
set (CMAKE_REQUIRED_FLAGS ${OLD_REQUIRED_FLAGS} )
249
256
unset (OLD_REQUIRED_FLAGS )
@@ -273,102 +280,137 @@ if (C_COMPILER_NAME MATCHES "^[mM][pP][iI]")
273
280
set (MPI_C_COMPILER "${CMAKE_C_COMPILER} " )
274
281
endif ()
275
282
283
+ if (WIN32 ) # Only support building with GCC & GFortran using Intel MPI (OneAPI)
284
+ # Here we assume Intel ONEAPI and the environment is loaded
285
+ set ( MPI_ASSUME_NO_BUILTIN_MPI TRUE )
286
+ set ( MPI_CXX_SKIP_MPICXX TRUE )
287
+ cmake_path (SET MPI_ROOT NORMALIZE "$ENV{I_MPI_ROOT} " )
288
+ set (IMPI_LIB_DIR "${MPI_ROOT} /lib/${IMPI_BUILD} " )
289
+ set (IMPI_DLL_DIR "${MPI_ROOT} /bin/${IMPI_BUILD} " )
290
+
291
+ find_library (IMPI_LIB
292
+ "impi.lib"
293
+ HINTS "${IMPI_LIB_DIR} "
294
+ DOC "Location of the Intel MPI impi.lib file"
295
+ REQUIRED
296
+ NO_DEFAULT_PATH )
297
+
298
+ find_file (IMPI_DLL
299
+ "impi.dll"
300
+ HINTS "${IMPI_DLL_DIR} "
301
+ DOC "Location of the Intel MPI impi.dll file"
302
+ REQUIRED
303
+ NO_DEFAULT_PATH )
304
+
305
+
306
+ set ( MPI_C_LIBRARIES ${IMPI_LIB} ;${IMPI_DLL} CACHE FILEPATH "MPI C libs to link" )
307
+ set ( MPI_C_LIB_NAMES impi CACHE FILEPATH "MPI lib names" )
308
+ set ( MPI_Fortran_LIBRARIES ${IMPI_LIB} ;${IMPI_DLL} CACHE FILEPATH "MPI Fortran libs to link" )
309
+ set ( MPI_Fortran_LIB_NAMES impi CACHE FILEPATH "MPI Fortran lib names" )
310
+ set ( MPI_impi_LIBRARY ${IMPI_LIB} CACHE FILEPATH "MPI lib to link" )
311
+
312
+ set (MPI_Fortran_HAVE_F90_MODULE FALSE )
313
+ set (MPI_Fortran_HAVE_F08_MODULE FALSE )
314
+
315
+ endif ()
276
316
find_package ( MPI )
277
317
278
- if ( (NOT MPI_C_FOUND ) OR (NOT MPI_Fortran_FOUND ) OR (NOT MPIEXEC ))
318
+ if ( (NOT MPI_C_FOUND ) OR (NOT MPI_Fortran_FOUND ) OR (NOT MPIEXEC_EXECUTABLE ))
279
319
# Get default install location of MPICH from install.sh
280
320
message (WARNING "Could not find all MPI components!" )
281
321
message (WARNING "
282
322
MPI_C_FOUND = ${MPI_C_FOUND}
283
323
MPI_Fortran_FOUND = ${MPI_Fortran_FOUND}
284
- MPIEXEC = ${MPIEXEC }
324
+ MPIEXEC_EXECUTABLE = ${MPIEXEC_EXECUTABLE }
285
325
" )
286
326
execute_process ( COMMAND "./install.sh" -P mpich
287
327
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR} "
288
328
OUTPUT_VARIABLE DEFAULT_MPICH_INSTALL_LOC
289
329
OUTPUT_QUIET
290
- OUTPUT_STRIP_TRAILING_WHITESPACE
291
- )
330
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
292
331
find_program (MY_MPI_EXEC NAMES mpirun mpiexec lamexec srun
293
332
PATHS "${DEFAULT_MPICH_INSTALL_LOC} " ENV PATH
294
333
HINTS "${FTN_COMPILER_DIR} " "${C_COMPILER_DIR} "
295
334
PATH_SUFFIXES bin )
296
335
set ( MPI_HOME "${MPI_HOME} " "${MY_MPI_EXEC} " "${MY_MPI_EXEC} /.." )
297
336
find_package ( MPI REQUIRED )
298
337
endif ()
299
- list (REMOVE_DUPLICATES MPI_Fortran_INCLUDE_PATH )
338
+ list (REMOVE_DUPLICATES MPI_Fortran_INCLUDE_DIRS )
300
339
301
- # Test for consistent MPI environment
302
- if (NOT MPIEXEC )
340
+ # Test for consistent MPI environment but not on windows
341
+ if (NOT MPIEXEC_EXECUTABLE )
303
342
message ( ERROR "CMake failed to find `mpiexec` or similar. If building with `./install.sh` please
304
343
report this bug to the OpenCoarrays developers at
305
344
https://github.com/sourceryinstitute/opencoarrays/issues, otherwise point CMake
306
345
to the desired MPI runtime." )
307
346
else ()
308
347
add_definitions (-DHAVE_MPI )
309
348
endif ()
310
-
311
- get_filename_component (MPIEXEC_RELATIVE_LOC "${MPIEXEC } "
312
- PROGRAM )
313
- get_filename_component (MPIEXEC_ABS_LOC "${MPIEXEC_RELATIVE_LOC} "
314
- REALPATH )
315
- get_filename_component (MPIEXEC_DIR "${MPIEXEC_ABS_LOC} "
316
- DIRECTORY )
317
-
318
- get_filename_component (MPICC_RELATIVE_LOC "${MPI_C_COMPILER} "
319
- PROGRAM )
320
- get_filename_component (MPICC_ABS_LOC "${MPICC_RELATIVE_LOC} "
321
- REALPATH )
322
- get_filename_component (MPICC_DIR "${MPICC_ABS_LOC} "
323
- DIRECTORY )
324
-
325
- get_filename_component (MPIFC_RELATIVE_LOC "${MPI_Fortran_COMPILER} "
326
- PROGRAM )
327
- get_filename_component (MPIFC_ABS_LOC "${MPIFC_RELATIVE_LOC} "
328
- REALPATH )
329
- get_filename_component (MPIFC_DIR "${MPIFC_ABS_LOC} "
330
- DIRECTORY )
331
-
332
- if ((MPIEXEC_DIR STREQUAL MPICC_DIR ) AND (MPIEXEC_DIR STREQUAL MPIFC_DIR ))
333
- message ( STATUS "MPI runtime and compile time environments appear to be consistent" )
334
- else ()
335
- message ( WARNING "MPIEXEC is in \" ${MPIEXEC_DIR} ,\"
349
+ if ( NOT WIN32 )
350
+ get_filename_component (MPIEXEC_RELATIVE_LOC "${MPIEXEC_EXECUTABLE } "
351
+ PROGRAM )
352
+ get_filename_component (MPIEXEC_ABS_LOC "${MPIEXEC_RELATIVE_LOC} "
353
+ REALPATH )
354
+ get_filename_component (MPIEXEC_DIR "${MPIEXEC_ABS_LOC} "
355
+ DIRECTORY )
356
+
357
+ get_filename_component (MPICC_RELATIVE_LOC "${MPI_C_COMPILER} "
358
+ PROGRAM )
359
+ get_filename_component (MPICC_ABS_LOC "${MPICC_RELATIVE_LOC} "
360
+ REALPATH )
361
+ get_filename_component (MPICC_DIR "${MPICC_ABS_LOC} "
362
+ DIRECTORY )
363
+
364
+ get_filename_component (MPIFC_RELATIVE_LOC "${MPI_Fortran_COMPILER} "
365
+ PROGRAM )
366
+ get_filename_component (MPIFC_ABS_LOC "${MPIFC_RELATIVE_LOC} "
367
+ REALPATH )
368
+ get_filename_component (MPIFC_DIR "${MPIFC_ABS_LOC} "
369
+ DIRECTORY )
370
+
371
+ if ((MPIEXEC_DIR STREQUAL MPICC_DIR ) AND (MPIEXEC_DIR STREQUAL MPIFC_DIR ))
372
+ message ( STATUS "MPI runtime and compile time environments appear to be consistent" )
373
+ else ()
374
+ message ( WARNING "MPIEXEC is in \" ${MPIEXEC_DIR} ,\"
336
375
which differs from the location of MPICC and/or MPIFC which are in
337
376
\" ${MPICC_DIR} \" and \" ${MPIFC_DIR} ,\" respectively.
338
377
This is likely indicative of a problem. If building with `./install.sh` please report
339
378
this to the OpenCoarrays developers by filing a new issue at:
340
379
https://github.com/sourceryinstitute/OpenCoarrays/issues/new" )
341
- endif ()
380
+ endif ()
342
381
343
- #-----------------------------------------------
344
- # Work around bug #317 present on fedora systems
345
- #-----------------------------------------------
346
- if ( (MPI_C_LINK_FLAGS MATCHES "noexecstack" ) OR (MPI_Fortran_LINK_FLAGS MATCHES "noexecstack" ) )
347
- message ( WARNING
348
- "The `noexecstack` linker flag was found in the MPI_<lang>_LINK_FLAGS variable. This is
382
+ #-----------------------------------------------
383
+ # Work around bug #317 present on fedora systems
384
+ #-----------------------------------------------
385
+ if ( (MPI_C_LINK_FLAGS MATCHES "noexecstack" ) OR (MPI_Fortran_LINK_FLAGS MATCHES "noexecstack" ) )
386
+ message ( WARNING
387
+ "The `noexecstack` linker flag was found in the MPI_<lang>_LINK_FLAGS variable. This is
349
388
known to cause segmentation faults for some Fortran codes. See, e.g.,
350
389
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71729 or
351
390
https://github.com/sourceryinstitute/OpenCoarrays/issues/317.
352
391
353
392
`noexecstack` is being replaced with `execstack`"
354
- )
355
- string (REPLACE "noexecstack"
356
- "execstack" MPI_C_LINK_FLAGS_FIXED ${MPI_C_LINK_FLAGS} )
357
- string (REPLACE "noexecstack"
358
- "execstack" MPI_Fortran_LINK_FLAGS_FIXED ${MPI_Fortran_LINK_FLAGS} )
359
- set (MPI_C_LINK_FLAGS "${MPI_C_LINK_FLAGS_FIXED} " CACHE STRING
360
- "MPI C linking flags" FORCE )
361
- set (MPI_Fortran_LINK_FLAGS "${MPI_Fortran_LINK_FLAGS_FIXED} " CACHE STRING
362
- "MPI Fortran linking flags" FORCE )
393
+ )
394
+ string (REPLACE "noexecstack"
395
+ "execstack" MPI_C_LINK_FLAGS_FIXED ${MPI_C_LINK_FLAGS} )
396
+ string (REPLACE "noexecstack"
397
+ "execstack" MPI_Fortran_LINK_FLAGS_FIXED ${MPI_Fortran_LINK_FLAGS} )
398
+ set (MPI_C_LINK_FLAGS "${MPI_C_LINK_FLAGS_FIXED} " CACHE STRING
399
+ "MPI C linking flags" FORCE )
400
+ set (MPI_Fortran_LINK_FLAGS "${MPI_Fortran_LINK_FLAGS_FIXED} " CACHE STRING
401
+ "MPI Fortran linking flags" FORCE )
402
+ endif ()
363
403
endif ()
364
404
365
405
#--------------------------------------------------------
366
406
# Make sure a simple "hello world" C mpi program compiles
367
407
#--------------------------------------------------------
368
408
set (OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} )
369
- set (CMAKE_REQUIRED_FLAGS ${MPI_C_COMPILE_FLAGS} ${MPI_C_LINK_FLAGS} )
409
+ set (CMAKE_REQUIRED_FLAGS ${MPI_C_COMPILE_OPTIONS} ${MPI_C_LINK_FLAGS} )
410
+ set (OLD_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} )
411
+ set (CMAKE_REQUIRED_DEFINITIONS ${MPI_C_COMPILE_DEFINITIONS} )
370
412
set (OLD_INCLUDES ${CMAKE_REQUIRED_INCLUDES} )
371
- set (CMAKE_REQUIRED_INCLUDES ${MPI_C_INCLUDE_PATH } )
413
+ set (CMAKE_REQUIRED_INCLUDES ${MPI_C_INCLUDE_DIRS } )
372
414
set (OLD_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} )
373
415
set (CMAKE_REQUIRED_LIBRARIES ${MPI_C_LIBRARIES} )
374
416
include (CheckCSourceCompiles )
@@ -390,6 +432,7 @@ int main(int argc, char** argv) {
390
432
}"
391
433
MPI_C_COMPILES )
392
434
set (CMAKE_REQUIRED_FLAGS ${OLD_REQUIRED_FLAGS} )
435
+ set (CMAKE_REQUIRED_DEFINITIONS ${OLD_REQUIRED_DEFINITIONS} )
393
436
set (CMAKE_REQUIRED_INCLUDES ${OLD_INCLUDES} )
394
437
set (CMAKE_REQUIRED_LIBRARIES ${OLD_LIBRARIES} )
395
438
unset (OLD_REQUIRED_FLAGS )
@@ -409,9 +452,11 @@ endif()
409
452
# Try using mpi.mod first then fall back on includ 'mpif.h'
410
453
#--------------------------------------------------------------
411
454
set (OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} )
412
- set (CMAKE_REQUIRED_FLAGS "-ffree-form" ${MPI_Fortran_COMPILE_FLAGS} ${MPI_Fortran_LINK_FLAGS} )
455
+ set (CMAKE_REQUIRED_FLAGS "-ffree-form" ${MPI_Fortran_COMPILE_OPTIONS} ${MPI_Fortran_LINK_FLAGS} )
456
+ set (OLD_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} )
457
+ set (CMAKE_REQUIRED_DEFINITIONS ${MPI_Fortran_COMPILE_DEFINITIONS} )
413
458
set (OLD_INCLUDES ${CMAKE_REQUIRED_INCLUDES} )
414
- set (CMAKE_REQUIRED_INCLUDES ${MPI_Fortran_INCLUDE_PATH } )
459
+ set (CMAKE_REQUIRED_INCLUDES ${MPI_Fortran_INCLUDE_DIRS } )
415
460
set (OLD_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} )
416
461
set (CMAKE_REQUIRED_LIBRARIES ${MPI_Fortran_LIBRARIES} )
417
462
include (CheckFortranSourceCompiles )
@@ -431,6 +476,7 @@ end program
431
476
"
432
477
MPI_Fortran_MODULE_COMPILES )
433
478
set (CMAKE_REQUIRED_FLAGS ${OLD_REQUIRED_FLAGS} )
479
+ set (CMAKE_REQUIRED_DEFINITIONS ${OLD_REQUIRED_DEFINITIONS} )
434
480
set (CMAKE_REQUIRED_INCLUDES ${OLD_INCLUDES} )
435
481
set (CMAKE_REQUIRED_LIBRARIES ${OLD_LIBRARIES} )
436
482
unset (OLD_REQUIRED_FLAGS )
@@ -441,9 +487,11 @@ unset(OLD_LIBRARIES)
441
487
# If that failed try using mpif.h
442
488
#--------------------------------
443
489
set (OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} )
444
- set (CMAKE_REQUIRED_FLAGS "-ffree-form" ${MPI_Fortran_COMPILE_FLAGS} ${MPI_Fortran_LINK_FLAGS} )
490
+ set (CMAKE_REQUIRED_FLAGS "-ffree-form" ${MPI_Fortran_COMPILE_OPTIONS} ${MPI_Fortran_LINK_FLAGS} )
491
+ set (OLD_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} )
492
+ set (CMAKE_REQUIRED_DEFINITIONS ${MPI_Fortra_COMPILE_DEFINITIONS} )
445
493
set (OLD_INCLUDES ${CMAKE_REQUIRED_INCLUDES} )
446
- set (CMAKE_REQUIRED_INCLUDES ${MPI_Fortran_INCLUDE_PATH } )
494
+ set (CMAKE_REQUIRED_INCLUDES ${MPI_Fortran_INCLUDE_DIRS } )
447
495
set (OLD_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} )
448
496
set (CMAKE_REQUIRED_LIBRARIES ${MPI_Fortran_LIBRARIES} )
449
497
include (CheckFortranSourceCompiles )
@@ -463,6 +511,7 @@ end program
463
511
"
464
512
MPI_Fortran_INCLUDE_COMPILES )
465
513
set (CMAKE_REQUIRED_FLAGS ${OLD_REQUIRED_FLAGS} )
514
+ set (CMAKE_REQUIRED_DEFINITIONS ${OLD_REQUIRED_DEFINITIONS} )
466
515
set (CMAKE_REQUIRED_INCLUDES ${OLD_INCLUDES} )
467
516
set (CMAKE_REQUIRED_LIBRARIES ${OLD_LIBRARIES} )
468
517
unset (OLD_REQUIRED_FLAGS )
@@ -487,26 +536,6 @@ else()
487
536
)
488
537
endif ()
489
538
490
- #----------------
491
- # Setup MPI flags
492
- #----------------
493
- if (NOT CMAKE_C_COMPILE_FLAGS )
494
- set (CMAKE_C_COMPILE_FLAGS "" )
495
- endif ()
496
- if (NOT CMAKE_C_LINK_FLAGS )
497
- set (CMAKE_C_LINK_FLAGS "" )
498
- endif ()
499
- if (NOT CMAKE_Fortran_COMPILE_FLAGS )
500
- set (CMAKE_Fortran_COMPILE_FLAGS "" )
501
- endif ()
502
- if (NOT CMAKE_Fortran_LINK_FLAGS )
503
- set (CMAKE_Fortran_LINK_FLAGS "" )
504
- endif ()
505
- set (CMAKE_C_COMPILE_FLAGS "${CMAKE_C_COMPILE_FLAGS} ${MPI_C_COMPILE_FLAGS} " )
506
- set (CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} ${MPI_C_LINK_FLAGS} " )
507
- set (CMAKE_Fortran_COMPILE_FLAGS "${CMAKE_Fortran_COMPILE_FLAGS} ${MPI_Fortran_COMPILE_FLAGS} " )
508
- set (CMAKE_Fortran_LINK_FLAGS "${CMAKE_Fortran_LINK_FLAGS} ${MPI_Fortran_LINK_FLAGS} " )
509
-
510
539
#---------------------------------------------------
511
540
# Use standardized GNU install directory conventions
512
541
#---------------------------------------------------
@@ -531,9 +560,13 @@ if(APPLE)
531
560
find_program (CODESIGN codesign )
532
561
endif ()
533
562
563
+ # We need bash, even on windows, for now at least. A light version like Git-Bash works best,
564
+ # WSL dumps you into your home directory and there's nothing you can do about it.
565
+ find_program (BASH_EXECUTABLE bash
566
+ REQUIRED )
534
567
function (caf_compile_executable target main_depend )
535
568
set (includes "" )
536
- foreach (includedir ${MPI_Fortran_INCLUDE_PATH } )
569
+ foreach (includedir ${MPI_Fortran_INCLUDE_DIRS } )
537
570
list (APPEND includes "-I${includedir} " )
538
571
endforeach ()
539
572
string (TOUPPER "${CMAKE_BUILD_TYPE} " build_type )
@@ -544,7 +577,7 @@ function(caf_compile_executable target main_depend)
544
577
list (APPEND localDefs "-D${d} " )
545
578
endforeach ()
546
579
add_custom_command (OUTPUT "${target} "
547
- COMMAND "${CMAKE_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} /caf"
580
+ COMMAND "${BASH_EXECUTABLE} " " ${ CMAKE_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} /caf"
548
581
${includes} ${localDefs} ${config_Fortran_flags}
549
582
-o "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /${target} "
550
583
"${CMAKE_CURRENT_SOURCE_DIR} /${main_depend} "
@@ -588,10 +621,11 @@ endfunction()
588
621
#-----------------------------------------------
589
622
590
623
find_program (style_pl style.pl "${CMAKE_SOURCE_DIR} /developer-scripts/" )
624
+ find_package (Perl )
591
625
function (check_script_style script_full_path )
592
- if (style_pl )
626
+ if (style_pl AND PERL_FOUND )
593
627
add_test (NAME "style:${script_full_path} "
594
- COMMAND "${style_pl} " "${script_full_path} " )
628
+ COMMAND "${PERL_EXECUTABLE} " " ${ style_pl} " "${script_full_path} " )
595
629
endif ()
596
630
endfunction ()
597
631
@@ -703,9 +737,9 @@ function(add_caf_test name num_caf_img test_target)
703
737
endif ()
704
738
set (test_parameters -np ${num_caf_img} ${test_parameters} )
705
739
if (DEFINED ARGN )
706
- add_test (NAME ${name} COMMAND "bash " "${CMAKE_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} /cafrun" ${test_parameters} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /${test_target} " ${ARGN} )
740
+ add_test (NAME ${name} COMMAND "${BASH_EXECUTABLE} " "${CMAKE_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} /cafrun" ${test_parameters} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /${test_target} " ${ARGN} )
707
741
else ()
708
- add_test (NAME ${name} COMMAND "bash " "${CMAKE_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} /cafrun" ${test_parameters} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /${test_target} " )
742
+ add_test (NAME ${name} COMMAND "${BASH_EXECUTABLE} " "${CMAKE_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} /cafrun" ${test_parameters} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /${test_target} " )
709
743
endif ()
710
744
set_property (TEST ${name} PROPERTY PASS_REGULAR_EXPRESSION "Test passed." )
711
745
endfunction (add_caf_test )
0 commit comments