Warning, /JETSCAPE/cmakemodules/FindGSL.cmake is written in an unsupported language. File is not indexed.
0001 ##
0002 ## Try to find gnu scientific library GSL
0003 ## (see http://www.gnu.org/software/gsl/)
0004 ## Once run this will define:
0005 ##
0006 ## GSL_FOUND = system has GSL lib
0007 ##
0008 ## GSL_LIBRARIES = full path to the libraries
0009 ## on Unix/Linux with additional linker flags from "gsl-config --libs"
0010 ##
0011 ## CMAKE_GSL_CXX_FLAGS = Unix compiler flags for GSL, essentially "`gsl-config --cxxflags`"
0012 ##
0013 ## GSL_INCLUDE_DIR = where to find headers
0014 ##
0015 ## GSL_LINK_DIRECTORIES = link directories, useful for rpath on Unix
0016 ## GSL_EXE_LINKER_FLAGS = rpath on Unix
0017 ##
0018 ## Felix Woelk 07/2004
0019 ## minor corrections Jan Woetzel
0020 ##
0021 ## www.mip.informatik.uni-kiel.de
0022 ## --------------------------------
0023 ##
0024
0025
0026 IF(WIN32)
0027
0028 SET(GSL_MINGW_PREFIX "c:/msys/local" )
0029 SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
0030 FIND_LIBRARY(GSL_LIB gsl PATHS
0031 ${GSL_MINGW_PREFIX}/lib
0032 ${GSL_MSVC_PREFIX}/lib
0033 )
0034 #MSVC version of the lib is just called 'cblas'
0035 FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS
0036 ${GSL_MINGW_PREFIX}/lib
0037 ${GSL_MSVC_PREFIX}/lib
0038 )
0039
0040 FIND_PATH(GSL_INCLUDE_DIR gsl/gsl_blas.h
0041 ${GSL_MINGW_PREFIX}/include
0042 ${GSL_MSVC_PREFIX}/include
0043 )
0044
0045 IF (GSL_LIB AND GSLCBLAS_LIB)
0046 SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
0047 ENDIF (GSL_LIB AND GSLCBLAS_LIB)
0048
0049 ELSE(WIN32)
0050 IF(UNIX)
0051 SET(GSL_CONFIG_PREFER_PATH "$ENV{GSL_HOME}/bin" CACHE STRING "preferred path to GSL (gsl-config)")
0052 FIND_PROGRAM(GSL_CONFIG gsl-config
0053 ${GSL_CONFIG_PREFER_PATH}
0054 $ENV{LIB_DIR}/bin
0055 /usr/local/bin/
0056 /usr/bin/
0057 )
0058 # MESSAGE("DBG GSL_CONFIG ${GSL_CONFIG}")
0059
0060 IF (GSL_CONFIG)
0061 # set CXXFLAGS to be fed into CXX_FLAGS by the user:
0062 EXEC_PROGRAM(${GSL_CONFIG}
0063 ARGS --cflags
0064 OUTPUT_VARIABLE GSL_CXX_FLAGS)
0065
0066 # set INCLUDE_DIRS to prefix+include
0067 EXEC_PROGRAM(${GSL_CONFIG}
0068 ARGS --prefix
0069 OUTPUT_VARIABLE GSL_PREFIX)
0070 SET(GSL_INCLUDE_DIR ${GSL_PREFIX}/include CACHE STRING INTERNAL)
0071
0072 # set link libraries and link flags
0073 EXEC_PROGRAM(${GSL_CONFIG}
0074 ARGS --libs
0075 OUTPUT_VARIABLE GSL_LIBRARIES)
0076
0077 ## extract link dirs for rpath
0078 EXEC_PROGRAM(${GSL_CONFIG}
0079 ARGS --libs
0080 OUTPUT_VARIABLE GSL_CONFIG_LIBS )
0081
0082 ## split off the link dirs (for rpath)
0083 ## use regular expression to match wildcard equivalent "-L*<endchar>"
0084 ## with <endchar> is a space or a semicolon
0085 STRING(REGEX MATCHALL "[-][L]([^ ;])+"
0086 GSL_LINK_DIRECTORIES_WITH_PREFIX
0087 "${GSL_CONFIG_LIBS}" )
0088 # MESSAGE("DBG GSL_LINK_DIRECTORIES_WITH_PREFIX=${GSL_LINK_DIRECTORIES_WITH_PREFIX}")
0089
0090 ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
0091
0092 IF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
0093 STRING(REGEX REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} )
0094 ENDIF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
0095 SET(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL)
0096 # MESSAGE("DBG GSL_LINK_DIRECTORIES=${GSL_LINK_DIRECTORIES}")
0097 # MESSAGE("DBG GSL_EXE_LINKER_FLAGS=${GSL_EXE_LINKER_FLAGS}")
0098
0099 # ADD_DEFINITIONS("-DHAVE_GSL")
0100 # SET(GSL_DEFINITIONS "-DHAVE_GSL")
0101 MARK_AS_ADVANCED(
0102 GSL_CXX_FLAGS
0103 GSL_INCLUDE_DIR
0104 GSL_LIBRARIES
0105 GSL_LINK_DIRECTORIES
0106 GSL_DEFINITIONS
0107 )
0108
0109 ELSE(GSL_CONFIG)
0110
0111 IF (GSL_FIND_REQUIRED)
0112 MESSAGE(FATAL_ERROR "Could not find gsl-config. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
0113 ELSE (GSL_FIND_REQUIRED)
0114 MESSAGE(STATUS "Could not find GSL")
0115 # TODO: Avoid cmake complaints if GSL is not found
0116 ENDIF (GSL_FIND_REQUIRED)
0117
0118 ENDIF(GSL_CONFIG)
0119
0120 ENDIF(UNIX)
0121 ENDIF(WIN32)
0122
0123
0124 IF(GSL_LIBRARIES)
0125 IF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
0126
0127 SET(GSL_FOUND 1)
0128
0129 MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}")
0130 MESSAGE(STATUS " GSL_INCLUDE_DIR : ${GSL_INCLUDE_DIR}")
0131 MESSAGE(STATUS " GSL_CXX_FLAGS : ${GSL_CXX_FLAGS}")
0132
0133 ENDIF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
0134 ENDIF(GSL_LIBRARIES)
0135