-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
143 lines (116 loc) · 4.53 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(SINGFELPROJECT)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
SET(CMAKE_CPP_FLAGS "-g -Wall -DTHREADED -fopenmp")
IF(CMAKE_COMPILER_IS_GNUCXX)
ADD_DEFINITIONS("-Wall")
ELSE()
MESSAGE(FATAL_ERROR "CMakeLists.txt has not been tested/written for your compiler.")
ENDIF()
# Set output directory
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${SINGFELPROJECT_BINARY_DIR}/lib)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${SINGFELPROJECT_BINARY_DIR}/lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SINGFELPROJECT_BINARY_DIR}/bin)
SET(LIBSINGFEL ${SINGFELPROJECT_SOURCE_DIR}/libsingfel)
INCLUDE_DIRECTORIES(${LIBSINGFEL})
LINK_DIRECTORIES(${LIBSINGFEL})
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake")
IF(NOT CMAKE_BUILD_TYPE)
#SET(CMAKE_BUILD_TYPE "DEBUG")
SET(CMAKE_BUILD_TYPE "RELEASE")
#SET(CMAKE_BUILD_TYPE "RELWITHDEBINFO")
#SET(CMAKE_BUILD_TYPE "MINSIZEREL")
ENDIF()
FIND_PACKAGE(HDF5 REQUIRED HL CXX)
IF(HDF5_FOUND)
MESSAGE("HDF5 FOUND!!!")
MESSAGE("HDF5_INCLUDE_DIRS=${HDF5_INCLUDE_DIRS}")
MESSAGE("HDF5_LIBRARY_DIRS=${HDF5_LIBRARY_DIRS}")
# FILE(GLOB myHDF5Libs "$ENV{HDF5_DIR}/lib/libhdf5*.so")
# set(HDF5_LIBRARIES ${myHDF5Libs})
INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIRS} $ENV{HDF5_DIR}/hl/src)
LINK_DIRECTORIES(${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES})
ELSE()
MESSAGE("HDF5 IS NOT FOUND!!!!")
ENDIF()
FIND_PACKAGE(GSL REQUIRED)
IF(GSL_FOUND)
MESSAGE("GSL FOUND!!!")
INCLUDE_DIRECTORIES(${GSL_INCLUDE_DIRS})
ELSE()
MESSAGE("GSL IS NOT FOUND!!!!")
ENDIF()
FIND_PACKAGE(Armadillo 3.9 REQUIRED)
IF(ARMADILLO_FOUND)
MESSAGE("ARMADILLO FOUND!!!")
INCLUDE(FindMKL) # Look for MKL
INCLUDE_DIRECTORIES(${ARMADILLO_INCLUDE_DIRS} ${HDF5_INCLUDE_DIRS} ${ARMADILLO_INCLUDES})
LINK_DIRECTORIES(${ARMADILLO_LIBRARIES} ${HDF5_LIBRARIES})
MESSAGE(STATUS "MKL_FOUND = ${MKL_FOUND}")
IF(MKL_FOUND)
MESSAGE("MKL_INCLUDE_DIRS = ${MKL_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES(${MKL_INCLUDE_DIRS})
LINK_DIRECTORIES(${ARMADILLO_LIBRARIES} ${MKL_INCLUDE_DIRS})
LINK_LIBRARIES(iomp5)
# ELSE()
# FIND_PACKAGE(BLAS)
# FIND_PACKAGE(LAPACK)
# LINK_LIBRARIES(${BLAS_LIBRARIES} ${LAPACK_LIBRARIES})
ENDIF()
ENDIF()
# Make sure we get the correct python2.7 libs and headers.
#SET(PYTHON_INCLUDE_PATH $ENV{PYTHON27_INCLUDE_PATH})
# Uncomment the following line e.g. on rhel6 with non-default location of libpython2.7.so and set PYTHON27_LIB environment variable in $ROOT/build/setenv.sh.
#SET(PYTHON_LIBRARY $ENV{PYTHON27_LIB})
# order of calls is important!
FIND_PACKAGE(PythonInterp 2.7)
FIND_PACKAGE(PythonLibs 2.7)
FIND_PACKAGE(Boost 1.55.0 REQUIRED COMPONENTS python thread date_time system mpi serialization filesystem unit_test_framework program_options)
IF(Boost_FOUND)
MESSAGE("BOOST FOUND!!!")
add_definitions(-DCOMPILE_WITH_BOOST) # set #define COMPILE_WITH_BOOST to 1 in .cpp
SET(Boost_USE_STATIC_LIBS OFF)
SET(Boost_USE_MULTITHREADED ON)
SET(Boost_USE_STATIC_RUNTIME OFF)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
LINK_LIBRARIES(${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${GSL_LIBRARIES}) # Deprecated but so convenient!
#PYTHON_ADD_MODULE(hello hello.cpp)
#FILE(COPY hello.py DESTINATION .)
#ADD_TEST(01-HelloWorld hello.py)
ADD_LIBRARY(toolbox SHARED libsingfel/toolbox.cpp)
TARGET_LINK_LIBRARIES(toolbox ${Boost_LIBRARIES})
#FILE(COPY toolbox.py DESTINATION .)
#ADD_TEST(toolbox2 toolbox.py)
ELSEIF(NOT Boost_FOUND)
MESSAGE("Unable to find correct Boost version. Did you set BOOST_DIR?")
ENDIF()
MESSAGE("BOOST LIBS: ${Boost_LIBRARIES}")
FIND_PACKAGE(MPI REQUIRED)
INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
#SET(CMAKE_CXX_FLAGS "-std=c++0x -g -Wall") # Add c++11 features
#add_definitions(-DCOMPILE_WITH_CXX11=1) # set #define COMPILE_WITH_CXX11 to 1 in .cpp
SET(CMAKE_CXX_FLAGS "-g -Wall")
IF(CMAKE_COMPILER_IS_GNUCXX)
ADD_DEFINITIONS("-Wall")
ELSE()
MESSAGE(FATAL_ERROR "CMakeLists.txt has not been tested/written for your compiler.")
ENDIF()
message("${CMAKE_SOURCE_DIR}")
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake/cuda" ${CMAKE_MODULE_PATH})
MESSAGE("${CMAKE_MODULE_PATH}")
SET(GENERAL_SRC ${LIBSINGFEL}/io.cpp
${LIBSINGFEL}/detector.cpp
${LIBSINGFEL}/beam.cpp
${LIBSINGFEL}/particle.cpp
${LIBSINGFEL}/diffraction.cpp
${LIBSINGFEL}/diffractionVolume.cpp
${LIBSINGFEL}/diffractionPattern.cpp
${LIBSINGFEL}/toolbox.cpp)
SET(GENERAL_LIB ${ARMADILLO_LIBRARIES}
${GSL_LIBRARIES}
${HDF5_LIBRARIES}
${HDF5_HL_LIBRARIES}
${Boost_LIBRARIES})
ADD_SUBDIRECTORY(src)
#ADD_SUBDIRECTORY(test)
ADD_SUBDIRECTORY(libsingfel)