-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCMakeLists.txt
901 lines (799 loc) · 34.2 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
# Albany 3.0: Copyright 2016 National Technology & Engineering Solutions of Sandia, LLC (NTESS). This Software is
# released under the BSD license detailed in the file license.txt in the top-level Albany directory.
#
# CMAKE File for Albany building against an installed Trilinos
cmake_minimum_required(VERSION 3.17.0)
include(CMakeDependentOption)
option(USE_NEW_POLICY_CMP0060 "Flag to turn on new behavior for policy CMP0060" OFF)
if(USE_NEW_POLICY_CMP0060)
cmake_policy(SET CMP0060 NEW)
endif()
OPTION (USE_NEW_POLICY_CMP0057 "Flag to turn on new behavior for policy CMP0057" ON)
IF (USE_NEW_POLICY_CMP0057)
CMAKE_POLICY(SET CMP0057 NEW)
ENDIF()
if(NOT DEFINED SET_COMPILERS_AUTOMATICALLY)
set(SET_COMPILERS_AUTOMATICALLY TRUE)
endif()
if(NOT SET_COMPILERS_AUTOMATICALLY)
message("Experimental configuration.")
project(Albany CXX C Fortran)
endif()
# Advertise that we support shared libs
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
# Disable Kokkos deprecation warnings
set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL
"Disable C++ extensions (to avoid warnings from Kokkos)")
if(SET_COMPILERS_AUTOMATICALLY)
project(Albany CXX C)
endif()
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
MESSAGE(" +----------------------------------+")
MESSAGE(" | Installation details |")
MESSAGE(" +----------------------------------+")
MESSAGE(" | - Prefix: ${CMAKE_INSTALL_PREFIX}")
MESSAGE(" | - Binaries dir: ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
MESSAGE(" | - Headers dir: ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
MESSAGE(" | - Libraries dir: ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
MESSAGE(" +----------------------------------+")
# Get Trilinos as one entity
set (ALBANY_TRILINOS_DIR "" CACHE STRING "Location of the Trilinos installation folder")
if (ALBANY_TRILINOS_DIR)
list(PREPEND CMAKE_PREFIX_PATH ${ALBANY_TRILINOS_DIR})
endif()
message ("-- Looking for trilinos installation ...")
message (" ALBANY_TRILINOS_DIR: ${ALBANY_TRILINOS_DIR}")
find_package(Trilinos 16.1 REQUIRED)
message("-- Looking for trilinos installation ... Found.\n")
# Trilinos_BIN_DIRS probably should be defined in the Trilinos config. Until it is, set it here.
# This is needed to find SEACAS tools used during testing (epu, etc).
SET(Trilinos_BIN_DIR "${Trilinos_INSTALL_DIR}/bin")
# Set Trilinos commit id
IF(EXISTS "${Trilinos_INSTALL_DIR}/TrilinosRepoVersion.txt")
FILE(STRINGS "${Trilinos_INSTALL_DIR}/TrilinosRepoVersion.txt" TRILINOS_VERSION_FILE)
SET(TRILINOS_GIT_COMMIT_ID_LINE_LOC 1)
LIST(GET TRILINOS_VERSION_FILE ${TRILINOS_GIT_COMMIT_ID_LINE_LOC} TRILINOS_GIT_COMMIT_ID_LINE)
STRING(REGEX MATCH "^[^ ]+" Trilinos_GIT_COMMIT_ID ${TRILINOS_GIT_COMMIT_ID_LINE})
SET(ALBANY_TRILINOS_GIT_COMMIT_ID ${Trilinos_GIT_COMMIT_ID})
ENDIF()
IF(EXISTS "${Trilinos_INCLUDE_DIRS}/KokkosCore_config.h")
FILE(READ "${Trilinos_INCLUDE_DIRS}/KokkosCore_config.h" KOKKOS_CORE_CONFIG_FILE)
STRING(REGEX MATCH "#define KOKKOS_ENABLE_OPENMP" ALBANY_ENABLE_OPENMP ${KOKKOS_CORE_CONFIG_FILE})
IF(ALBANY_ENABLE_OPENMP)
MESSAGE("-- Kokkos is configured to use OpenMP, Albany will also.")
ENDIF()
STRING(REGEX MATCH "#define KOKKOS_ENABLE_CUDA" ALBANY_ENABLE_CUDA ${KOKKOS_CORE_CONFIG_FILE})
IF(ALBANY_ENABLE_CUDA)
MESSAGE("-- Kokkos is configured to use CUDA, Albany will also.")
STRING(REGEX MATCH "#define KOKKOS_COMPILER_CUDA_VERSION ([0-9]*)" _ ${KOKKOS_CORE_CONFIG_FILE})
ENDIF()
ELSE()
MESSAGE(FATAL_ERROR "\nError: ${Trilinos_INCLUDE_DIRS}/KokkosCore_config.h not found!")
ENDIF()
OPTION (ALBANY_SUPPRESS_TRILINOS_WARNINGS "Whether or not Trilinos headers should be treated as 'system' headers (hence, without issuing warnings)" ON)
message("| Trilinos installation details")
message("+-----------------------------------------")
message("| Trilinos_DIR: ${Trilinos_DIR}")
message("| Trilinos_CMAKE_BUILD_TYPE: ${Trilinos_CMAKE_BUILD_TYPE}")
message("| Trilinos_VERSION: ${Trilinos_VERSION}")
message("| Trilinos_GIT_COMMIT_ID: ${Trilinos_GIT_COMMIT_ID}")
message("| Trilinos_BIN_DIR: ${Trilinos_BIN_DIR}")
message("| Trilinos_BUILD_SHARED_LIBS: ${Trilinos_BUILD_SHARED_LIBS}")
message("| Kokkos executions spaces:")
message("| Kokkos_ENABLE_SERIAL: ${Kokkos_ENABLE_SERIAL}")
message("| Kokkos_ENABLE_OpenMP: ${Kokkos_ENABLE_OPENMP}")
message("| Kokkos_ENABLE_CUDA: ${Kokkos_ENABLE_CUDA}")
message("| Kokkos_ENABLE_HIP: ${Kokkos_ENABLE_HIP}")
MESSAGE("| Trilinos_PACKAGE_LIST = ${Trilinos_PACKAGE_LIST}")
MESSAGE("| Trilinos_CXX_COMPILER_FLAGS = ${Trilinos_CXX_COMPILER_FLAGS}")
message("+-----------------------------------------\n")
# Compress Trilinos lists that are used
list(REVERSE Trilinos_INCLUDE_DIRS)
list(REMOVE_DUPLICATES Trilinos_INCLUDE_DIRS)
list(REVERSE Trilinos_INCLUDE_DIRS)
list(REVERSE Trilinos_TPL_INCLUDE_DIRS)
list(REMOVE_DUPLICATES Trilinos_TPL_INCLUDE_DIRS)
list(REVERSE Trilinos_TPL_INCLUDE_DIRS)
list(REVERSE Trilinos_LIBRARIES)
list(REMOVE_DUPLICATES Trilinos_LIBRARIES)
list(REVERSE Trilinos_LIBRARIES)
list(REVERSE Trilinos_TPL_LIBRARIES)
list(REMOVE_DUPLICATES Trilinos_TPL_LIBRARIES)
list(REVERSE Trilinos_TPL_LIBRARIES)
list(FIND Trilinos_PACKAGE_LIST STKClassic STKClassic_List_ID)
if(STKClassic_List_ID GREATER -1)
message(FATAL_ERROR "STKClassic is no longer used and conflicts with STKIo and STKMesh.")
endif()
# Set Albany branch and commit id
EXECUTE_PROCESS(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ALBANY_GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
EXECUTE_PROCESS(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ALBANY_GIT_COMMIT_ID
OUTPUT_STRIP_TRAILING_WHITESPACE
)
message("\n +-----------------------------------------")
message(" | Albany version details:")
message(" +-----------------------------------------")
message(" | ALBANY_GIT_BRANCH = ${ALBANY_GIT_BRANCH}")
message(" | ALBANY_GIT_COMMIT_ID = ${ALBANY_GIT_COMMIT_ID}")
message(" +-----------------------------------------\n")
# Optional Installation helpers Note that some of this functionality depends on CMAKE > 2.8.8
set(INSTALL_ALBANY
FALSE
CACHE BOOL "Whether Albany should be installed")
if(INSTALL_ALBANY)
message("")
message("Installation files for Albany will be created")
message("-- install location = ${CMAKE_INSTALL_PREFIX}")
message("")
set(BINARY_INSTALL_DIR bin)
set(INCLUDE_INSTALL_DIR include)
set(LIB_INSTALL_DIR lib)
include(CMakePackageConfigHelpers)
endif()
if(SET_COMPILERS_AUTOMATICALLY)
message("Setting and checking of compilers:")
set(CMAKE_CXX_COMPILER ${Trilinos_CXX_COMPILER})
set(CMAKE_C_COMPILER ${Trilinos_C_COMPILER})
set(CMAKE_Fortran_COMPILER ${Trilinos_Fortran_COMPILER})
else()
# Make sure the compilers match.
message("Checking compilers:")
if(NOT ${Trilinos_CXX_COMPILER} STREQUAL ${CMAKE_CXX_COMPILER})
message(
FATAL_ERROR
"C++ compilers don't match (Trilinos: ${Trilinos_CXX_COMPILER}, ${PROJECT_NAME}: ${CMAKE_CXX_COMPILER}).")
endif()
if(NOT ${Trilinos_C_COMPILER} STREQUAL ${CMAKE_C_COMPILER})
message(
FATAL_ERROR "C compilers don't match (Trilinos: ${Trilinos_C_COMPILER}, ${PROJECT_NAME}: ${CMAKE_C_COMPILER}).")
endif()
if(NOT ${Trilinos_Fortran_COMPILER} STREQUAL ${CMAKE_Fortran_COMPILER})
message(
FATAL_ERROR
"Fortran compilers don't match (Trilinos: ${Trilinos_Fortran_COMPILER}, ${PROJECT_NAME}: ${CMAKE_Fortran_COMPILER})."
)
endif()
set(Trilinos_CXX_COMPILER_ID ${CMAKE_CXX_COMPILER_ID})
set(Trilinos_C_COMPILER_ID ${CMAKE_C_COMPILER_ID})
set(Trilinos_Fortran_COMPILER_ID ${CMAKE_Fortran_COMPILER_ID})
endif()
# Build Albany as shared libraries if Trilinos was compiled that way
if(Trilinos_BUILD_SHARED_LIBS)
set(Albany_LIBRARY_TYPE SHARED)
set(BUILD_SHARED_LIBS ON)
message("-- Building Albany with shared libraries")
else(Trilinos_BUILD_SHARED_LIBS)
set(Albany_LIBRARY_TYPE STATIC)
endif(Trilinos_BUILD_SHARED_LIBS)
OPTION(Albany_BUILD_STATIC_EXE "Flag to turn on building of static executables in Albany" OFF)
IF(NOT BUILD_SHARED_LIBS AND Albany_BUILD_STATIC_EXE)
MESSAGE("-- Building Albany with static executables")
ENDIF(NOT BUILD_SHARED_LIBS AND Albany_BUILD_STATIC_EXE)
# Option to turn on and off deprecation warnings
option(Albany_DEPRECATED_DECLARATIONS "Flag to turn on warnings for deprecated code" ON)
if(Albany_DEPRECATED_DECLARATIONS)
set(ALBANY_ENABLE_DEPRECATED ON)
message("-- Deprecated code warnings Enabled")
else()
message("-- Deprecated code warnings are NOT Enabled.")
endif()
# End of setup and error checking NOTE: PROJECT command checks for compilers, so this statement is moved AFTER setting
# CMAKE_CXX_COMPILER from Trilinos
# AGS: Adding these lines so Ctest can be run to submit to cdash dashboard Uses CTestConfig.cmake file for Cdash info.
enable_testing()
include(CTest)
# Make Albany inherit Trilinos compiler flags. The most important are the presence or absence of -NDEBUG (which can
# affect linking for complicated reasons) and -std=c++11.
set(CMAKE_CXX_FLAGS "${Trilinos_CXX_COMPILER_FLAGS} ${CMAKE_CXX_FLAGS}")
# GAH - temporarily set Albany flags for clang debugging SET(CMAKE_CXX_FLAGS "-ggdb -std=c++11 -O2 -march=native
# -DNDEBUG")
if(SET_COMPILERS_AUTOMATICALLY)
set(CMAKE_AR ${Trilinos_AR})
set(CMAKE_LINKER ${Trilinos_LINKER})
endif()
# Compiler details
set(ALBANY_CXX_COMPILER_ID ${CMAKE_CXX_COMPILER_ID})
message("-- ALBANY_CXX_COMPILER_ID = ${ALBANY_CXX_COMPILER_ID}")
set(ALBANY_CXX_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION})
message("-- ALBANY_CXX_COMPILER_VERSION = ${ALBANY_CXX_COMPILER_VERSION}")
if(EXISTS "${Trilinos_INCLUDE_DIRS}/KokkosCore_config.h")
file(READ "${Trilinos_INCLUDE_DIRS}/KokkosCore_config.h" KOKKOS_CORE_CONFIG_FILE)
set(ALBANY_ENABLE_OPENMP OFF)
if(ALBANY_ENABLE_OPENMP)
message("-- Kokkos is configured to use OpenMP, Albany will also.")
endif()
else()
message(FATAL_ERROR "\nError: ${Trilinos_INCLUDE_DIRS}/KokkosCore_config.h not found!")
endif()
message("End of compiler details\n")
# Check for some required Trilinos package dependencies (Piro, Phalanx) ##
message("Checking Trilinos build for required and optional packages")
# ######################################################################################################################
# Check REQUIRED packages ###
# ######################################################################################################################
message("\n **********************************")
message(" *** Required Trilinos Packages ***")
message(" **********************************\n")
# Piro
list(FIND Trilinos_PACKAGE_LIST Piro Piro_List_ID)
if(Piro_List_ID GREATER -1)
message("-- Looking for Piro (required) in Trilinos ... Found!")
else()
message("-- Looking for Piro (required) in Trilinos ... NOT Found!")
message(FATAL_ERROR "Albany REQUIRES Piro. See file trilinos-cmake in doc directory.")
endif()
# Phalanx
list(FIND Trilinos_PACKAGE_LIST Phalanx Phalanx_List_ID)
if(Piro_List_ID GREATER -1)
message("-- Looking for Phalanx (required) in Trilinos ... Found!")
else()
message("-- Looking for Phalanx (required) in Trilinos ... NOT Found!")
message(FATAL_ERROR "Albany REQUIRES Phalanx. See file trilinos-cmake in doc directory.")
endif()
# NOX
list(FIND Trilinos_PACKAGE_LIST NOX NOX_List_ID)
if(Piro_List_ID GREATER -1)
message("-- Looking for NOX (required) in Trilinos ... Found!")
else()
message("-- Looking for NOX (required) in Trilinos ... NOT Found!")
message(FATAL_ERROR "Albany REQUIRES NOX. See file trilinos-cmake in doc directory.")
endif()
# ThyraTpetraAdapters
list(FIND Trilinos_PACKAGE_LIST ThyraTpetraAdapters ThyraTpetraAdapters_List_ID)
if(Piro_List_ID GREATER -1)
message("-- Looking for ThyraTpetraAdapters (required) in Trilinos ... Found!")
else()
message("-- Looking for ThyraTpetraAdapters (required) in Trilinos ... NOT Found!")
message(FATAL_ERROR "Albany REQUIRES ThyraTpetraAdapters. See file trilinos-cmake in doc directory.")
endif()
# Intrepid2
list(FIND Trilinos_PACKAGE_LIST Intrepid2 Intrepid2_List_ID)
if(Piro_List_ID GREATER -1)
message("-- Looking for Intrepid2 (required) in Trilinos ... Found!")
else()
message("-- Looking for Intrepid2 (required) in Trilinos ... NOT Found!")
message(FATAL_ERROR "Albany REQUIRES Intrepid2. See file trilinos-cmake in doc directory.")
endif()
# MiniTensor
list(FIND Trilinos_PACKAGE_LIST MiniTensor MiniTensor_List_ID)
if(Piro_List_ID GREATER -1)
message("-- Looking for MiniTensor (required) in Trilinos ... Found!")
else()
message("-- Looking for MiniTensor (required) in Trilinos ... NOT Found!")
message(FATAL_ERROR "Albany REQUIRES MiniTensor. See file trilinos-cmake in doc directory.")
endif()
# ######################################################################################################################
# Check OPTIONAL packages ###
# ######################################################################################################################
message("\n **********************************")
message(" *** Optional Trilinos Packages ***")
message(" **********************************\n")
# Check for some OPTIONAL trilinos packages, which set DEFINES in Alany build ###
# MPI check -- defaults to TRUE MESSAGE("-- Checking if MPI is enabled in Trilinos:")
# set dependency on stk
list(FIND Trilinos_PACKAGE_LIST STK have_stk_List_ID)
if(have_stk_List_ID GREATER -1)
message("-- Looking for STK: Found")
# set dependency on SEACAS, for I/O via stk_io MESSAGE("-- Looking for SEACAS:")
list(FIND Trilinos_PACKAGE_LIST SEACASIoss SEACASIoss_List_ID)
if(SEACASIoss_List_ID GREATER -1)
message(" -- Looking for SEACASIoss: Found")
list(FIND SEACASIoss_LIBRARIES Iopx Iopx_List_ID)
if(Iopx_List_ID GREATER -1)
message(" -- Looking for Iopx: Found")
set(ALBANY_IOPX TRUE)
else()
message(" -- Looking for Iopx: NOT found.")
set(ALBANY_IOPX FALSE)
endif()
else()
message(FATAL_ERROR "SEACAS is required.")
endif()
# set optional dependency on stk_percept, for uniform adaptivity
list(FIND Trilinos_LIBRARIES stk_percept stk_percept_List_ID)
if(stk_percept_List_ID GREATER -1)
message(" -- Looking for stk_percept: Found")
set(ALBANY_STK_PERCEPT TRUE)
else()
message(" -- Looking for stk_percept: NOT found.")
set(ALBANY_STK_PERCEPT FALSE)
endif()
else()
message(FATAL_ERROR "STK is required.")
endif()
# set optional dependency on Zoltan, for partitioning MESSAGE("-- Looking for Zoltan:")
list(FIND Trilinos_PACKAGE_LIST Zoltan Zoltan_List_ID)
if(Zoltan_List_ID GREATER -1)
set(ALBANY_ZOLTAN TRUE)
set(ALBANY_STK_REBALANCE TRUE)
message("-- Looking for Zoltan: Found.")
else()
message("-- Looking for Zoltan: NOT found.")
set(ALBANY_ZOLTAN FALSE)
set(ALBANY_STK_REBALANCE FALSE)
endif()
# set optional dependency on Amesos2, for solving and preconditioning
list(FIND Trilinos_PACKAGE_LIST Amesos2 Amesos2_List_ID)
if(Amesos2_List_ID GREATER -1)
message("-- Looking for Amesos2: Found.")
set(ALBANY_AMESOS2 TRUE)
# We can't rely on Amesos2_TPL_LIST any longer; KLU2 and Basker are not TPLs. These will soon be enabled by default in
# Amesos2. So we'll just assume we have a coarse direct solver.
set(ALBANY_AMESOS2_OPERATIONAL_SOLVER TRUE)
else()
message("-- Looking for Amesos2: NOT found.")
set(ALBANY_AMESOS2 FALSE)
set(ALBANY_AMESOS2_OPERATIONAL_SOLVER FALSE)
endif()
# set optional dependency on Ifpack2, for preconditioning
list(FIND Trilinos_PACKAGE_LIST Ifpack2 Ifpack2_List_ID)
if(Ifpack2_List_ID GREATER -1)
message("-- Looking for Ifpack2: Found.")
else()
message(FATAL_ERROR "Ifpack2 is required.")
endif()
# set optional dependency on MueLu, for preconditioning
list(FIND Trilinos_PACKAGE_LIST MueLu MueLu_List_ID)
if(MueLu_List_ID GREATER -1)
message("-- Looking for MueLu: Found.")
set(ALBANY_MUELU TRUE)
list(FIND MueLu_PACKAGE_LIST Ifpack2 MueLu_Ifpack2_List_ID)
list(FIND MueLu_PACKAGE_LIST Amesos2 MueLu_Amesos2_List_ID)
if(MueLu_Ifpack2_List_ID GREATER -1
AND MueLu_Amesos2_List_ID GREATER -1
AND ALBANY_AMESOS2_OPERATIONAL_SOLVER)
message(" -- MueLu tests enabled")
set(ALBANY_MUELU_EXAMPLES TRUE)
else()
message(" -- MueLu tests NOT enabled. Ifpack2 and Amesos2 compiled with an operational solver are required.")
set(ALBANY_MUELU_EXAMPLES FALSE)
endif()
else()
message("-- Looking for MueLu: NOT found.")
set(ALBANY_MUELU FALSE)
set(ALBANY_MUELU_EXAMPLES FALSE)
endif()
# set optional dependency on FROSch, for preconditioning
list(FIND Trilinos_PACKAGE_LIST ShyLU_DDFROSch FROSch_List_ID)
if(FROSch_List_ID GREATER -1)
message("-- Looking for FROSch: Found.")
set(ALBANY_FROSCH TRUE)
else()
message("-- Looking for FROSch: NOT found.")
set(ALBANY_FROSCH FALSE)
endif()
list(FIND Trilinos_PACKAGE_LIST Rythmos Rythmos_List_ID)
if(Rythmos_List_ID GREATER -1)
message("-- Looking for Rythmos: Found.")
set(ALBANY_RYTHMOS TRUE)
else()
message("-- Looking for Rythmos: NOT found.")
set(ALBANY_RYTHMOS FALSE)
endif()
# Check if Trilinos has ROL
list(FIND Trilinos_PACKAGE_LIST ROL ROL_List_ID)
if(ROL_List_ID GREATER -1)
message("-- Looking for ROL in Trilinos: Found")
set(ALBANY_ROL TRUE)
else()
message("-- Looking for ROL in Trilinos: NOT found.")
set(ALBANY_ROL FALSE)
endif()
# Check if Trilinos has DTK
list(FIND Trilinos_PACKAGE_LIST DataTransferKit DataTransferKit_List_ID)
if(DataTransferKit_List_ID GREATER -1)
message("-- Looking for DTK in Trilinos: Found")
set(ALBANY_DTK TRUE)
else()
message("-- Looking for DTK in Trilinos: NOT found.")
set(ALBANY_DTK FALSE)
endif()
# Check if Trilinos has Tempus
list(FIND Trilinos_PACKAGE_LIST Tempus Tempus_List_ID)
if(Tempus_List_ID GREATER -1)
message("-- Looking for Tempus in Trilinos: Found")
else()
message(FATAL_ERROR "Tempus is required.")
endif()
# ######################################################################################################################
# Check for optional physics sets in Albany ###
# ######################################################################################################################
message("\nChecking which Albany physics sets are enabled:")
# set optional dependency on demoPDEs, defaults to Enabled
option(ENABLE_DEMO_PDES "Flag to turn on demonstration PDEs problems" ON)
if(ENABLE_DEMO_PDES)
message("-- DEMO_PDES is Enabled")
set(ALBANY_DEMO_PDES TRUE)
else()
message("-- DEMO_PDES is NOT Enabled.")
set(ALBANY_DEMO_PDES FALSE)
endif()
option(DISABLE_LCM_EXODIFF_SENSITIVE_TESTS "Flag to turn off LCM exodiff sensitive tests" OFF)
set(LCM_TEST_EXES TRUE)
if(NOT ALBANY_ROL)
message(FATAL_ERROR "ROL not installed from Trilinos (LCM needs ROL)")
endif()
if(DISABLE_LCM_EXODIFF_SENSITIVE_TESTS)
message(" -- LCM exodiff sensitive tests are DISABLED!")
set(DISABLE_LCM_EXODIFF_SENSITIVE_TESTS TRUE)
endif()
# set optional dependency of mesh on parameters, defaults to Disabled
option(ENABLE_MESH_DEPENDS_ON_PARAMETERS "Flag to turn on dependency of mesh on parameters, e.g for shape optimization"
OFF)
if(ENABLE_MESH_DEPENDS_ON_PARAMETERS)
message("-- MESH_DEPENDS_ON_PARAMETERS is Enabled")
set(ALBANY_MESH_DEPENDS_ON_PARAMETERS TRUE)
else()
message("-- MESH_DEPENDS_ON_PARAMETERS is NOT Enabled.")
set(ALBANY_MESH_DEPENDS_ON_PARAMETERS FALSE)
endif()
# set optional dependency of mesh on solution, defaults to Disabled
option(ENABLE_MESH_DEPENDS_ON_SOLUTION "Flag to turn on dependency of mesh on solution" OFF)
if(ENABLE_MESH_DEPENDS_ON_SOLUTION)
message("-- MESH_DEPENDS_ON_SOLUTION is Enabled")
set(ALBANY_MESH_DEPENDS_ON_SOLUTION TRUE)
else()
message("-- MESH_DEPENDS_ON_SOLUTION is NOT Enabled.")
set(ALBANY_MESH_DEPENDS_ON_SOLUTION FALSE)
endif()
# set optional dependency of dist parameters on solution, defaults to Disabled
option(ENABLE_PARAMETERS_DEPEND_ON_SOLUTION "Flag to turn on dependency of mesh on solution" OFF)
if(ENABLE_PARAMETERS_DEPEND_ON_SOLUTION)
message("-- PARAMETERS_DEPEND_ON_SOLUTION is Enabled")
set(ALBANY_PARAMETERS_DEPEND_ON_SOLUTION TRUE)
elseif(ENABLE_MESH_DEPENDS_ON_SOLUTION)
message("-- PARAMETERS_DEPEND_ON_SOLUTION is Enabled because MESH_DEPENDS_ON_SOLUTION is enabled")
set(ALBANY_PARAMETERS_DEPEND_ON_SOLUTION TRUE)
else()
message("-- PARAMETERS_DEPEND_ON_SOLUTION is NOT Enabled.")
set(ALBANY_PARAMETERS_DEPEND_ON_SOLUTION FALSE)
endif()
# optional dependency on LAME, defaults to FALSE
option(ENABLE_LAME "Flag to turn on LAME material library source code" OFF)
if(ENABLE_LAME)
message("-- LAME is enabled")
set(ALBANY_LAME TRUE)
# The Sierra math toolkit is needed for LAME
if(NOT MATH_TOOLKIT_INCLUDE_DIR)
message("\nError: MATH_TOOLKIT_INCLUDE_DIR not defined\n")
else()
message(" -- MATH_TOOLKIT_INCLUDE_DIR ${MATH_TOOLKIT_INCLUDE_DIR}")
endif()
if(NOT MATH_TOOLKIT_LIBRARY_DIR)
message("\nError: MATH_TOOLKIT_LIBRARY_DIR not defined\n")
else()
message(" -- MATH_TOOLKIT_LIBRARY_DIR ${MATH_TOOLKIT_LIBRARY_DIR}")
endif()
# LAME itself
if(NOT LAME_INCLUDE_DIR)
message("\nError: LAME_INCLUDE_DIR not defined\n")
else()
message(" -- LAME_INCLUDE_DIR ${LAME_INCLUDE_DIR}")
endif()
if(NOT LAME_LIBRARY_DIR)
message("\nError: LAME_LIBRARY_DIR not defined\n")
else()
message(" -- LAME_LIBRARY_DIR ${LAME_LIBRARY_DIR}")
endif()
else()
message("-- LAME is NOT Enabled.")
set(ALBANY_LAME FALSE)
endif()
# optional dependency on LAMENT, defaults to FALSE
option(ENABLE_LAMENT "Flag to turn on LAMENT lmaterial library source code" OFF)
if(ENABLE_LAMENT)
message("-- LAMENT is enabled")
set(ALBANY_LAMENT TRUE)
if(NOT LAMENT_INCLUDE_DIR)
message("\nError: LAMENT_INCLUDE_DIR not defined\n")
else()
message(" -- LAMENT_INCLUDE_DIR ${LAMENT_INCLUDE_DIR}")
endif()
if(NOT LAMENT_LIBRARY_DIR)
message("\nError: LAMENT_LIBRARY_DIR not defined\n")
else()
message(" -- LAMENT_LIBRARY_DIR ${LAMENT_LIBRARY_DIR}")
endif()
else()
message("-- LAMENT is NOT Enabled.")
set(ALBANY_LAMENT FALSE)
endif()
option(ENABLE_OMEGA_H "Enable Omega_h dependency for adaptation" OFF)
set(ALBANY_OMEGA_H_DIR
""
CACHE PATH "Path to Omega_h installation")
if(ENABLE_OMEGA_H)
find_package(Omega_h 9.0.0 REQUIRED PATHS "${ALBANY_OMEGA_H_DIR}")
message(STATUS "Omega_h found at ${Omega_h_CONFIG}")
set(ALBANY_OMEGA_H TRUE)
endif()
# Add option for CONTACT work, defaults to disabled
option(ENABLE_CONTACT "Flag to turn on CONTACT code in LCM" OFF)
if(ENABLE_CONTACT)
message("-- CONTACT is Enabled")
set(ALBANY_CONTACT TRUE)
else()
message("-- CONTACT is NOT Enabled.")
set(ALBANY_CONTACT FALSE)
endif()
# Other Albany Template Options here:
message("\nAlbany Templated Data Type Options:")
# Set FAD data type
set(ENABLE_FAD_TYPE
"DFad"
CACHE STRING "Sacado forward mode automatic differentiation data type")
if(ENABLE_FAD_TYPE STREQUAL "SFad")
set(ALBANY_FAD_TYPE_SFAD TRUE)
set(ALBANY_SFAD_SIZE
32
CACHE INT "Number of derivative components chosen at compile-time for AD")
message("-- FAD_TYPE is SFad, ALBANY_SFAD_SIZE=${ALBANY_SFAD_SIZE}")
message("---> WARNING: problems with elemental DOFs > ${ALBANY_SFAD_SIZE} will fail")
elseif(ENABLE_FAD_TYPE STREQUAL "SLFad")
set(ALBANY_FAD_TYPE_SLFAD TRUE)
set(ALBANY_SLFAD_SIZE
32
CACHE INT "Maximum number of derivative components chosen at compile-time for AD")
message("-- FAD_TYPE is SLFad, ALBANY_SLFAD_SIZE=${ALBANY_SLFAD_SIZE}")
message("---> WARNING: problems with elemental DOFs > ${ALBANY_SLFAD_SIZE} will fail")
elseif(ENABLE_FAD_TYPE STREQUAL "DFad")
message("-- FAD_TYPE is DFad (default)")
else()
message(FATAL_ERROR "\nError: ENABLE_FAD_TYPE = ${ENABLE_FAD_TYPE} is not recognized!
Options: SFad, SLFad, DFad (default)")
endif()
# Set FAD data type for Tangent
set(ENABLE_TAN_FAD_TYPE
"DFad"
CACHE STRING "Sacado forward mode automatic differentiation data type for Tangent")
if(ENABLE_TAN_FAD_TYPE STREQUAL "SFad")
set(ALBANY_TAN_FAD_TYPE_SFAD TRUE)
set(ALBANY_TAN_SFAD_SIZE
32
CACHE INT "Number of derivative components chosen at compile-time for Tangent AD")
message("-- TAN_FAD_TYPE is SFad, ALBANY_TAN_SFAD_SIZE=${ALBANY_TAN_SFAD_SIZE}")
message("---> WARNING: problems with Tangent elemental DOFs > ${ALBANY_TAN_SFAD_SIZE} will fail")
elseif(ENABLE_TAN_FAD_TYPE STREQUAL "SLFad")
set(ALBANY_TAN_FAD_TYPE_SLFAD TRUE)
set(ALBANY_TAN_SLFAD_SIZE
32
CACHE INT "Maximum number of derivative components chosen at compile-time for Tangent AD")
message("-- TAN_FAD_TYPE is SLFad, ALBANY_TAN_SLFAD_SIZE=${ALBANY_TAN_SLFAD_SIZE}")
message("---> WARNING: problems with Tangent elemental DOFs > ${ALBANY_TAN_SLFAD_SIZE} will fail")
elseif(ENABLE_TAN_FAD_TYPE STREQUAL "DFad")
message("-- TAN_FAD_TYPE is DFad (default)")
else()
message(FATAL_ERROR "\nError: ENABLE_TAN_FAD_TYPE = ${ENABLE_TAN_FAD_TYPE} is not recognized!
Options: SFad, SLFad, DFad")
endif()
# Check if FAD data type is the same
if(ENABLE_FAD_TYPE STREQUAL ENABLE_TAN_FAD_TYPE)
if(ALBANY_FAD_TYPE_SFAD AND NOT ALBANY_SFAD_SIZE EQUAL ALBANY_TAN_SFAD_SIZE)
set(ALBANY_FADTYPE_NOTEQUAL_TANFADTYPE TRUE)
message("-- SFAD_SIZE is not TAN_SFAD_SIZE")
elseif(ALBANY_FAD_TYPE_SLFAD AND NOT ALBANY_SLFAD_SIZE EQUAL ALBANY_TAN_SLFAD_SIZE)
set(ALBANY_FADTYPE_NOTEQUAL_TANFADTYPE TRUE)
message("-- SLFAD_SIZE is not TAN_SLFAD_SIZE")
endif()
else()
set(ALBANY_FADTYPE_NOTEQUAL_TANFADTYPE TRUE)
message("-- FAD_TYPE is not TAN_FAD_TYPE")
endif()
# Disable the RTC capability if Trilinos is not built with Pamgen
list(FIND Trilinos_PACKAGE_LIST Pamgen PAMGEN_List_ID)
if(NOT PAMGEN_List_ID GREATER -1)
set(ALBANY_PAMGEN FALSE)
message("-- Pamgen package not found, disabling run time compiler support.")
else()
set(ALBANY_PAMGEN TRUE)
message("-- Pamgen package found, enabling run time compiler support.")
endif()
# Other Miscellaneous Albany Options here:
message("\nMiscellaneous Albany Options:")
# set optional dependency on the BGL, defaults to Enabled This option is added due to issued with compiling BGL with the
# intel compilers see Trilinos bugzilla bug #6343
#
option(ENABLE_BGL "Flag to turn on the Phalanx graphviz capabilities (dependent on BGL)" ON)
if(ENABLE_BGL)
message("-- BGL is Enabled")
set(ALBANY_BGL TRUE)
else()
message("-- BGL is NOT Enabled. Graph visualization in Phalanx will not be available!")
set(ALBANY_BGL FALSE)
endif()
# Add option to check for hardware floating point exceptions using SSE, defaults to disabled
option(ENABLE_CHECK_FPE "Flag to turn on floating point exception (NAN) checking" OFF)
# Add option to check for hardware floating point exceptions using SSE, defaults to disabled
option(ENABLE_CHECK_FPE "Flag to turn on floating point exception (NAN) checking" OFF)
if(ENABLE_CHECK_FPE)
message("-- FPE checking is Enabled")
set(ALBANY_CHECK_FPE TRUE)
else()
message("-- FPE checking is NOT Enabled.")
set(ALBANY_CHECK_FPE FALSE)
endif()
option(ENABLE_STRONG_FPE_CHECK "Flag to turn on strong checking for floating point exceptions" OFF)
if(ENABLE_STRONG_FPE_CHECK)
message("-- Strong FPE checking is Enabled")
set(ALBANY_STRONG_FPE_CHECK TRUE)
else()
message("-- Strong FPE checking is NOT Enabled.")
set(ALBANY_STRONG_FPE_CHECK FALSE)
endif()
# Add option to set FTZ and DAZ
option(ENABLE_FLUSH_DENORMALS "Flag to turn on FTZ and DAZ" OFF)
if(ENABLE_FLUSH_DENORMALS)
message("-- FTZ/DAZ flags is Enabled")
set(ALBANY_FLUSH_DENORMALS TRUE)
else()
message("-- FTZ/DAZ flags is NOT Enabled.")
set(ALBANY_FLUSH_DENORMALS FALSE)
endif()
option(ENABLE_ALBANY_VERBOSE "Flag to turn on verbose output" OFF)
if(NOT ENABLE_ALBANY_VERBOSE)
message("-- Verbose printing is NOT Enabled")
set(ALBANY_VERBOSE FALSE)
else()
message("-- Verbose printing is Enabled")
set(ALBANY_VERBOSE TRUE)
endif()
# Enhanced debugging option
option(ENABLE_DEBUGGING "Flag to turn on enhanced debugging info" OFF)
if(ENABLE_DEBUGGING)
message("-- Enhanced debugging is Enabled")
set(ALBANY_DEBUG TRUE)
else()
message("-- Enhanced debugging is NOT Enabled.")
set(ALBANY_DEBUG FALSE)
endif()
# Add option to build libraries but not link any executables (for LandIce uner MPAS)
option(ALBANY_LIBRARIES_ONLY "Flag to only build libraries and not link executables" OFF)
if(ALBANY_LIBRARIES_ONLY)
message("-- ALBANY_LIBRARIES_ONLY is ON")
if(LCM_TEST_EXES)
set(LCM_TEST_EXES FALSE)
message("---> Disabling LCM_TEST_EXES")
endif()
endif()
# Set which memory analysis system routines are available.
option(ENABLE_MALLINFO "Use mallinfo() in Albany::printMemoryAnalysis()" off)
option(ENABLE_GETRUSAGE "Use getrusage() in Albany::printMemoryAnalysis()" off)
option(ENABLE_KERNELGETMEMORYSIZE "Use Kernel_GetMemorySize() in Albany::printMemoryAnalysis()" off)
if(ENABLE_MALLINFO)
set(ALBANY_HAVE_MALLINFO TRUE)
message("-- Memory: mallinfo() is Enabled.")
endif()
if(ENABLE_GETRUSAGE)
set(ALBANY_HAVE_GETRUSAGE TRUE)
message("-- Memory: getrusage() is Enabled.")
endif()
if(ENABLE_KERNELGETMEMORYSIZE)
set(ALBANY_HAVE_KERNELGETMEMORYSIZE ON)
message("-- Memory: Kernel_GetMemorySize() is Enabled.")
endif()
# Mesh database tools.
option(ENABLE_MESHDB_TOOLS "Flag to turn on mesh database tools" OFF)
if(ENABLE_MESHDB_TOOLS)
message("-- Mesh database tools are Enabled.")
set(ALBANY_MESHDB_TOOLS TRUE)
endif()
# add a target to generate API documentation with Doxygen
if(NOT DISABLE_DOXYGEN)
find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/albanyMainPage.doc
${CMAKE_CURRENT_BINARY_DIR}/albanyMainPage.doc)
add_custom_target(
doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
endif(DOXYGEN_FOUND)
endif()
# End of CMake options to Albany
add_subdirectory(src)
message("\n ***********************")
message(" *** Testing Options ***")
message(" ***********************\n")
# Add option to enable performance tests. Results are machine-specific
option(ENABLE_PERFORMANCE_TESTS "Flag to turn on Performance Tests" OFF)
if(ENABLE_PERFORMANCE_TESTS)
message("-- Performance Tests are Enabled, adding tests/*/PerformanceTests")
set(ALBANY_PERFORMANCE_TESTS TRUE)
else()
message("-- Performance Tests are NOT Enabled.")
set(ALBANY_PERFORMANCE_TESTS FALSE)
endif()
# Add option to enable performance tests. Results are machine-specific
option(ENABLE_LARGE_TESTS "Run tests from the Albany-large-tests repository" ON)
if(ENABLE_LARGE_TESTS)
message("-- Large Tests are Enabled, adding tests/large/")
set(ALBANY_LARGE_TESTS TRUE)
else()
message("-- Large Tests are NOT Enabled.")
set(ALBANY_LARGE_TESTS FALSE)
endif()
# Set option to disable compiling some code for nightly tests Some code sections take so long to compile with NVCC that
# nightly tests are timing out. This option allows disabling those sections.
option(NIGHTLY_TESTING "Flag to turn off selected code during nightly testing" OFF)
if(NIGHTLY_TESTING)
message("-- NIGHTLY_TESTING is Enabled")
set(ALBANY_NIGHTLY_TESTING TRUE)
else()
message("-- NIGHTLY_TESTING is NOT Enabled.")
set(ALBANY_NIGHTLY_TESTING FALSE)
endif()
# Timeout real long running tests
if(ALBANY_CTEST_TIMEOUT)
message("\n-- Setting maximum test run time to be ${ALBANY_CTEST_TIMEOUT} seconds")
else()
message("\n-- No limits are set on maximum test run time")
endif()
# Make a clean build target for convenience
add_custom_target(
cmake_clean
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/CMakeCache.txt
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/Makefile
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/CTestTestfile.cmake)
option(ALBANY_PARALLEL_ONLY "Only run the parallel tests" OFF)
if(ALBANY_MPI_EXEC)
set(MPIEX ${ALBANY_MPI_EXEC})
else()
set(MPIEX ${Trilinos_MPI_EXEC})
endif()
if(ALBANY_MPI_EXEC_NUMPROCS_FLAG)
set(MPINPF ${ALBANY_MPI_EXEC_NUMPROCS_FLAG})
else()
set(MPINPF ${Trilinos_MPI_EXEC_NUMPROCS_FLAG})
endif()
if(ALBANY_MPI_EXEC_MAX_NUMPROCS)
set(MPIMNP ${ALBANY_MPI_EXEC_MAX_NUMPROCS})
else()
set(MPIMNP ${Trilinos_MPI_EXEC_MAX_NUMPROCS})
endif()
if(ALBANY_MPI_EXEC_LEADING_OPTIONS)
set(MPIPRE ${ALBANY_MPI_EXEC_LEADING_OPTIONS})
separate_arguments(MPIPRE)
endif()
if(ALBANY_MPI_EXEC_TRAILING_OPTIONS)
set(MPIPOST ${ALBANY_MPI_EXEC_TRAILING_OPTIONS})
separate_arguments(MPIPOST)
endif()
set(SERIAL_CALL ${MPIEX} ${MPIPRE} ${MPINPF} 1 ${MPIPOST})
set(PARALLEL_CALL ${MPIEX} ${MPIPRE} ${MPINPF} ${MPIMNP} ${MPIPOST})
string(REPLACE ";" " " SERIAL_CALL_TEXT "${SERIAL_CALL}")
string(REPLACE ";" " " PARALLEL_CALL_TEXT "${PARALLEL_CALL}")
message("-- CTest serial call: ${SERIAL_CALL_TEXT}")
message("-- CTest parallel call: ${PARALLEL_CALL_TEXT}")
# Add option to run any pretest executables in a specific environment (mpiexec.hydra, srun, or other)
if(DEFINED ALBANY_PRETEST_EXEC)
message("-- ALBANY_PRETEST_EXEC is ${ALBANY_PRETEST_EXEC}")
else()
# Not set in configure - set it to be empty
set(ALBANY_PRETEST_EXEC
""
CACHE STRING "Command to use to execute pretests")
endif()
# Add option to specify path to desired SEACAS utils
if(DEFINED ALBANY_SEACAS_PATH)
message("-- ALBANY_SEACAS_PATH is ${ALBANY_SEACAS_PATH}")
endif()
# Add Albany test -- in the "tests" directory
if(ALBANY_LIBRARIES_ONLY)
message("\nALBANY_LIBRARIES_ONLY has been set: turning off all tests.")
else()
add_subdirectory(tests)
endif()
message("\nAnd CMake says...:")