123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- # Try to find gnu scientific library GSL
- # See
- # http://www.gnu.org/software/gsl/ and
- # http://gnuwin32.sourceforge.net/packages/gsl.htm
- #
- # Once run this will define:
- #
- # GSL_FOUND = system has GSL lib
- #
- # GSL_LIBRARIES = full path to the libraries
- # on Unix/Linux with additional linker flags from "gsl-config --libs"
- #
- # CMAKE_GSL_CXX_FLAGS = Unix compiler flags for GSL, essentially "`gsl-config --cxxflags`"
- #
- # GSL_INCLUDE_DIR = where to find headers
- #
- # GSL_LINK_DIRECTORIES = link directories, useful for rpath on Unix
- # GSL_EXE_LINKER_FLAGS = rpath on Unix
- #
- # Felix Woelk 07/2004
- # Jan Woetzel
- #
- # www.mip.informatik.uni-kiel.de
- # --------------------------------
- if(WIN32)
- # JW tested with gsl-1.8, Windows XP, MSVS 7.1
- set(GSL_POSSIBLE_ROOT_DIRS
- ${GSL_ROOT_DIR}
- $ENV{GSL_ROOT_DIR}
- ${GSL_DIR}
- ${GSL_HOME}
- $ENV{GSL_DIR}
- $ENV{GSL_HOME}
- $ENV{EXTRA}
- "C:/Program Files/GnuWin32"
- )
- find_path(GSL_INCLUDE_DIR
- NAMES gsl/gsl_cdf.h gsl/gsl_randist.h
- PATHS ${GSL_POSSIBLE_ROOT_DIRS}
- PATH_SUFFIXES include
- DOC "GSL header include dir"
- )
-
- find_library(GSL_GSL_LIBRARY
- NAMES libgsl.dll.a gsl libgsl
- PATHS ${GSL_POSSIBLE_ROOT_DIRS}
- PATH_SUFFIXES lib
- DOC "GSL library" )
-
- if(NOT GSL_GSL_LIBRARY)
- find_file(GSL_GSL_LIBRARY
- NAMES libgsl.dll.a
- PATHS ${GSL_POSSIBLE_ROOT_DIRS}
- PATH_SUFFIXES lib
- DOC "GSL library")
- endif()
-
- find_library(GSL_GSLCBLAS_LIBRARY
- NAMES libgslcblas.dll.a gslcblas libgslcblas
- PATHS ${GSL_POSSIBLE_ROOT_DIRS}
- PATH_SUFFIXES lib
- DOC "GSL cblas library dir" )
-
- if(NOT GSL_GSLCBLAS_LIBRARY)
- find_file(GSL_GSLCBLAS_LIBRARY
- NAMES libgslcblas.dll.a
- PATHS ${GSL_POSSIBLE_ROOT_DIRS}
- PATH_SUFFIXES lib
- DOC "GSL library")
- endif()
-
- set(GSL_LIBRARIES ${GSL_GSL_LIBRARY})
- #message("DBG\n"
- # "GSL_GSL_LIBRARY=${GSL_GSL_LIBRARY}\n"
- # "GSL_GSLCBLAS_LIBRARY=${GSL_GSLCBLAS_LIBRARY}\n"
- # "GSL_LIBRARIES=${GSL_LIBRARIES}")
- else(WIN32)
-
- if(UNIX)
- set(GSL_CONFIG_PREFER_PATH
- "$ENV{GSL_DIR}/bin"
- "$ENV{GSL_DIR}"
- "$ENV{GSL_HOME}/bin"
- "$ENV{GSL_HOME}"
- CACHE STRING "preferred path to GSL (gsl-config)")
- find_program(GSL_CONFIG gsl-config
- ${GSL_CONFIG_PREFER_PATH}
- /usr/bin/
- )
- # message("DBG GSL_CONFIG ${GSL_CONFIG}")
-
- if (GSL_CONFIG)
- # set CXXFLAGS to be fed into CXX_FLAGS by the user:
- set(GSL_CXX_FLAGS "`${GSL_CONFIG} --cflags`")
-
- # set INCLUDE_DIRS to prefix+include
- exec_program(${GSL_CONFIG}
- ARGS --prefix
- OUTPUT_VARIABLE GSL_PREFIX)
- set(GSL_INCLUDE_DIR ${GSL_PREFIX}/include CACHE STRING INTERNAL)
- # set link libraries and link flags
- #set(GSL_LIBRARIES "`${GSL_CONFIG} --libs`")
- exec_program(${GSL_CONFIG}
- ARGS --libs
- OUTPUT_VARIABLE GSL_LIBRARIES )
-
- # extract link dirs for rpath
- exec_program(${GSL_CONFIG}
- ARGS --libs
- OUTPUT_VARIABLE GSL_CONFIG_LIBS )
-
- # extract version
- exec_program(${GSL_CONFIG}
- ARGS --version
- OUTPUT_VARIABLE GSL_FULL_VERSION )
-
- # split version as major/minor
- string(REGEX MATCH "(.)\\..*" GSL_VERSION_MAJOR_ "${GSL_FULL_VERSION}")
- set(GSL_VERSION_MAJOR ${CMAKE_MATCH_1})
- string(REGEX MATCH ".\\.(.*)" GSL_VERSION_MINOR_ "${GSL_FULL_VERSION}")
- set(GSL_VERSION_MINOR ${CMAKE_MATCH_1})
- # split off the link dirs (for rpath)
- # use regular expression to match wildcard equivalent "-L*<endchar>"
- # with <endchar> is a space or a semicolon
- string(REGEX MATCHALL "[-][L]([^ ;])+"
- GSL_LINK_DIRECTORIES_WITH_PREFIX
- "${GSL_CONFIG_LIBS}" )
- # message("DBG GSL_LINK_DIRECTORIES_WITH_PREFIX=${GSL_LINK_DIRECTORIES_WITH_PREFIX}")
- # remove prefix -L because we need the pure directory for LINK_DIRECTORIES
-
- if (GSL_LINK_DIRECTORIES_WITH_PREFIX)
- string(REGEX REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} )
- endif (GSL_LINK_DIRECTORIES_WITH_PREFIX)
- set(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL)
- # message("DBG GSL_LINK_DIRECTORIES=${GSL_LINK_DIRECTORIES}")
- # message("DBG GSL_EXE_LINKER_FLAGS=${GSL_EXE_LINKER_FLAGS}")
- # add_definitions("-DHAVE_GSL")
- # set(GSL_DEFINITIONS "-DHAVE_GSL")
- mark_as_advanced(
- GSL_CXX_FLAGS
- GSL_INCLUDE_DIR
- GSL_LIBRARIES
- GSL_LINK_DIRECTORIES
- GSL_DEFINITIONS
- )
- message(STATUS "Using GSL from ${GSL_PREFIX}")
-
- else(GSL_CONFIG)
- message("FindGSL.cmake: gsl-config not found. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
- endif(GSL_CONFIG)
- endif(UNIX)
- endif(WIN32)
- if(GSL_LIBRARIES)
- if(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
- set(GSL_FOUND 1)
-
- endif(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
- endif(GSL_LIBRARIES)
|