diff --git a/CMakeLists.txt b/CMakeLists.txt index 7abf939ed1ea98fb1569026e3c471a09c12ae30e..e96bc79408396b3c2a8c8782b6cc0d1b568563cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -626,6 +626,7 @@ if(ENABLE_PETSC) set(ENV_PETSC_DIR $ENV{PETSC_DIR}) set(ENV_PETSC_ARCH $ENV{PETSC_ARCH}) if(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables) + # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH) set_config_option(HAVE_PETSC "PETSc") file(STRINGS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables PETSC_VARIABLES NEWLINE_CONSUME) @@ -653,6 +654,23 @@ if(ENABLE_PETSC) if(NOT PETSC_LIBS) find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib) endif(NOT PETSC_LIBS) + # find slepc (needs to be linked in before petsc) + if(ENABLE_SLEPC) + set(ENV_SLEPC_DIR $ENV{SLEPC_DIR}) + find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib) + if(SLEPC_LIB) + find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include + ${ENV_PETSC_ARCH}/include include/slepc) + if(SLEPC_INC) + set_config_option(HAVE_SLEPC "SLEPc") + list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) + list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) + endif(SLEPC_INC) + endif(SLEPC_LIB) + if(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR) + message("WARNING: Export SLEPC_DIR before calling cmake") + endif(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR) + endif(ENABLE_SLEPC) list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) # find additional libraries to link with string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES}) @@ -674,10 +692,20 @@ if(ENABLE_PETSC) list(APPEND EXTERNAL_LIBRARIES "${LLIBS}") endif(LLIBS) else(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables) + # new-style PETSc installations (in standard system directories) find_library(PETSC_LIBS petsc) find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc) if(PETSC_LIBS AND PETSC_INC) set_config_option(HAVE_PETSC "PETSc") + if(ENABLE_SLEPC) + find_library(SLEPC_LIB slepc) + find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc) + if(SLEPC_LIB AND SLEPC_INC) + set_config_option(HAVE_SLEPC "SLEPc") + list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) + list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) + endif(SLEPC_LIB AND SLEPC_INC) + endif(ENABLE_SLEPC) list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) endif(PETSC_LIBS AND PETSC_INC) @@ -690,23 +718,6 @@ if(ENABLE_PETSC) endif(NOT HAVE_PETSC AND NOT ENV_PETSC_ARCH) endif(ENABLE_PETSC) -if(ENABLE_SLEPC AND HAVE_PETSC) - set(ENV_SLEPC_DIR $ENV{SLEPC_DIR}) - find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib) - if(SLEPC_LIB) - find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include - ${ENV_PETSC_ARCH}/include include/slepc) - if(SLEPC_INC) - set_config_option(HAVE_SLEPC "SLEPc") - list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) - list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) - endif(SLEPC_INC) - endif(SLEPC_LIB) - if(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR) - message("WARNING: Export SLEPC_DIR before calling cmake") - endif(NOT HAVE_SLEPC AND NOT ENV_SLEPC_DIR) -endif(ENABLE_SLEPC AND HAVE_PETSC) - if(ENABLE_OCC) if(WIN32 OR CYGWIN) set(OCC_SYS_NAME win32)