Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b0c9d75

Browse files
committed
Build with CMake
1 parent 5f23541 commit b0c9d75

7 files changed

Lines changed: 1319 additions & 0 deletions

File tree

mcmclib/CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
cmake_minimum_required(VERSION 2.8)
2+
project(mcmclib C)
3+
set(LIBSRC infmcmc.c infmcmc.h finmcmc.c finmcmc.h)
4+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${mcmclib_SOURCE_DIR}/CMakeModules")
5+
6+
message(STATUS "module path: ${CMAKE_MODULE_PATH}")
7+
8+
find_package(GSL REQUIRED)
9+
find_package(FFTW REQUIRED)
10+
include_directories(${GSL_INCLUDE_DIR} ${GSLCBLAS_INCLUDE_DIR} ${FFTW_INCLUDE_DIR})
11+
12+
set(LIBS ${LIBS} ${GSL_LIBRARIES} ${GSLCBLAS_LIBRARIES} ${FFTW_LIBRARIES})
13+
14+
message(STATUS "libs: ${LIBS}")
15+
message(STATUS "headers: ${GSL_INCLUDE_DIR} ${GSLCBLAS_INCLUDE_DIR}")
16+
17+
add_library(mcmc SHARED ${LIBSRC})
18+
target_link_libraries(mcmc ${LIBS})
19+
# link_libraries(${LIBS})
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# FFTW_INCLUDE_DIR = fftw3.h
2+
# FFTW_LIBRARIES = libfftw3.a
3+
# FFTW_FOUND = true if FFTW3 is found
4+
5+
IF(FFTW_INCLUDE_DIRS)
6+
FIND_PATH(FFTW_INCLUDE_DIR fftw3.h ${FFTW_INCLUDE_DIRS})
7+
FIND_LIBRARY(FFTW_LIBRARY fftw3 ${FFTW_LIBRARY_DIRS})
8+
ELSE(FFTW_INCLUDE_DIRS)
9+
# SET(TRIAL_PATHS
10+
# $ENV{FFTW_HOME}/include
11+
# /usr/include
12+
# /usr/local/include
13+
# /opt/include
14+
# /usr/apps/include
15+
# )
16+
#
17+
# SET(TRIAL_LIBRARY_PATHS
18+
# $ENV{FFTW_HOME}/lib
19+
# /usr/lib
20+
# /usr/local/lib
21+
# /opt/lib
22+
# /sw/lib
23+
# )
24+
#
25+
# FIND_PATH(FFTW_INCLUDE_DIR fftw3.h ${TRIAL_PATHS})
26+
# FIND_LIBRARY(FFTW_LIBRARY fftw3 ${TRIAL_LIBRARY_PATHS})
27+
FIND_PATH(FFTW_INCLUDE_DIR fftw3.h ${QMC_INCLUDE_PATHS})
28+
FIND_LIBRARY(FFTW_LIBRARIES fftw3 ${QMC_LIBRARY_PATHS})
29+
30+
ENDIF(FFTW_INCLUDE_DIRS)
31+
32+
SET(FFTW_FOUND FALSE)
33+
IF(FFTW_INCLUDE_DIR AND FFTW_LIBRARIES)
34+
MESSAGE(STATUS "FFTW_INCLUDE_DIR=${FFTW_INCLUDE_DIR}")
35+
MESSAGE(STATUS "FFTW_LIBRARIES=${FFTW_LIBRARIES}")
36+
SET(FFTW_FOUND TRUE)
37+
ENDIF()
38+
39+
MARK_AS_ADVANCED(
40+
FFTW_INCLUDE_DIR
41+
FFTW_LIBRARIES
42+
FFTW_FOUND
43+
)

mcmclib/CMakeModules/FindGSL.cmake

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
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+
26+
IF(WIN32)
27+
# JW tested with gsl-1.8, Windows XP, MSVS 7.1, MSVS 8.0
28+
SET(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+
)
39+
FIND_PATH(GSL_INCLUDE_DIR
40+
NAMES gsl/gsl_cdf.h gsl/gsl_randist.h
41+
PATHS ${GSL_POSSIBLE_ROOT_DIRS}
42+
PATH_SUFFIXES include
43+
DOC "GSL header include dir"
44+
)
45+
46+
FIND_LIBRARY(GSL_GSL_LIBRARY
47+
NAMES gsl libgsl
48+
PATHS ${GSL_POSSIBLE_ROOT_DIRS}
49+
PATH_SUFFIXES lib
50+
DOC "GSL library dir" )
51+
52+
FIND_LIBRARY(GSL_GSLCBLAS_LIBRARY
53+
NAMES gslcblas libgslcblas
54+
PATHS ${GSL_POSSIBLE_ROOT_DIRS}
55+
PATH_SUFFIXES lib
56+
DOC "GSL cblas library dir" )
57+
58+
SET(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+
66+
ELSE(WIN32)
67+
68+
IF(UNIX)
69+
SET(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)")
75+
FIND_PROGRAM(GSL_CONFIG gsl-config
76+
${GSL_CONFIG_PREFER_PATH}
77+
/usr/bin/
78+
)
79+
# MESSAGE("DBG GSL_CONFIG ${GSL_CONFIG}")
80+
81+
IF (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+
134+
ELSE(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)
142+
MARK_AS_ADVANCED(
143+
GSL_CXX_FLAGS
144+
GSL_INCLUDE_DIR
145+
GSL_LIBRARIES
146+
GSL_LINK_DIRECTORIES
147+
)
148+
149+
ELSE(GSL_INCLUDE_DIR)
150+
MESSAGE("FindGSL.cmake: gsl-config/pkg-config gsl not found. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
151+
ENDIF(GSL_INCLUDE_DIR)
152+
153+
ENDIF(GSL_CONFIG)
154+
155+
ENDIF(UNIX)
156+
ENDIF(WIN32)
157+
158+
159+
IF(GSL_LIBRARIES)
160+
IF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
161+
162+
SET(GSL_FOUND 1)
163+
164+
ENDIF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
165+
ENDIF(GSL_LIBRARIES)
166+
167+
168+
# ==========================================
169+
IF(NOT GSL_FOUND)
170+
# make FIND_PACKAGE friendly
171+
IF(NOT GSL_FIND_QUIETLY)
172+
IF(GSL_FIND_REQUIRED)
173+
MESSAGE(FATAL_ERROR "GSL required, please specify it's location.")
174+
ELSE(GSL_FIND_REQUIRED)
175+
MESSAGE(STATUS "ERROR: GSL was not found.")
176+
ENDIF(GSL_FIND_REQUIRED)
177+
ENDIF(NOT GSL_FIND_QUIETLY)
178+
ENDIF(NOT GSL_FOUND)

0 commit comments

Comments
 (0)