Skip to content

Commit a486a3f

Browse files
robertodrbast
authored andcommitted
Add alias for cleaner use with FetchContent (#91)
* Add alias for cleaner use with FetchContent * Fortran support OFF by default * Fix export of include dirs
1 parent c402ecb commit a486a3f

File tree

7 files changed

+56
-50
lines changed

7 files changed

+56
-50
lines changed

api/CMakeLists.txt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
1+
file(
2+
COPY ${CMAKE_CURRENT_LIST_DIR}/xcfun.h
3+
DESTINATION ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
4+
)
5+
16
install(
27
FILES
38
${CMAKE_CURRENT_LIST_DIR}/xcfun.h
49
DESTINATION
510
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
611
)
712

13+
file(
14+
COPY ${CMAKE_CURRENT_LIST_DIR}/xcfun.F90
15+
DESTINATION ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
16+
)
17+
818
install(
919
FILES
10-
${PROJECT_SOURCE_DIR}/api/xcfun.F90
20+
${CMAKE_CURRENT_LIST_DIR}/xcfun.F90
1121
DESTINATION
12-
${CMAKE_INSTALL_INCLUDEDIR}/XCFun
22+
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
1323
)

api/xcfun.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#pragma once
1616

1717
#ifndef SWIG
18-
#include "XCFunExport.h"
18+
#include "XCFun/XCFunExport.h"
1919
#define XCFun_API XCFun_EXPORT
2020
#else
2121
#define XCFun_API
@@ -59,22 +59,22 @@ enum xc_vars {
5959
XC_A_B, /*! LDA alpha & beta */
6060
XC_N_S, /*! LDA rho and spin */
6161

62-
XC_A_GAA, /*! GGA with grad^2 alpha */
63-
XC_N_GNN, /*! GGA with grad^2 rho */
62+
XC_A_GAA, /*! GGA with grad^2 alpha */
63+
XC_N_GNN, /*! GGA with grad^2 rho */
6464
XC_A_B_GAA_GAB_GBB, /*! GGA with grad^2 alpha & beta */
6565
XC_N_S_GNN_GNS_GSS, /*! GGA with grad^2 rho and spin */
66-
XC_A_GAA_LAPA, /*! metaGGA with grad^2 alpha laplacian */
67-
XC_A_GAA_TAUA, /*! metaGGA with grad^2 alpha kinetic */
66+
XC_A_GAA_LAPA, /*! metaGGA with grad^2 alpha laplacian */
67+
XC_A_GAA_TAUA, /*! metaGGA with grad^2 alpha kinetic */
6868
XC_N_GNN_LAPN, /*! metaGGA with grad^2 rho laplacian */ // 10
69-
XC_N_GNN_TAUN, /*! metaGGA with grad^2 rho kinetic */
69+
XC_N_GNN_TAUN, /*! metaGGA with grad^2 rho kinetic */
7070
XC_A_B_GAA_GAB_GBB_LAPA_LAPB, /*! metaGGA with grad^2 alpha & beta laplacian */
7171
XC_A_B_GAA_GAB_GBB_TAUA_TAUB, /*! metaGGA with grad^2 alpha & beta kinetic */
7272
XC_N_S_GNN_GNS_GSS_LAPN_LAPS, /*! metaGGA with grad^2 rho and spin laplacian */
7373
XC_N_S_GNN_GNS_GSS_TAUN_TAUS, /*! metaGGA with grad^2 rho and spin kinetic */
7474
XC_A_B_GAA_GAB_GBB_LAPA_LAPB_TAUA_TAUB, /*! metaGGA with grad^2 alpha & beta laplacian kinetic */
7575
XC_A_B_GAA_GAB_GBB_LAPA_LAPB_TAUA_TAUB_JPAA_JPBB, /*! metaGGA with grad^2 alpha & beta laplacian kinetic current */
7676
XC_N_S_GNN_GNS_GSS_LAPN_LAPS_TAUN_TAUS, /*! metaGGA with grad^2 rho and spin laplacian kinetic */
77-
XC_A_AX_AY_AZ, /*! GGA with gradient components alpha */
77+
XC_A_AX_AY_AZ, /*! GGA with gradient components alpha */
7878
XC_A_B_AX_AY_AZ_BX_BY_BZ, /*! GGA with gradient components alpha & beta */
7979
XC_N_NX_NY_NZ, /*! GGA with gradient components rho */ // 20
8080
XC_N_S_NX_NY_NZ_SX_SY_SZ, /*! GGA with gradient components rho and spin */
@@ -83,7 +83,7 @@ enum xc_vars {
8383
XC_N_NX_NY_NZ_TAUN, /*! metaGGA with gradient components rho */
8484
XC_N_S_NX_NY_NZ_SX_SY_SZ_TAUN_TAUS, /*! metaGGA with gradient components rho and spin */
8585
/* 2:nd order Taylor coefficients of alpha density, 1+3+6=10 numbers, rev gradlex order */
86-
XC_A_2ND_TAYLOR, /*! 2:nd order Taylor alpha */
86+
XC_A_2ND_TAYLOR, /*! 2:nd order Taylor alpha */
8787
/* 2:nd order Taylor expansion of alpha and beta densities (first alpha, then beta) 20 numbers */
8888
XC_A_B_2ND_TAYLOR, /*! 2:nd order Taylor alpha & beta */
8989
XC_N_2ND_TAYLOR, /*! 2:nd order Taylor rho */
@@ -134,10 +134,10 @@ XCFun_API int xc_user_eval_setup(xc_functional fun,
134134
const unsigned int func_type, // LDA (0), GGA (1), metaGGA (2), taylor (3)
135135
const unsigned int dens_type, // A (0), N (1), A_B (2), N_S (3)
136136
const unsigned int mode_type, // same as the enum list
137-
const unsigned int laplacian, // 0/1 laplacian no/yes
137+
const unsigned int laplacian, // 0/1 laplacian no/yes
138138
const unsigned int kinetic, // 0/1 kinetic energy no/yes
139139
const unsigned int current, // 0/1 current density no/yes
140-
const unsigned int explicit_derivatives); // 0/1 gamma vs explicit partial derivatives
140+
const unsigned int explicit_derivatives); // 0/1 gamma vs explicit partial derivatives
141141

142142
// Try to set the functional evaluation vars, mode and order
143143
// return some combination of XC_E* if an error occurs, else 0.

cmake/custom/fc_optional.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
# - "'-DCMAKE_Fortran_COMPILER={0} -DEXTRA_FCFLAGS=\"{1}\"'.format(arguments['--fc'], arguments['--extra-fc-flags'])"
4040
# - "'-DENABLE_FC_SUPPORT={0}'.format(arguments['--fc-support'])"
4141

42-
option(ENABLE_FC_SUPPORT "Enable Fortran language support" ON)
42+
option(ENABLE_FC_SUPPORT "Enable Fortran language support" OFF)
4343

4444
if(ENABLE_FC_SUPPORT)
4545
enable_language(Fortran)

python/xcfun_swig.i

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
%{
44
#define SWIG_FILE_WITH_INIT
5-
#include "xcfun.h"
5+
#include "XCFun/xcfun.h"
66
%}
77

88
%include "numpy.i"

src/CMakeLists.txt

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
1-
add_library(xcfun-objlib OBJECT "")
1+
add_library(xcfun OBJECT "")
22

3-
set_target_properties(xcfun-objlib
3+
include(GenerateExportHeader)
4+
generate_export_header(xcfun
5+
BASE_NAME "XCFun"
6+
EXPORT_MACRO_NAME "XCFun_EXPORT"
7+
EXPORT_FILE_NAME "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/XCFunExport.h"
8+
DEPRECATED_MACRO_NAME "XCFun_DEPRECATED"
9+
NO_EXPORT_MACRO_NAME "XCFun_NO_EXPORT"
10+
STATIC_DEFINE "XCFun_STATIC_DEFINE"
11+
NO_DEPRECATED_MACRO_NAME "XCFun_NO_DEPRECATED"
12+
DEFINE_NO_DEPRECATED
13+
)
14+
install(
15+
FILES ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/XCFunExport.h
16+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/XCFun
17+
)
18+
19+
set_target_properties(xcfun
420
PROPERTIES
521
POSITION_INDEPENDENT_CODE 1
6-
CXX_VISIBILITY_PRESET hidden
7-
VISIBILITY_INLINES_HIDDEN 1
822
)
9-
target_compile_options(xcfun-objlib
23+
target_compile_options(xcfun
1024
# FIXME These should be PUBLIC, but then Fortran inherits flags it doesn't
1125
# understand...
1226
PRIVATE
@@ -16,24 +30,24 @@ target_compile_options(xcfun-objlib
1630
"$<$<CONFIG:Release>:${XCFun_CXX_FLAGS_RELEASE}>"
1731
"$<$<BOOL:${ENABLE_CODE_COVERAGE}>:${XCFun_CXX_FLAGS_COVERAGE}>"
1832
)
19-
target_compile_definitions(xcfun-objlib
33+
target_compile_definitions(xcfun
2034
PUBLIC
2135
XCFun_EXPORTS
2236
XC_MAX_ORDER=${XCFun_XC_MAX_ORDER}
2337
)
24-
target_include_directories(xcfun-objlib
38+
target_include_directories(xcfun
2539
PRIVATE
2640
${PROJECT_SOURCE_DIR}/api
2741
${PROJECT_BINARY_DIR}/include
2842
${CMAKE_CURRENT_SOURCE_DIR}
2943
)
30-
target_include_directories(xcfun-objlib
44+
target_include_directories(xcfun
3145
SYSTEM
3246
PRIVATE
3347
${PROJECT_SOURCE_DIR}/external/upstream/taylor
3448
)
3549

36-
target_sources(xcfun-objlib
50+
target_sources(xcfun
3751
PRIVATE
3852
xcfun.cpp
3953
xcint.cpp
@@ -71,7 +85,7 @@ add_subdirectory(functionals)
7185

7286
if(NOT STATIC_LIBRARY_ONLY)
7387
add_library(xcfun-shared SHARED
74-
$<TARGET_OBJECTS:xcfun-objlib>
88+
$<TARGET_OBJECTS:xcfun>
7589
$<TARGET_OBJECTS:xcfun-c-objlib>
7690
)
7791
target_compile_definitions(xcfun-shared
@@ -82,8 +96,7 @@ if(NOT STATIC_LIBRARY_ONLY)
8296
)
8397
target_include_directories(xcfun-shared
8498
INTERFACE
85-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/api>
86-
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
99+
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}>
87100
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
88101
)
89102
target_link_libraries(xcfun-shared
@@ -112,7 +125,7 @@ endif()
112125

113126
if(NOT SHARED_LIBRARY_ONLY)
114127
add_library(xcfun-static STATIC
115-
$<TARGET_OBJECTS:xcfun-objlib>
128+
$<TARGET_OBJECTS:xcfun>
116129
$<TARGET_OBJECTS:xcfun-c-objlib>
117130
)
118131
target_compile_definitions(xcfun-static
@@ -123,8 +136,7 @@ if(NOT SHARED_LIBRARY_ONLY)
123136
)
124137
target_include_directories(xcfun-static
125138
INTERFACE
126-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/api>
127-
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
139+
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}>
128140
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
129141
)
130142
target_link_libraries(xcfun-static
@@ -146,31 +158,15 @@ if(NOT SHARED_LIBRARY_ONLY)
146158
)
147159
endif()
148160

161+
# The second alias is useful with FetchContent
149162
if(STATIC_LIBRARY_ONLY)
150163
add_library(XCFun ALIAS xcfun-static)
164+
add_library(XCFun::xcfun ALIAS xcfun-static)
151165
else()
152166
add_library(XCFun ALIAS xcfun-shared)
167+
add_library(XCFun::xcfun ALIAS xcfun-shared)
153168
endif()
154169

155-
include(GenerateExportHeader)
156-
generate_export_header(XCFun
157-
BASE_NAME "XCFun"
158-
EXPORT_MACRO_NAME "XCFun_EXPORT"
159-
EXPORT_FILE_NAME "XCFunExport.h"
160-
DEPRECATED_MACRO_NAME "XCFun_DEPRECATED"
161-
NO_EXPORT_MACRO_NAME "XCFun_NO_EXPORT"
162-
STATIC_DEFINE "XCFun_STATIC_DEFINE"
163-
NO_DEPRECATED_MACRO_NAME "XCFun_NO_DEPRECATED"
164-
DEFINE_NO_DEPRECATED)
165-
file(
166-
COPY ${CMAKE_CURRENT_BINARY_DIR}/XCFunExport.h
167-
DESTINATION ${PROJECT_BINARY_DIR}/include
168-
)
169-
install(
170-
FILES ${PROJECT_BINARY_DIR}/include/XCFunExport.h
171-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/XCFun
172-
)
173-
174170
# <<< Export Config >>>
175171
include(CMakePackageConfigHelpers)
176172
write_basic_package_version_file(

src/functionals/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set(CMAKE_INCLUDE_CURRENT_DIR ON)
22

3-
target_sources(xcfun-objlib
3+
target_sources(xcfun
44
PRIVATE
55
${CMAKE_CURRENT_SOURCE_DIR}/aliases.cpp
66
${CMAKE_CURRENT_SOURCE_DIR}/apbec.cpp

test/testall.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "xcfun.h"
1+
#include "XCFun/xcfun.h"
22
#include <assert.h>
33
#include <math.h>
44
#include <stdio.h>

0 commit comments

Comments
 (0)