From 6ebe62228eccc8935e3147e08c85852cc35ec49a Mon Sep 17 00:00:00 2001 From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be> Date: Mon, 26 Sep 2011 10:17:20 +0000 Subject: [PATCH] CMakeList : find petsc (and slepc) without PETSC_ARCH/PETS_DIR (SLEPC_ARCH SLEPC_DIR) when symlinks exist in standard path (e.g /usr/lib/libpetsc.so /usr/include/petsc/petsc.h). This is the case for debian/ubuntu pacakages. --- CMakeLists.txt | 52 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d3b4b8351..57224a081d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -621,12 +621,6 @@ endif(ENABLE_TAUCS) if(ENABLE_PETSC) set(ENV_PETSC_DIR $ENV{PETSC_DIR}) set(ENV_PETSC_ARCH $ENV{PETSC_ARCH}) - if(NOT ENV_PETSC_DIR) - message("WARNING: Export PETSC_DIR before calling cmake") - endif(NOT ENV_PETSC_DIR) - if(NOT ENV_PETSC_ARCH) - message("WARNING: Export PETSC_ARCH before calling cmake") - endif(NOT ENV_PETSC_ARCH) if(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables) set_config_option(HAVE_PETSC "PETSc") file(STRINGS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables @@ -653,22 +647,8 @@ if(ENABLE_PETSC) ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "") # petsc 3.1 creates only one library (libpetsc) if(NOT PETSC_LIBS) - find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib) + find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib PATH_SUFFIXES) endif(NOT PETSC_LIBS) - # find slepc - if(ENABLE_SLEPC) - set(ENV_SLEPC_DIR $ENV{SLEPC_DIR}) - if(NOT ENV_SLEPC_DIR) - message("WARNING: Export SLEPC_DIR before calling cmake") - endif(NOT ENV_SLEPC_DIR) - find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib) - if(SLEPC_LIB) - set_config_option(HAVE_SLEPC "SLEPc") - list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) - list(APPEND EXTERNAL_INCLUDES ${ENV_SLEPC_DIR}/include - ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/include) - endif(SLEPC_LIB) - 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}) @@ -683,8 +663,38 @@ if(ENABLE_PETSC) string(STRIP ${LLIBS} LLIBS) list(APPEND EXTERNAL_LIBRARIES "${LLIBS}") endif(LLIBS) + else(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables) + 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") + list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) + list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) + endif(PETSC_LIBS AND PETSC_INC) endif(EXISTS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables) + if(NOT HAVE_PETSC AND NOT ENV_PETSC_DIR) + message("WARNING: Export PETSC_DIR before calling cmake") + endif(NOT HAVE_PETSC AND NOT ENV_PETSC_DIR) + if(NOT HAVE_PETSC AND NOT ENV_PETSC_ARCH) + message("WARNING: Export PETSC_ARCH before calling cmake") + endif(NOT HAVE_PETSC AND NOT ENV_PETSC_ARCH) endif(ENABLE_PETSC) +# find slepc +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(SLPEC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR}/${ENV_SLEPC_ARCH} PATH_SUFFIXES 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) -- GitLab