| # 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(NOT GSL_GSL_LIBRARY) | 
 |    | 
 |   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(NOT GSL_GSLCBLAS_LIBRARY) | 
 |    | 
 |   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) |