source: PSPA/madxPSPA/cmake/FindGSL.cmake @ 430

Last change on this file since 430 was 430, checked in by touze, 11 years ago

import madx-5.01.00

File size: 4.5 KB
Line 
1# Try to find gnu scientific library GSL
2# See
3# http://www.gnu.org/software/gsl/  and
4# http://gnuwin32.sourceforge.net/packages/gsl.htm
5#
6# Once run this will define:
7#
8# GSL_FOUND       = system has GSL lib
9#
10# GSL_LIBRARIES   = full path to the libraries
11#    on Unix/Linux with additional linker flags from "gsl-config --libs"
12#
13# CMAKE_GSL_CXX_FLAGS  = Unix compiler flags for GSL, essentially "`gsl-config --cxxflags`"
14#
15# GSL_INCLUDE_DIR      = where to find headers
16#
17# GSL_LINK_DIRECTORIES = link directories, useful for rpath on Unix
18# GSL_EXE_LINKER_FLAGS = rpath on Unix
19#
20# Felix Woelk 07/2004
21# Jan Woetzel
22#
23# www.mip.informatik.uni-kiel.de
24# --------------------------------
25
26IF(WIN32)
27# JW tested with gsl-1.8, Windows XP, MSVS 7.1, MSVS 8.0
28SET(GSL_POSSIBLE_ROOT_DIRS
29${GSL_ROOT_DIR}
30$ENV{GSL_ROOT_DIR}
31${GSL_DIR}
32${GSL_HOME}
33$ENV{GSL_DIR}
34$ENV{GSL_HOME}
35$ENV{EXTERN_LIBS_DIR}/gsl
36$ENV{EXTRA}
37# "C:/home/jw/source2/gsl-1.8"
38)
39FIND_PATH(GSL_INCLUDE_DIR
40NAMES gsl/gsl_cdf.h gsl/gsl_randist.h
41PATHS ${GSL_POSSIBLE_ROOT_DIRS}
42PATH_SUFFIXES include
43DOC "GSL header include dir"
44)
45
46FIND_LIBRARY(GSL_GSL_LIBRARY
47NAMES gsl libgsl
48PATHS  ${GSL_POSSIBLE_ROOT_DIRS}
49PATH_SUFFIXES lib
50DOC "GSL library dir" )
51
52FIND_LIBRARY(GSL_GSLCBLAS_LIBRARY
53NAMES gslcblas libgslcblas
54PATHS  ${GSL_POSSIBLE_ROOT_DIRS}
55PATH_SUFFIXES lib
56DOC "GSL cblas library dir" )
57
58SET(GSL_LIBRARIES ${GSL_GSL_LIBRARY})
59
60#MESSAGE("DBG\n"
61#  "GSL_GSL_LIBRARY=${GSL_GSL_LIBRARY}\n"
62#  "GSL_GSLCBLAS_LIBRARY=${GSL_GSLCBLAS_LIBRARY}\n"
63#  "GSL_LIBRARIES=${GSL_LIBRARIES}")
64
65
66ELSE(WIN32)
67
68IF(UNIX)
69SET(GSL_CONFIG_PREFER_PATH
70 "$ENV{GSL_DIR}/bin"
71 "$ENV{GSL_DIR}"
72 "$ENV{GSL_HOME}/bin"
73 "$ENV{GSL_HOME}"
74 CACHE STRING "preferred path to GSL (gsl-config)")
75FIND_PROGRAM(GSL_CONFIG gsl-config
76 ${GSL_CONFIG_PREFER_PATH}
77 /usr/bin/
78 )
79# MESSAGE("DBG GSL_CONFIG ${GSL_CONFIG}")
80
81IF (GSL_CONFIG)
82
83 MESSAGE(STATUS "GSL using gsl-config ${GSL_CONFIG}")
84 # set CXXFLAGS to be fed into CXX_FLAGS by the user:
85 EXEC_PROGRAM(${GSL_CONFIG}
86   ARGS --cflags
87   OUTPUT_VARIABLE  GSL_CXX_FLAGS )
88 #SET(GSL_CXX_FLAGS "`${GSL_CONFIG} --cflags`")
89
90 # set INCLUDE_DIRS to prefix+include
91 EXEC_PROGRAM(${GSL_CONFIG}
92   ARGS --prefix
93   OUTPUT_VARIABLE GSL_PREFIX)
94 SET(GSL_INCLUDE_DIR ${GSL_PREFIX}/include CACHE STRING INTERNAL)
95
96 # set link libraries and link flags
97
98 #SET(GSL_LIBRARIES "`${GSL_CONFIG} --libs`")
99
100 # extract link dirs for rpath
101 EXEC_PROGRAM(${GSL_CONFIG}
102   ARGS --libs
103   OUTPUT_VARIABLE  GSL_CONFIG_LIBS )
104 SET(GSL_LIBRARIES "${GSL_CONFIG_LIBS}")
105
106 # split off the link dirs (for rpath)
107 # use regular expression to match wildcard equivalent "-L*"
108 # with  is a space or a semicolon
109 STRING(REGEX MATCHALL "[-][L]([^ ;])+"
110   GSL_LINK_DIRECTORIES_WITH_PREFIX
111   "${GSL_CONFIG_LIBS}" )
112 #      MESSAGE("DBG  GSL_LINK_DIRECTORIES_WITH_PREFIX=${GSL_LINK_DIRECTORIES_WITH_PREFIX}")
113
114 # remove prefix -L because we need the pure directory for LINK_DIRECTORIES
115
116 IF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
117   STRING(REGEX REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} )
118 ENDIF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
119 SET(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL)
120 #      MESSAGE("DBG  GSL_LINK_DIRECTORIES=${GSL_LINK_DIRECTORIES}")
121 #      MESSAGE("DBG  GSL_EXE_LINKER_FLAGS=${GSL_EXE_LINKER_FLAGS}")
122
123 #      ADD_DEFINITIONS("-DHAVE_GSL")
124 #      SET(GSL_DEFINITIONS "-DHAVE_GSL")
125 MARK_AS_ADVANCED(
126   GSL_CXX_FLAGS
127   GSL_INCLUDE_DIR
128   GSL_LIBRARIES
129   GSL_LINK_DIRECTORIES
130   GSL_DEFINITIONS
131)
132 MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}")
133
134ELSE(GSL_CONFIG)
135
136 INCLUDE(UsePkgConfig) #needed for PKGCONFIG(...)
137
138 MESSAGE(STATUS "GSL using pkgconfig")
139 #      PKGCONFIG(gsl includedir libdir linkflags cflags)
140 PKGCONFIG(gsl GSL_INCLUDE_DIR GSL_LINK_DIRECTORIES GSL_LIBRARIES GSL_CXX_FLAGS)
141 IF(GSL_INCLUDE_DIR)
142MARK_AS_ADVANCED(
143     GSL_CXX_FLAGS
144     GSL_INCLUDE_DIR
145     GSL_LIBRARIES
146     GSL_LINK_DIRECTORIES
147)
148
149 ELSE(GSL_INCLUDE_DIR) 
150MESSAGE("FindGSL.cmake: gsl-config/pkg-config gsl not found. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
151 ENDIF(GSL_INCLUDE_DIR)
152
153ENDIF(GSL_CONFIG)
154
155ENDIF(UNIX)
156ENDIF(WIN32)
157
158
159IF(GSL_LIBRARIES)
160IF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
161
162SET(GSL_FOUND 1)
163
164ENDIF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
165ENDIF(GSL_LIBRARIES)
166
167
168# ==========================================
169IF(NOT GSL_FOUND)
170# make FIND_PACKAGE friendly
171IF(NOT GSL_FIND_QUIETLY)
172IF(GSL_FIND_REQUIRED)
173 MESSAGE(FATAL_ERROR "GSL required, please specify it's location.")
174ELSE(GSL_FIND_REQUIRED)
175 MESSAGE(STATUS       "ERROR: GSL was not found.")
176ENDIF(GSL_FIND_REQUIRED)
177ENDIF(NOT GSL_FIND_QUIETLY)
178ENDIF(NOT GSL_FOUND)
Note: See TracBrowser for help on using the repository browser.