I compiling PRISMS-PF, a deal.II-based framework on Stampede2 by loading the deal.II module, e.g.:
I have no errors when compiling the core library. But when I do "cmake" for any particular application I run into the following errors (which also cause "make" to fail):
Cannot generate a safe runtime search path for target main because there is
a cycle in the constraint graph:
dir 0 is [/home1/apps/intel18/impi18_0/dealii/9.2.0/lib]
dir 1 is [/opt/apps/intel18/metis/5.0.2/lib]
dir 9 must precede it due to runtime library [libmetis.so]
dir 2 is [/home1/apps/intel18/impi18_0/trilinos/12.18.1/lib]
dir 3 is [/opt/apps/intel18/boost/1.68/lib]
dir 4 is [/opt/apps/intel18/impi18_0/parallel-netcdf/4.6.2/x86_64/lib]
dir 5 is [/opt/intel/compilers_and_libraries_2018.2.199/linux/mpi/intel64/lib]
dir 6 is [/opt/apps/intel18/gsl/2.6/lib]
dir 7 is [/home1/apps/intel18/impi18_0/p4est/2.0/lib]
dir 8 is [/home1/apps/intel18/impi18_0/slepc/3.11/skylake/lib]
dir 9 is [/home1/apps/intel18/impi18_0/petsc/3.11/skylake/lib]
dir 1 must precede it due to runtime library [libmetis.so]
dir 10 is [/opt/apps/intel18/impi18_0/phdf5/1.10.4/x86_64/lib]
dir 11 is [/opt/intel/compilers_and_libraries_2018.2.199/linux/mpi/intel64/lib/release_mt]
Some of these libraries may not be found correctly.
Does anyone know why this is happening and how to fix it? I also tried including the option "-D CMAKE_IGNORE_PATH=/home1/apps/intel18/impi18_0/petsc/3.11/skylake/lib"
By the way, this error does not occur if I manually install and use deal.II on my home directory.
I've copied the contents of my CMakeLists.txt file below.
##
# CMake script for the PRISMS-PF applications:
##
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
# Find deal.II installation
FIND_PACKAGE(deal.II 8.3.0 REQUIRED
HINTS ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR})
# Check to make sure deal.II is configured with p4est
IF(NOT ${DEAL_II_WITH_P4EST})
MESSAGE(FATAL_ERROR "\n"
"*** deal.II was not installed with p4est. ***\n\n"
“The p4est library is a mandatory prerequisite for PRISMS-PF. Please consult the \n”
“user guide to confirm that deal.II and p4est were installed and configured correctly.”
)
ENDIF()
DEAL_II_INITIALIZE_CACHED_VARIABLES()
# Set up the debug, release, and run targets
ADD_CUSTOM_TARGET(debug
COMMAND +env ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
COMMAND +env ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Switch CMAKE_BUILD_TYPE to Debug"
)
ADD_CUSTOM_TARGET(release
COMMAND +env ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
COMMAND +env ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Switch CMAKE_BUILD_TYPE to Release"
)
ADD_CUSTOM_TARGET(run COMMAND main
COMMENT "Run with ${CMAKE_BUILD_TYPE} configuration"
)
PROJECT(myapp)
if (${CMAKE_BUILD_TYPE} MATCHES DebugRelease)
SET(CMAKE_BUILD_TYPE Debug)
endif()
# Check if postprocess.cc and nucleation.cc exist and set preprocessor variables
if (EXISTS "postprocess.cc")
add_definitions(-DPOSTPROCESS_FILE_EXISTS)
endif()
if (EXISTS "nucleation.cc")
add_definitions(-DNUCLEATION_FILE_EXISTS)
endif()
# Append extra flags for the GNU compiler to suppress some warnings
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(DEAL_II_CXX_FLAGS_DEBUG "${DEAL_II_CXX_FLAGS_DEBUG} -Wno-maybe-uninitialized -Wno-unused-parameter -Wno-extra")
set(DEAL_II_CXX_FLAGS_RELEASE "${DEAL_II_CXX_FLAGS_RELEASE} -Wno-maybe-uninitialized -Wno-unused-parameter -Wno-extra")
#set(DEAL_II_CXX_FLAGS_DEBUG "${DEAL_II_CXX_FLAGS_DEBUG} -Wno-maybe-uninitialized -Wno-deprecated-declarations -Wno-comment -Wno-unused-parameter -Wno-unused-variable -Wno-unused-but-set-variable")
#set(DEAL_II_CXX_FLAGS_RELEASE "${DEAL_II_CXX_FLAGS_RELEASE} -Wno-maybe-uninitialized -Wno-deprecated-declarations -Wno-comment -Wno-unused-parameter -Wno-unused-variable -Wno-unused-but-set-variable")
endif()
ADD_EXECUTABLE(main main.cc )
DEAL_II_SETUP_TARGET(main)
set(cmd "cmake")
set(arg "CMakeLists.txt")
set(dir ${PROJECT_SOURCE_DIR}/../..)
EXECUTE_PROCESS(COMMAND ${cmd} ${arg}
WORKING_DIRECTORY ${dir})
set(cmd "make")
EXECUTE_PROCESS(COMMAND ${cmd}
WORKING_DIRECTORY ${dir})
if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
TARGET_LINK_LIBRARIES(main ${CMAKE_SOURCE_DIR}/../../libprisms_pf.a)
elseif(${CMAKE_BUILD_TYPE} STREQUAL "DebugRelease")
TARGET_LINK_LIBRARIES(main ${CMAKE_SOURCE_DIR}/../../libprisms_pf.a)
else()
TARGET_LINK_LIBRARIES(main ${CMAKE_SOURCE_DIR}/../../libprisms_pf_debug.a)
endif()