-
Notifications
You must be signed in to change notification settings - Fork 34
/
CMakeLists.txt
157 lines (139 loc) · 6.77 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
144
145
146
147
148
149
150
151
152
153
154
155
156
cmake_policy (SET CMP0022 NEW)
cmake_policy (SET CMP0028 NEW)
set (CHEMPS2LIB_SOURCE_FILES "CASPT2.cpp"
"CASSCF.cpp"
"CASSCFdebug.cpp"
"CASSCFnewtonraphson.cpp"
"CASSCFpt2.cpp"
"ConjugateGradient.cpp"
"ConvergenceScheme.cpp"
"Correlations.cpp"
"Cumulant.cpp"
"Davidson.cpp"
"DIIS.cpp"
"DMRG.cpp"
"DMRGfock.cpp"
"DMRGmpsio.cpp"
"DMRGoperators.cpp"
"DMRGoperators3RDM.cpp"
"DMRGSCFindices.cpp"
"DMRGSCFintegrals.cpp"
"DMRGSCFmatrix.cpp"
"DMRGSCFoptions.cpp"
"DMRGSCFrotations.cpp"
"DMRGSCFunitary.cpp"
"DMRGSCFwtilde.cpp"
"DMRGtechnics.cpp"
"EdmistonRuedenberg.cpp"
"Excitation.cpp"
"FCI.cpp"
"FourIndex.cpp"
"Hamiltonian.cpp"
"Heff.cpp"
"HeffDiagonal.cpp"
"HeffDiagrams1.cpp"
"HeffDiagrams2.cpp"
"HeffDiagrams3.cpp"
"HeffDiagrams4.cpp"
"HeffDiagrams5.cpp"
"Initialize.cpp"
"Irreps.cpp"
"Molden.cpp"
"PrintLicense.cpp"
"Problem.cpp"
"Sobject.cpp"
"SyBookkeeper.cpp"
"Tensor3RDM.cpp"
"TensorF0.cpp"
"TensorF1.cpp"
"TensorGYZ.cpp"
"TensorKM.cpp"
"TensorL.cpp"
"TensorO.cpp"
"TensorOperator.cpp"
"TensorQ.cpp"
"TensorS0.cpp"
"TensorS1.cpp"
"TensorT.cpp"
"TensorX.cpp"
"ThreeDM.cpp"
"TwoDM.cpp"
"TwoIndex.cpp"
"Wigner.cpp")
add_library (chemps2-base OBJECT ${CHEMPS2LIB_SOURCE_FILES})
target_include_directories (chemps2-base PRIVATE ${CheMPS2_SOURCE_DIR}/CheMPS2/include/chemps2
$<TARGET_PROPERTY:tgt::hdf5,INTERFACE_INCLUDE_DIRECTORIES>)
if (BUILD_FPIC OR NOT STATIC_ONLY)
set_target_properties (chemps2-base PROPERTIES POSITION_INDEPENDENT_CODE 1)
endif()
if (NOT STATIC_ONLY)
add_library (chemps2-shared SHARED $<TARGET_OBJECTS:chemps2-base>)
target_link_libraries (chemps2-shared PRIVATE ${LIBC_INTERJECT})
target_link_libraries (chemps2-shared PUBLIC tgt::lapack
tgt::hdf5)
set_target_properties (chemps2-shared PROPERTIES SOVERSION ${CheMPS2_LIB_SOVERSION}
MACOSX_RPATH ON
OUTPUT_NAME "chemps2"
EXPORT_NAME "chemps2")
endif()
if (NOT SHARED_ONLY)
add_library (chemps2-static STATIC $<TARGET_OBJECTS:chemps2-base>)
target_link_libraries (chemps2-static PRIVATE ${LIBC_INTERJECT})
target_link_libraries (chemps2-static PUBLIC tgt::lapack
tgt::hdf5)
set_target_properties (chemps2-static PROPERTIES OUTPUT_NAME "chemps2"
EXPORT_NAME "chemps2")
endif()
if (STATIC_ONLY)
add_library (chemps2-lib ALIAS chemps2-static)
else ()
add_library (chemps2-lib ALIAS chemps2-shared)
endif()
add_executable (chemps2-bin executable.cpp)
target_link_libraries (chemps2-bin chemps2-lib ${LIBC_INTERJECT})
set_target_properties (chemps2-bin PROPERTIES OUTPUT_NAME "chemps2")
# <<< Install >>>
if (NOT STATIC_ONLY)
install (TARGETS chemps2-shared chemps2-bin
EXPORT "${PROJECT_NAME}Targets-shared"
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
if (NOT SHARED_ONLY)
install (TARGETS chemps2-static chemps2-bin
EXPORT "${PROJECT_NAME}Targets-static"
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
install (DIRECTORY include/chemps2/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/chemps2
FILES_MATCHING PATTERN "*.h")
# <<< Export interface >>>
if (NOT STATIC_ONLY)
if (APPLE)
set_target_properties(chemps2-shared PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
endif()
target_compile_definitions (chemps2-shared INTERFACE USING_${PROJECT_NAME})
target_include_directories (chemps2-shared INTERFACE $<BUILD_INTERFACE:${CheMPS2_SOURCE_DIR}/CheMPS2/include/chemps2>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<TARGET_PROPERTY:tgt::hdf5,INTERFACE_INCLUDE_DIRECTORIES>)
endif()
if (NOT SHARED_ONLY)
target_compile_definitions (chemps2-static INTERFACE USING_${PROJECT_NAME})
target_include_directories (chemps2-static INTERFACE $<BUILD_INTERFACE:${CheMPS2_SOURCE_DIR}/CheMPS2/include/chemps2>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<TARGET_PROPERTY:tgt::hdf5,INTERFACE_INCLUDE_DIRECTORIES>)
endif()
# <<< Export Config >>>
# explicit "share" not "DATADIR" for CMake search path
set (CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}")
if (NOT STATIC_ONLY)
install (EXPORT "${PROJECT_NAME}Targets-shared"
NAMESPACE "${PROJECT_NAME}::"
DESTINATION ${CMAKECONFIG_INSTALL_DIR})
endif()
if (NOT SHARED_ONLY)
install (EXPORT "${PROJECT_NAME}Targets-static"
NAMESPACE "${PROJECT_NAME}::"
DESTINATION ${CMAKECONFIG_INSTALL_DIR})
endif()