forked from ElectronicStructureLibrary/libxc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LibxcConfig.cmake.in
135 lines (123 loc) · 4.44 KB
/
LibxcConfig.cmake.in
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
# LibxcConfig.cmake
# -----------------
#
# Libxc cmake module.
# This module sets the following variables in your project:
#
# ::
#
# Libxc_FOUND - true if Libxc and all required components found on the system
# Libxc_VERSION - Libxc version in format Major.Minor.Release
# Libxc_INCLUDE_DIRS - Directory where Libxc header is located. Prefer targets.
# Libxc_LIBRARIES - Libxc library(ies) to link against. Prefer targets.
#
#
# Available components: shared static
#
# ::
#
# shared - search for only shared library
# static - search for only static library
# C - search for C library only, even if Fortran available
# Fortran - search for Fortran library (C library always present)
#
#
# Exported targets:
#
# ::
#
#
# If Libxc is found, this module defines the following :prop_tgt:`IMPORTED`
# targets. Target is shared _or_ static, so, for both, use separate, not
# overlapping, installations. If no language components are requested, this
# module defines at least the xc target. ::
#
# Libxc::xc - the main Libxc library with header & defs attached.
# Libxc::xcf03 - the Fortran 2003 Libxc library that depends on Libxc::xc
#
#
# Suggested usage:
#
# ::
#
# find_package(Libxc)
# find_package(Libxc 6.0.0 EXACT CONFIG REQUIRED COMPONENTS shared C)
#
#
# The following variables can be set to guide the search for this package:
#
# ::
#
# Libxc_DIR - CMake variable, set to directory containing this Config file
# CMAKE_PREFIX_PATH - CMake variable, set to root directory of this package
# PATH - environment variable, set to bin directory of this package
# CMAKE_DISABLE_FIND_PACKAGE_Libxc - CMake variable, disables
# find_package(Libxc) when not REQUIRED, perhaps to force internal build
@PACKAGE_INIT@
set(PN Libxc)
set (_valid_components
static
shared
C
Fortran
)
# check library style component
if(@BUILD_SHARED_LIBS@) # BUILD_SHARED_LIBS
set(${PN}_shared_FOUND 1)
else()
set(${PN}_static_FOUND 1)
endif()
list(FIND ${PN}_FIND_COMPONENTS "shared" _seek_shared)
list(FIND ${PN}_FIND_COMPONENTS "static" _seek_static)
# check library language component
# * using EXISTS Targets-Fortran instead of @ENABLE_FORTRAN@ so
# separate C/Fortran packages don't clobber this file
set(${PN}_C_FOUND 1)
list(FIND ${PN}_FIND_COMPONENTS "C" _seek_C)
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/${PN}Targets-Fortran.cmake")
set(${PN}_Fortran_FOUND 1)
endif()
list(FIND ${PN}_FIND_COMPONENTS "Fortran" _seek_Fortran)
check_required_components(${PN})
#-----------------------------------------------------------------------------
# Don't include targets if this file is being picked up by another
# project which has already built this as a subproject
#-----------------------------------------------------------------------------
if(NOT TARGET ${PN}::xc)
if(_seek_Fortran GREATER -1)
set(_target "xcf03")
include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets-Fortran.cmake")
elseif(_seek_C GREATER -1)
set(_target "xc")
include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets-C.cmake")
elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${PN}Targets-Fortran.cmake")
set(_target "xcf03")
include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets-Fortran.cmake")
else()
set(_target "xc")
include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets-C.cmake")
endif()
get_property(_cloc TARGET Libxc::xc PROPERTY LOCATION)
get_property(_ciid TARGET Libxc::xc PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
if (${_target} STREQUAL xc)
set(${PN}_LIBRARIES ${_cloc})
set(${PN}_INCLUDE_DIRS ${_ciid})
elseif (${_target} STREQUAL xcf03)
get_property(_floc TARGET Libxc::xcf03 PROPERTY LOCATION)
set(${PN}_LIBRARIES ${_floc} ${_cloc})
set(${PN}_INCLUDE_DIRS ${_ciid})
endif()
if (CMAKE_VERSION VERSION_GREATER 3.15)
get_property(_loc TARGET ${PN}::${_target} PROPERTY LOCATION)
get_property(_ill TARGET ${PN}::${_target} PROPERTY INTERFACE_LINK_LIBRARIES)
get_property(_id TARGET ${PN}::${_target} PROPERTY INCLUDE_DIRECTORIES)
get_property(_iid TARGET ${PN}::${_target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
message(VERBOSE "Libxc::${_target}")
message(VERBOSE "loc ${_loc}")
message(VERBOSE "ill ${_ill}")
message(VERBOSE "id ${_id}")
message(VERBOSE "iid ${_iid}")
message(VERBOSE "${PN}_LIBRARIES ${${PN}_LIBRARIES}")
message(VERBOSE "${PN}_INCLUDE_DIRS ${${PN}_INCLUDE_DIRS}")
endif()
endif()