forked from SpinWaveGenie/SpinWaveGenie
/
CMakeLists.txt
83 lines (70 loc) · 2.83 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
project(spin_wave_genie)
cmake_minimum_required (VERSION 2.6)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
set(CMAKE_MACOSX_RPATH FALSE)
#set(CMAKE_SKIP_RPATH TRUE)
set(SPINWAVEGENIE_VERSION_MAJOR "0")
set(SPINWAVEGENIE_VERSION_MINOR "1")
set(SPINWAVEGENIE_VERSION_PATCH "0")
set(SPINWAVEGENIE_VERSION "${SPINWAVEGENIE_VERSION_MAJOR}.${SPINWAVEGENIE_VERSION_MINOR}.${SPINWAVEGENIE_VERSION_PATCH}")
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
if(CMAKE_COMPILER_IS_GNUCXX)
message("compiler detected as: GNU compiler")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEIGEN_DONT_PARALLELIZE -std=c++0x -msse4 -Wall -Wextra -Wno-unused-parameter")
elseif(APPLE)
message("Setting up Xcode for C++11 with libc++.")
if(CMAKE_GENERATOR STREQUAL Xcode)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++ -msse4 -Wall -Wextra -Wpedantic -Wno-unused-parameter")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libstdc++ -msse4 -Wall -Wextra -Wpedantic -Wno-unused-parameter")
endif(CMAKE_COMPILER_IS_GNUCXX)
find_package(NLOPT)
find_package(Eigen3 REQUIRED)
find_package(TBB)
string(FIND ${CMAKE_SYSTEM} "el6" isRHEL6)
if (isRHEL6)
set(Boost_NO_BOOST_CMAKE ON)
endif(isRHEL6)
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
option(BUILD_EXAMPLES "Build SpinWaveGenie Examples" OFF)
option(BUILD_TESTING "Build unit tests" OFF)
option(ENABLE_DOXYGEN "Enables building of documentation with doxygen" OFF)
option(USE_THREADS "Use Threading Building Blocks to improve performance" ON)
if(BUILD_TESTING)
enable_testing()
endif(BUILD_TESTING)
if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
if(USE_THREADS AND TBB_FOUND )
add_definitions(-DUSE_THREADS)
endif()
INCLUDE (CheckIncludeFileCXX)
CHECK_INCLUDE_FILE_CXX( atomic HAVE_ATOMIC)
if(HAVE_ATOMIC)
add_definitions(-DHAVE_ATOMIC_H)
endif()
# add a target to generate API documentation with Doxygen
find_package(Doxygen)
if(ENABLE_DOXYGEN AND DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif(ENABLE_DOXYGEN AND DOXYGEN_FOUND)
add_subdirectory(libSpinWaveGenie)
#add_subdirectory(CubicPerovskite)
#add_subdirectory(MnV2O4)
#add_subdirectory(SrCoO2p5)
#add_subdirectory(CoV2O4)
#add_subdirectory(CubicPerovskite)
#add_subdirectory(MnSb)