|  | # 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) |