Skip to content
Snippets Groups Projects
Commit 3060d78e authored by Dilawar Singh's avatar Dilawar Singh
Browse files

Updated CMake and FindGSL.

parent 8d590b82
No related branches found
No related tags found
1 merge request!213Update rmoogli.py
......@@ -218,7 +218,7 @@ endif(NOT HDF5_FOUND)
if(HDF5_FOUND)
add_definitions( -DUSE_HDF5 )
include_directories( ${HDF5_INCLUDE_DIRS} )
foreach(HDF5_LIB ${HDF5_CXX_LIBRARIES} ${HDF5_HL_LIBRARIES} )
foreach(HDF5_LIB ${HDF5_LIBRARIES} )
if(HDF5_LIB)
get_filename_component( HDF5_LIB_EXT ${HDF5_LIB} EXT )
if(HDF5_LIB_EXT)
......@@ -269,14 +269,11 @@ if(WITH_BOOST)
list(APPEND SYSTEM_SHARED_LIBS ${Boost_LIBRARIES})
endif(WITH_BOOST)
# These libraries could be static of dynamic.
# When building packages on OBS or launchpad, we build static library of a
# dependencies if a correct version is not found.
# Here we make sure that the correct static version is linked; if a correct
# shared version is found then link the shared version in SYSTEM_SHARED_LIBS.
# These libraries could be static of dynamic. We need to discrimate between
# these two types because of --whole-archive option. See
# BhallaLab/moose-core#66,
if(WITH_GSL)
message(STATUS "Using STATIC gsl libraries: ${GSL_LIBRARIES}")
foreach(GSL_LIB ${GSL_LIBRARIES} )
if(GSL_LIB)
get_filename_component( GSL_LIB_EXT ${GSL_LIB} EXT )
......@@ -351,6 +348,11 @@ list(APPEND MOOSE_LIBRARIES
basecode
)
# Make sure to remove duplicates.
list(REMOVE_DUPLICATES STATIC_LIBRARIES)
if(SYSTEM_SHARED_LIBS)
list(REMOVE_DUPLICATES SYSTEM_SHARED_LIBS)
endif( )
# MAC linker does not understand many of gnu-ld options.
message( STATUS "Shared libs: ${SYSTEM_SHARED_LIBS}")
......
##
## Try to find gnu scientific library GSL
## (see http://www.gnu.org/software/gsl/)
## 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_DIRS = 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
## minor corrections Jan Woetzel
##
## www.mip.informatik.uni-kiel.de
## --------------------------------
##
# Try to find gnu scientific library GSL
# (see http://www.gnu.org/software/gsl/)
# 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"
#
# GSL_INCLUDE_DIRS = where to find headers
#
# GSL_USE_STATIC_LIBRARIES = Set it ON if you want to search for static
# libraries.
#
# Felix Woelk 07/2004
# minor corrections Jan Woetzel
#
# www.mip.informatik.uni-kiel.de
# --------------------------------
#
# Friday 18 November 2016 09:05:56 AM IST
# MODIFICATIONS: ## dilawars@ncbs.res.in, For the MOOSE project.
# This version does not use gsl-config file.
#
# Set this envrionment variable to search in this path first.
message( STATUS "GSL_ROOT_DIR value $ENV{GSL_ROOT_DIR}")
IF(WIN32)
SET(GSL_MINGW_PREFIX "c:/msys/local" )
SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
FIND_LIBRARY(GSL_LIB gsl PATHS
${GSL_MINGW_PREFIX}/lib
${GSL_MSVC_PREFIX}/lib
)
#MSVC version of the lib is just called 'cblas'
FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS
${GSL_MINGW_PREFIX}/lib
${GSL_MSVC_PREFIX}/lib
)
FIND_PATH(GSL_INCLUDE_DIRS gsl/gsl_blas.h
${GSL_MINGW_PREFIX}/include
${GSL_MSVC_PREFIX}/include
)
SET(GSL_MINGW_PREFIX "c:/msys/local" )
SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
FIND_LIBRARY(GSL_LIB gsl PATHS
${GSL_MINGW_PREFIX}/lib
${GSL_MSVC_PREFIX}/lib
)
#MSVC version of the lib is just called 'cblas'
FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS
${GSL_MINGW_PREFIX}/lib
${GSL_MSVC_PREFIX}/lib
)
FIND_PATH(GSL_INCLUDE_DIRS gsl/gsl_blas.h
${GSL_MINGW_PREFIX}/include
${GSL_MSVC_PREFIX}/include
)
IF (GSL_LIB AND GSLCBLAS_LIB)
SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
ENDIF (GSL_LIB AND GSLCBLAS_LIB)
IF (GSL_LIB AND GSLCBLAS_LIB)
SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
ENDIF (GSL_LIB AND GSLCBLAS_LIB)
ELSE(WIN32)
IF(UNIX)
SET(GSL_CONFIG_PREFER_PATH "$ENV{GSL_ROOT_DIR}/bin")
# GSL_CONFIG must be cleared. This script may be called again after installing
# the proper version of gsl
if(EXISTS "$ENV{GSL_ROOT_DIR}")
set(GSL_CONFIG "$ENV{GSL_ROOT_DIR}/bin/gsl-config")
MESSAGE(STATUS "gsl-config from environment variable: ${GSL_CONFIG}")
set(GSL_INCLUDE_DIRS)
set(GSL_LIBRARIES)
set(GSL_VERSION)
set(GSL_CONFIG_LIBS)
else()
FIND_PROGRAM(GSL_CONFIG gsl-config
${GSL_CONFIG_PREFER_PATH}
$ENV{LIB_DIR}/bin
/usr/local/bin/
/usr/bin/
)
endif()
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_DIRS ${GSL_PREFIX}/include CACHE STRING INTERNAL)
# set link libraries and link flags
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 )
EXEC_PROGRAM(${GSL_CONFIG}
ARGS --version
OUTPUT_VARIABLE GSL_VERSION
)
## 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}")
IF(GSL_USE_STATIC_LIBRARIES)
SET(GSL_LIB_NAMES libgsl.a)
SET(GSL_CBLAS_LIB_NAMES libgslclabs.a)
ELSE(GSL_USE_STATIC_LIBRARIES)
SET(GSL_LIB_NAMES gsl)
SET(GSL_CBLAS_LIB_NAMES gslcblas)
ENDIF( )
FIND_LIBRARY(GSL_LIB
NAMES ${GSL_LIB_NAMES}
PATHS
$ENV{GSL_ROOT_DIR}/lib $ENV{GSL_ROOT_DIR}/lib64
/opt/lib /opt/lib64
)
FIND_LIBRARY(GSLCBLAS_LIB
NAMES ${GSL_CBLAS_LIB_NAMES}
PATHS
$ENV{GSL_ROOT_DIR}/lib $ENV{GSL_ROOT_DIR}/lib64
/opt/lib /opt/lib64
)
FIND_PATH(GSL_INCLUDE_DIRS NAMES gsl/gsl_blas.h gsl/gsl.h
PATHS
$ENV{GSL_ROOT_DIR}/include $ENV{GSL_ROOT_DIR}/include
/opt/include /opt/include
)
IF (GSL_LIB AND GSLCBLAS_LIB)
SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
ENDIF (GSL_LIB AND GSLCBLAS_LIB)
# ADD_DEFINITIONS("-DHAVE_GSL")
# SET(GSL_DEFINITIONS "-DHAVE_GSL")
MARK_AS_ADVANCED(
GSL_CXX_FLAGS
GSL_INCLUDE_DIRS
GSL_LIBRARIES
GSL_LINK_DIRECTORIES
GSL_DEFINITIONS
)
ELSE(GSL_CONFIG)
IF (GSL_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find gsl-config. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
ELSE (GSL_FIND_REQUIRED)
MESSAGE(STATUS "Could not find GSL")
# TODO: Avoid cmake complaints if GSL is not found
ENDIF (GSL_FIND_REQUIRED)
ENDIF(GSL_CONFIG)
ENDIF(UNIX)
ENDIF(WIN32)
IF(GSL_LIBRARIES)
IF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
SET(GSL_FOUND 1)
MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}")
ENDIF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
IF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
SET(GSL_FOUND 1)
MESSAGE(STATUS "Found GSL ${GSL_LIBRARIES}")
ENDIF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
ENDIF(GSL_LIBRARIES)
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment