@@ -91,41 +91,6 @@ set(CMAKE_FIND_FRAMEWORK LAST)
91
91
# avoid applying patches twice with FetchContent
92
92
set (FETCHCONTENT_UPDATES_DISCONNECTED ON )
93
93
94
- #
95
- # External dependencies declarations
96
- #
97
-
98
- # cmake-format: off
99
- FetchContent_Declare (
100
- walberla
101
- GIT_REPOSITORY https://i10git.cs.fau.de/walberla/walberla.git
102
- GIT_TAG 0aab9c0af2335b1f6fec75deae06e514ccb233ab
103
- PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR} /cmake/walberla.patch
104
- )
105
- FetchContent_Declare (
106
- stokesian_dynamics
107
- GIT_REPOSITORY https://github.com/hmenke/espresso-stokesian-dynamics.git
108
- GIT_TAG 90f6de70d1c0ac9cf468f2fc90f9c601139e4c88
109
- )
110
- FetchContent_Declare (
111
- caliper
112
- GIT_REPOSITORY https://github.com/LLNL/Caliper.git
113
- GIT_TAG v2.12.1
114
- )
115
- FetchContent_Declare (
116
- heffte
117
- GIT_REPOSITORY https://github.com/icl-utk-edu/heffte.git
118
- GIT_TAG v2.4.1
119
- PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR} /cmake/heffte.patch
120
- )
121
- FetchContent_Declare (
122
- cabana
123
- GIT_REPOSITORY https://github.com/ECP-copa/Cabana.git
124
- GIT_TAG 7914d28708b1c67b40d5743c1fbc09e221144dd3
125
- PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR} /cmake/cabana.patch
126
- )
127
- # cmake-format: on
128
-
129
94
# ##############################################################################
130
95
# User input options
131
96
# ##############################################################################
@@ -351,6 +316,8 @@ target_compile_options(
351
316
$< $< NOT:$< CXX_COMPILER_ID:IntelLLVM> > :-Wno-implicit-fallthrough>
352
317
$< $< NOT:$< CXX_COMPILER_ID:IntelLLVM,GNU> > :-Wno-unused-private-field>
353
318
$< $< AND:$< CXX_COMPILER_ID:GNU> ,$< STREQUAL:${CMAKE_SYSTEM_PROCESSOR} ,arm> > :-Wno-psabi>
319
+ $< $< BOOL:${ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM} > :-Wno-implicit-int-float-conversion>
320
+ $< $< BOOL:${ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM} > :-Wno-float-conversion>
354
321
# warnings are errors
355
322
$< $< BOOL:${ESPRESSO_WARNINGS_ARE_ERRORS} > :-Werror> )
356
323
@@ -484,45 +451,126 @@ endif()
484
451
# Libraries
485
452
#
486
453
487
- if (ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM )
488
- FetchContent_GetProperties (cabana )
489
- set (Cabana_REQUIRE_HEFFTE OFF CACHE BOOL "" )
490
- if (NOT cabana_POPULATED )
491
- FetchContent_MakeAvailable (cabana )
492
- endif ()
493
- find_package (Kokkos REQUIRED )
494
- endif ()
495
-
496
454
if (ESPRESSO_BUILD_WITH_FFTW )
497
455
find_package (FFTW3 REQUIRED )
498
- FetchContent_GetProperties (heffte )
499
- set (Heffte_ENABLE_FFTW on CACHE BOOL "" )
500
- if (ESPRESSO_BUILD_WITH_CUDA )
501
- set (Heffte_ENABLE_CUDA "on" CACHE BOOL "" )
456
+
457
+ if (NOT EXISTS ${FETCHCONTENT_BASE_DIR} /heffte-src )
458
+ find_package (Heffte 2.4.1 QUIET )
502
459
endif ()
503
- if (NOT heffte_POPULATED )
460
+ if (NOT DEFINED Heffte_FOUND OR NOT ${Heffte_FOUND} )
461
+ # cmake-format: off
462
+ FetchContent_Declare (
463
+ heffte
464
+ GIT_REPOSITORY https://github.com/icl-utk-edu/heffte.git
465
+ GIT_TAG v2.4.1
466
+ OVERRIDE_FIND_PACKAGE
467
+ )
468
+ # cmake-format: on
469
+ set (Heffte_ENABLE_FFTW ON CACHE BOOL "" )
470
+ if (ESPRESSO_BUILD_WITH_CUDA )
471
+ set (Heffte_ENABLE_CUDA ON CACHE BOOL "" )
472
+ endif ()
504
473
set (BUILD_SHARED_LIBS ON )
505
474
FetchContent_MakeAvailable (heffte )
506
475
set (BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT} )
476
+ foreach (HEFFTE_MODULE IN ITEMS FFTW CUDA )
477
+ if (TARGET Heffte::${HEFFTE_MODULE} )
478
+ set (Heffte_${HEFFTE_MODULE}_FOUND true )
479
+ endif ()
480
+ endforeach ()
481
+ add_library (Heffte::Heffte INTERFACE IMPORTED GLOBAL )
482
+ target_link_libraries (Heffte::Heffte INTERFACE Heffte )
483
+ install (TARGETS Heffte LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR} " )
484
+ if (ESPRESSO_BUILD_WITH_CLANG_TIDY )
485
+ set (HEFFTE_CXX_CLANG_TIDY "${ESPRESSO_CXX_CLANG_TIDY} " )
486
+ set (SKIP_CLANG_TIDY_CHECKS "" )
487
+ set (SKIP_CLANG_TIDY_CHECKS_CXX "" )
488
+ # silence heFFTe diagnostics
489
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-exception-escape" )
490
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-narrowing-conversions" )
491
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-branch-clone" )
492
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-loop-convert" )
493
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-override" )
494
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-auto" )
495
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-readability-else-after-return" )
496
+ list (APPEND SKIP_CLANG_TIDY_CHECKS
497
+ "-readability-avoid-const-params-in-decls" )
498
+ espresso_override_clang_tidy_checks (
499
+ HEFFTE_CXX_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS} "
500
+ "${SKIP_CLANG_TIDY_CHECKS_CXX} " )
501
+ endif ()
507
502
endif ()
508
- install (TARGETS Heffte LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR} " )
503
+ endif ()
504
+
505
+ if (ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM )
506
+ if (NOT EXISTS ${FETCHCONTENT_BASE_DIR} /kokkos-src )
507
+ find_package (Kokkos 4.3 QUIET )
508
+ endif ()
509
+ if (NOT DEFINED Kokkos_FOUND OR NOT ${Kokkos_FOUND} )
510
+ # cmake-format: off
511
+ FetchContent_Declare (
512
+ kokkos
513
+ GIT_REPOSITORY https://github.com/kokkos/kokkos.git
514
+ GIT_TAG b4f7c84 # version 4.6.1 with patches
515
+ OVERRIDE_FIND_PACKAGE
516
+ )
517
+ # cmake-format: on
518
+ set (BUILD_SHARED_LIBS ON )
519
+ set (CMAKE_SHARED_LIBRARY_PREFIX "lib" )
520
+ FetchContent_MakeAvailable (kokkos )
521
+ set (BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT} )
522
+ set (CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX} " )
523
+ install (TARGETS kokkos LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR} " )
524
+ # install all kokkos shared objects
525
+ foreach (target_name IN LISTS KOKKOS_COMPONENT_LIBRARIES )
526
+ get_target_property (target_type ${target_name} TYPE )
527
+ if (${target_type} STREQUAL "SHARED_LIBRARY" )
528
+ install (TARGETS ${target_name}
529
+ LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR} " )
530
+ endif ()
531
+ endforeach ()
532
+ endif ()
533
+
534
+ if (NOT EXISTS ${FETCHCONTENT_BASE_DIR} /cabana-src )
535
+ find_package (Cabana 0.7.0 QUIET )
536
+ endif ()
537
+ if (NOT DEFINED Cabana_FOUND OR NOT ${Cabana_FOUND} )
538
+ # cmake-format: off
539
+ FetchContent_Declare (
540
+ cabana
541
+ GIT_REPOSITORY https://github.com/ECP-copa/Cabana.git
542
+ GIT_TAG 6647fed3 # 0.7.0 with patches
543
+ PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR} /cmake/cabana.patch
544
+ )
545
+ # cmake-format: on
546
+ set (Cabana_REQUIRE_HEFFTE ${ESPRESSO_BUILD_WITH_FFTW} CACHE BOOL "" )
547
+ FetchContent_MakeAvailable (cabana )
548
+ endif ()
549
+
509
550
if (ESPRESSO_BUILD_WITH_CLANG_TIDY )
510
- set (HEFFTE_CXX_CLANG_TIDY "${ESPRESSO_CXX_CLANG_TIDY} " )
511
- set (SKIP_CLANG_TIDY_CHECKS "" )
512
- set (SKIP_CLANG_TIDY_CHECKS_CXX "" )
513
- # silence heFFTe diagnostics
514
- list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-exception-escape" )
515
- list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-narrowing-conversions" )
516
- list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-branch-clone" )
517
- list (APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-loop-convert" )
518
- list (APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-override" )
519
- list (APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-auto" )
520
- list (APPEND SKIP_CLANG_TIDY_CHECKS "-readability-else-after-return" )
551
+ # silence Kokkos and Cabana diagnostics
552
+ set (CABANA_CXX_CLANG_TIDY "${ESPRESSO_CXX_CLANG_TIDY} " )
553
+ set (CABANA_CUDA_CLANG_TIDY "${ESPRESSO_CUDA_CLANG_TIDY} " )
554
+ unset (SKIP_CLANG_TIDY_CHECKS )
555
+ unset (SKIP_CLANG_TIDY_CHECKS_CXX )
556
+ unset (SKIP_CLANG_TIDY_CHECKS_CUDA )
557
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-*" )
558
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-readability-*" )
559
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-clang-diagnostic-float-conversion" )
521
560
list (APPEND SKIP_CLANG_TIDY_CHECKS
522
- "-readability-avoid-const-params-in-decls" )
561
+ "-clang-diagnostic-implicit-int-float-conversion" )
562
+ list (APPEND SKIP_CLANG_TIDY_CHECKS
563
+ "-bugprone-return-const-ref-from-parameter" )
564
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-narrowing-conversions" )
565
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-sizeof-expression" )
566
+ list (APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-fold-init-type" )
567
+ list (APPEND SKIP_CLANG_TIDY_CHECKS_CUDA "-bugprone-branch-clone" )
523
568
espresso_override_clang_tidy_checks (
524
- HEFFTE_CXX_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS} "
569
+ CABANA_CXX_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS} "
525
570
"${SKIP_CLANG_TIDY_CHECKS_CXX} " )
571
+ espresso_override_clang_tidy_checks (
572
+ CABANA_CUDA_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS} "
573
+ "${SKIP_CLANG_TIDY_CHECKS_CUDA} " )
526
574
endif ()
527
575
endif ()
528
576
@@ -624,13 +672,17 @@ if(ESPRESSO_BUILD_WITH_GSL)
624
672
endif ()
625
673
626
674
if (ESPRESSO_BUILD_WITH_STOKESIAN_DYNAMICS )
627
- FetchContent_GetProperties (stokesian_dynamics )
675
+ # cmake-format: off
676
+ FetchContent_Declare (
677
+ stokesian_dynamics
678
+ GIT_REPOSITORY https://github.com/hmenke/espresso-stokesian-dynamics.git
679
+ GIT_TAG 90f6de70d1c0ac9cf468f2fc90f9c601139e4c88
680
+ )
681
+ # cmake-format: on
628
682
set (STOKESIAN_DYNAMICS 1 )
629
- if (NOT stokesian_dynamics_POPULATED )
630
- set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR} " )
631
- FetchContent_MakeAvailable (stokesian_dynamics )
632
- set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR} " )
633
- endif ()
683
+ set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR} " )
684
+ FetchContent_MakeAvailable (stokesian_dynamics )
685
+ set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR} " )
634
686
endif ()
635
687
636
688
if (ESPRESSO_BUILD_WITH_VALGRIND )
@@ -790,7 +842,14 @@ endif()
790
842
#
791
843
792
844
if (ESPRESSO_BUILD_WITH_WALBERLA )
793
- FetchContent_GetProperties (walberla )
845
+ # cmake-format: off
846
+ FetchContent_Declare (
847
+ walberla
848
+ GIT_REPOSITORY https://i10git.cs.fau.de/walberla/walberla.git
849
+ GIT_TAG 0aab9c0af2335b1f6fec75deae06e514ccb233ab
850
+ PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR} /cmake/walberla.patch
851
+ )
852
+ # cmake-format: on
794
853
string (REGEX REPLACE "([/\\ ]walberla)-src$" "\\ 1-build" walberla_BINARY_DIR
795
854
"${walberla_SOURCE_DIR} " )
796
855
set (WALBERLA_BUILD_TESTS off CACHE BOOL "" )
@@ -816,13 +875,11 @@ if(ESPRESSO_BUILD_WITH_WALBERLA)
816
875
set (WALBERLA_BUILD_WITH_FFTW off CACHE BOOL "" )
817
876
endif ()
818
877
set (WALBERLA_BUILD_WITH_FASTMATH off CACHE BOOL "" )
819
- if (NOT walberla_POPULATED )
820
- set (BUILD_SHARED_LIBS ON )
821
- set (CMAKE_SHARED_LIBRARY_PREFIX "lib" )
822
- FetchContent_MakeAvailable (walberla )
823
- set (BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT} )
824
- set (CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX} " )
825
- endif ()
878
+ set (BUILD_SHARED_LIBS ON )
879
+ set (CMAKE_SHARED_LIBRARY_PREFIX "lib" )
880
+ FetchContent_MakeAvailable (walberla )
881
+ set (BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT} )
882
+ set (CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX} " )
826
883
set (WALBERLA_LIBS
827
884
walberla::core walberla::domain_decomposition walberla::blockforest
828
885
walberla::boundary walberla::field walberla::lbm walberla::timeloop
@@ -868,22 +925,26 @@ if(ESPRESSO_BUILD_WITH_WALBERLA)
868
925
endif ()
869
926
870
927
if (ESPRESSO_BUILD_WITH_CALIPER )
871
- FetchContent_GetProperties (caliper )
928
+ # cmake-format: off
929
+ FetchContent_Declare (
930
+ caliper
931
+ GIT_REPOSITORY https://github.com/LLNL/Caliper.git
932
+ GIT_TAG v2.12.1
933
+ )
934
+ # cmake-format: on
872
935
set (CALIPER_OPTION_PREFIX on CACHE BOOL "" )
873
936
set (CALIPER_WITH_MPI on CACHE BOOL "" )
874
937
set (CALIPER_WITH_NVTX off CACHE BOOL "" )
875
938
set (CALIPER_WITH_CUPTI off CACHE BOOL "" )
876
939
set (CALIPER_INSTALL_CONFIG off CACHE BOOL "" )
877
940
set (CALIPER_INSTALL_HEADERS off CACHE BOOL "" )
878
- if (NOT caliper_POPULATED )
879
- set (BUILD_SHARED_LIBS ON )
880
- set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR} " )
881
- set (CMAKE_SHARED_LIBRARY_PREFIX "lib" )
882
- FetchContent_MakeAvailable (caliper )
883
- set (BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT} )
884
- set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR} " )
885
- set (CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX} " )
886
- endif ()
941
+ set (BUILD_SHARED_LIBS ON )
942
+ set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR} " )
943
+ set (CMAKE_SHARED_LIBRARY_PREFIX "lib" )
944
+ FetchContent_MakeAvailable (caliper )
945
+ set (BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT} )
946
+ set (CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR} " )
947
+ set (CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX} " )
887
948
target_compile_options (caliper-common
888
949
PRIVATE $< $< CXX_COMPILER_ID:GNU> :-Wno-restrict> )
889
950
target_compile_options (
0 commit comments