diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c1e9f9639bce8406e0df8ec9b2d46526e09b948..03298e13e2dc163971921b002788e8f0b0c7b1dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -405,7 +405,7 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS) message(SEND_ERROR "Cannot compile GUI without Mesh, Post or Plugin modules") endif(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS) - # get jpeg lib + if(FLTK_JPEG) set_config_option(HAVE_LIBJPEG "Jpeg(Fltk)") else(FLTK_JPEG) @@ -416,7 +416,7 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR}) endif(JPEG_FOUND) endif(FLTK_JPEG) - # get zlib + if(FLTK_Z) set_config_option(HAVE_LIBZ "Zlib(Fltk)") else(FLTK_Z) @@ -427,7 +427,7 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR}) endif(ZLIB_FOUND) endif(FLTK_Z) - # get png lib + if(HAVE_LIBZ) if(FLTK_PNG) set_config_option(HAVE_LIBPNG "Png(Fltk)") @@ -440,6 +440,21 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) endif(PNG_FOUND) endif(FLTK_PNG) endif(HAVE_LIBZ) + + if(ENABLE_MPEG_ENCODE) + add_subdirectory(contrib/mpeg_encode) + include_directories(contrib/mpeg_encode/headers) + set_config_option(HAVE_MPEG_ENCODE "Mpeg") + endif(ENABLE_MPEG_ENCODE) + + if(ENABLE_OSMESA) + find_library(OSMESA_LIB OSMesa) + if(OSMESA_LIB) + set_config_option(HAVE_OSMESA "OSMesa") + list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB}) + endif(OSMESA_LIB) + endif(ENABLE_OSMESA) + find_package(OpenGL REQUIRED) if(OPENGL_GLU_FOUND) add_subdirectory(Graphics) @@ -449,32 +464,21 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) endif(OPENGL_GLU_FOUND) endif(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) -if(ENABLE_ANN) - find_library(ANN_LIB ann PATH_SUFFIXES lib) - find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN) - if(ANN_LIB AND ANN_INC) - list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB}) - list(APPEND EXTERNAL_INCLUDES ${ANN_INC}) - else(ANN_LIB AND ANN_INC) - message(STATUS "System ANN not found - using contrib/ANN instead") - add_subdirectory(contrib/ANN) - include_directories(contrib/ANN/include) - endif(ANN_LIB AND ANN_INC) - set_config_option(HAVE_ANN "Ann") -endif(ENABLE_ANN) - -if(ENABLE_BLOSSOM) - add_subdirectory(contrib/blossom) - include_directories(contrib/blossom/MATCH contrib/blossom/concorde97 - contrib/blossom/concorde97/INCLUDE) - set_config_option(HAVE_BLOSSOM "Blossom") -endif(ENABLE_BLOSSOM) - -if(ENABLE_CHACO) - add_subdirectory(contrib/Chaco) - include_directories(contrib/Chaco/main) - set_config_option(HAVE_CHACO "Chaco") -endif(ENABLE_CHACO) +if(HAVE_MESH OR HAVE_PLUGINS) + if(ENABLE_ANN) + find_library(ANN_LIB ann PATH_SUFFIXES lib) + find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN) + if(ANN_LIB AND ANN_INC) + list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB}) + list(APPEND EXTERNAL_INCLUDES ${ANN_INC}) + else(ANN_LIB AND ANN_INC) + message(STATUS "System ANN not found - using contrib/ANN instead") + add_subdirectory(contrib/ANN) + include_directories(contrib/ANN/include) + endif(ANN_LIB AND ANN_INC) + set_config_option(HAVE_ANN "Ann") + endif(ENABLE_ANN) +endif(HAVE_MESH OR HAVE_PLUGINS) if(ENABLE_BFGS) add_subdirectory(contrib/lbfgs) @@ -488,17 +492,6 @@ if(ENABLE_DINTEGRATION) set_config_option(HAVE_DINTEGRATION "DIntegration") endif(ENABLE_DINTEGRATION) -if(ENABLE_GMM) - find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm) - if(GMM_INC) - list(APPEND EXTERNAL_INCLUDES ${GMM_INC}) - else(GMM_INC) - message(STATUS "System GMM not found - using contrib/gmm instead") - include_directories(contrib/gmm) - endif(GMM_INC) - set_config_option(HAVE_GMM "Gmm") -endif(ENABLE_GMM) - if(ENABLE_KBIPACK) find_library(GMP_LIB gmp) if(GMP_LIB) @@ -531,21 +524,30 @@ if(ENABLE_MPI) endif(MPI_FOUND) endif(ENABLE_MPI) -if(ENABLE_MPEG_ENCODE) - add_subdirectory(contrib/mpeg_encode) - include_directories(contrib/mpeg_encode/headers) - set_config_option(HAVE_MPEG_ENCODE "Mpeg") -endif(ENABLE_MPEG_ENCODE) - -if(ENABLE_METIS) - add_subdirectory(contrib/Metis) - include_directories(contrib/Metis) - set_config_option(HAVE_METIS "Metis") - message("WARNING: By including Metis you have to comply with Metis' special " - "licensing requirements stated in contrib/Metis/README.txt.") -endif(ENABLE_METIS) +if(HAVE_MESH OR HAVE_SOLVER) + if(ENABLE_METIS) + add_subdirectory(contrib/Metis) + include_directories(contrib/Metis) + set_config_option(HAVE_METIS "Metis") + message("WARNING: By including Metis you have to comply with Metis' special " + "licensing requirements stated in contrib/Metis/README.txt.") + endif(ENABLE_METIS) + + if(ENABLE_CHACO) + add_subdirectory(contrib/Chaco) + include_directories(contrib/Chaco/main) + set_config_option(HAVE_CHACO "Chaco") + endif(ENABLE_CHACO) +endif(HAVE_MESH OR HAVE_SOLVER) if(HAVE_MESH) + if(ENABLE_BLOSSOM) + add_subdirectory(contrib/blossom) + include_directories(contrib/blossom/MATCH contrib/blossom/concorde97 + contrib/blossom/concorde97/INCLUDE) + set_config_option(HAVE_BLOSSOM "Blossom") + endif(ENABLE_BLOSSOM) + if(ENABLE_NETGEN) add_subdirectory(contrib/Netgen) include_directories(contrib/Netgen contrib/Netgen/libsrc/include @@ -644,122 +646,135 @@ if(ENABLE_MED OR ENABLE_CGNS) endif(HDF5_LIB) endif(ENABLE_MED OR ENABLE_CGNS) -if(ENABLE_TAUCS) - if(NOT HAVE_METIS) - message(SEND_ERROR "You have to enable METIS in order to use TAUCS") - endif(NOT HAVE_METIS) - find_library(TAUCS_LIB taucs PATH_SUFFIXES lib) - if(TAUCS_LIB) - find_path(TAUCS_INC "taucs.h" PATH_SUFFIXES src include taucs) - if(TAUCS_INC) - set_config_option(HAVE_TAUCS "Taucs") - add_definitions(-DTAUCS_CILK) - list(APPEND EXTERNAL_LIBRARIES ${TAUCS_LIB}) - list(APPEND EXTERNAL_INCLUDES ${TAUCS_INC}) - endif(TAUCS_INC) - endif(TAUCS_LIB) -endif(ENABLE_TAUCS) - -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) - # find include directories - list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include) - list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include) - string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES - ${PETSC_VARIABLES}) - if(PETSC_PACKAGES_INCLUDES) - string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES - ${PETSC_PACKAGES_INCLUDES}) +if(HAVE_SOLVER) + if(ENABLE_GMM) + find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm) + if(GMM_INC) + list(APPEND EXTERNAL_INCLUDES ${GMM_INC}) + else(GMM_INC) + message(STATUS "System GMM not found - using contrib/gmm instead") + include_directories(contrib/gmm) + endif(GMM_INC) + set_config_option(HAVE_GMM "Gmm") + endif(ENABLE_GMM) + + if(ENABLE_TAUCS) + if(NOT HAVE_METIS) + message(SEND_ERROR "You have to enable METIS in order to use TAUCS") + endif(NOT HAVE_METIS) + find_library(TAUCS_LIB taucs PATH_SUFFIXES lib) + if(TAUCS_LIB) + find_path(TAUCS_INC "taucs.h" PATH_SUFFIXES src include taucs) + if(TAUCS_INC) + set_config_option(HAVE_TAUCS "Taucs") + add_definitions(-DTAUCS_CILK) + list(APPEND EXTERNAL_LIBRARIES ${TAUCS_LIB}) + list(APPEND EXTERNAL_INCLUDES ${TAUCS_INC}) + endif(TAUCS_INC) + endif(TAUCS_LIB) + endif(ENABLE_TAUCS) + + 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) + # find include directories + list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include) + list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include) + string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES + ${PETSC_VARIABLES}) if(PETSC_PACKAGES_INCLUDES) - string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) - string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) - foreach(VAR ${PETSC_PACKAGES_INCLUDES}) - list(APPEND EXTERNAL_INCLUDES ${VAR}) - endforeach(VAR) + string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES + ${PETSC_PACKAGES_INCLUDES}) + if(PETSC_PACKAGES_INCLUDES) + string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) + string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) + foreach(VAR ${PETSC_PACKAGES_INCLUDES}) + list(APPEND EXTERNAL_INCLUDES ${VAR}) + endforeach(VAR) + endif(PETSC_PACKAGES_INCLUDES) endif(PETSC_PACKAGES_INCLUDES) - endif(PETSC_PACKAGES_INCLUDES) - # find libraries (<= 3.0) - set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc) - find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED - ${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) - 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}) - find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR} - PATH_SUFFIXES ${ENV_PETSC_ARCH}/include) - if(SLEPC_INC2) - list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2}) - endif(SLEPC_INC2) - 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}) - if(PLIBS) - string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS}) - string(STRIP ${PLIBS} PLIBS) - list(APPEND EXTERNAL_LIBRARIES "${PLIBS}") - endif(PLIBS) - string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES}) - if(PLIBS_BASIC) - string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC}) - string(STRIP ${PLIBS_BASIC} PLIBS_BASIC) - list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}") - endif(PLIBS_BASIC) - string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES}) - if(LLIBS) - string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS}) - string(STRIP ${LLIBS} LLIBS) - 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") + # find libraries (<= 3.0) + set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc) + find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED + ${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) + endif(NOT PETSC_LIBS) + # find slepc (needs to be linked in before 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) + 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}) + find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR} + PATH_SUFFIXES ${ENV_PETSC_ARCH}/include) + if(SLEPC_INC2) + list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2}) + endif(SLEPC_INC2) + 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}) - 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 additional libraries to link with + string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES}) + if(PLIBS) + string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS}) + string(STRIP ${PLIBS} PLIBS) + list(APPEND EXTERNAL_LIBRARIES "${PLIBS}") + endif(PLIBS) + string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES}) + if(PLIBS_BASIC) + string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC}) + string(STRIP ${PLIBS_BASIC} PLIBS_BASIC) + list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}") + endif(PLIBS_BASIC) + string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES}) + if(LLIBS) + string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS}) + string(STRIP ${LLIBS} LLIBS) + 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) + 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) +endif(HAVE_SOLVER) if(ENABLE_OCC) if(WIN32 OR CYGWIN) @@ -837,14 +852,6 @@ if(ENABLE_ACIS) endif(ACIS_LIB) endif(ENABLE_ACIS) -if(ENABLE_OSMESA) - find_library(OSMESA_LIB OSMesa) - if(OSMESA_LIB) - set_config_option(HAVE_OSMESA "OSMesa") - list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB}) - endif(OSMESA_LIB) -endif(ENABLE_OSMESA) - if(ENABLE_ONELAB) set_config_option(HAVE_ONELAB "OneLab") endif(ENABLE_ONELAB)