Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions cmake/libint2-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
# oo - search for + orca = orca
# bs - search for bagel + standard = bagel
# bo - search for + orca
# Fortran - require the Fortran interface target

@PACKAGE_INIT@

Expand All @@ -55,6 +56,8 @@ list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
# check library language component
include(CMakeFindDependencyMacro)

set(${L2}_Fortran_FOUND @LIBINT2_ENABLE_FORTRAN@)

if(NOT TARGET Eigen3::Eigen)
set(Eigen3_CONFIG @Eigen3_CONFIG@)
if (NOT Eigen3_CONFIG OR NOT EXISTS ${Eigen3_CONFIG})
Expand Down
36 changes: 25 additions & 11 deletions export/CMakeLists.txt.export
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ set(LIBINT2_INSTALL_DATADIR "${CMAKE_INSTALL_DATADIR}/libint/${LIBINT_VERSION}"
set(LIBINT2_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/libint2"
CACHE PATH "LIBINT2 CMAKE install directory")

if(NOT CMAKE_INSTALL_Fortran_MODULES)
set(CMAKE_INSTALL_Fortran_MODULES "${LIBINT2_INSTALL_INCLUDEDIR}")
endif()


# ==== Dependencies ===========================================================

Expand Down Expand Up @@ -668,21 +672,13 @@ if (LIBINT2_ENABLE_FORTRAN)
)

# build module
add_library(
libint_f
OBJECT
fortran/libint_f.F90
)
add_library(libint_f OBJECT fortran/libint_f.F90)
set_source_files_properties(
fortran/libint_f.F90
PROPERTIES
OBJECT_DEPENDS "${PROJECT_BINARY_DIR}/fortran/libint2_types_f.h;${PROJECT_BINARY_DIR}/fortran/fortran_incldefs.h"
)
target_compile_definitions(
libint_f
PRIVATE
__COMPILING_LIBINT2
)
target_compile_definitions(libint_f PRIVATE __COMPILING_LIBINT2)
set_target_properties(
libint_f
PROPERTIES
Expand All @@ -700,6 +696,21 @@ if (LIBINT2_ENABLE_FORTRAN)
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/${BUILDTREE_FMODDIR}/>
)

add_library(int_f STATIC $<TARGET_OBJECTS:libint_f>)
set_target_properties(int_f PROPERTIES OUTPUT_NAME "int2_f")
if (L2_BUILD_SHARED_LIBS)
target_link_libraries(int_f INTERFACE int-shared)
else()
target_link_libraries(int_f INTERFACE int-static)
endif()
target_include_directories(
int_f
INTERFACE
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/fortran>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/${BUILDTREE_FMODDIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_Fortran_MODULES}>
)

# Fortran tests merged into rest of tests

endif (LIBINT2_ENABLE_FORTRAN)
Expand Down Expand Up @@ -733,6 +744,9 @@ endif()
if (L2_BUILD_STATIC_LIBS)
list(APPEND _libint2_install_targets int-static)
endif()
if (LIBINT2_ENABLE_FORTRAN)
list(APPEND _libint2_install_targets int_f)
endif()

install(
TARGETS ${_libint2_install_targets}
Expand Down Expand Up @@ -839,7 +853,7 @@ endif()
if (LIBINT2_ENABLE_FORTRAN)
install(
DIRECTORY ${PROJECT_BINARY_DIR}/${BUILDTREE_FMODDIR}/
DESTINATION "${LIBINT2_INSTALL_INCLUDEDIR}"
DESTINATION "${CMAKE_INSTALL_Fortran_MODULES}"
)
endif()

Expand Down
10 changes: 2 additions & 8 deletions export/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,6 @@ endif (LIBINT2_REQUIRE_CXX_API)

if (LIBINT2_ENABLE_FORTRAN)

# Note: if forming compile line by hand rather than using targets, you'll
# need to include the Fortran module file directory:
# `target_include_directories(... PRIVATE $<TARGET_PROPERTY:libint_f,Fortran_MODULE_DIRECTORY>)`

add_executable(
fortran_example-libint2
EXCLUDE_FROM_ALL
Expand All @@ -254,8 +250,7 @@ if (LIBINT2_ENABLE_FORTRAN)
target_link_libraries(
fortran_example-libint2
PRIVATE
Libint2::int2
libint_f
int_f
)
add_test( # Test #14
NAME libint2/fortran_example/build
Expand Down Expand Up @@ -283,14 +278,13 @@ if (LIBINT2_ENABLE_FORTRAN)
EXCLUDE_FROM_ALL
fortran/test.cc
fortran/test-eri.cc
$<TARGET_OBJECTS:libint_f>
)
target_link_libraries(
fortran_test-libint2
PRIVATE
$<IF:$<TARGET_EXISTS:Libint2::int2-cxx>,Libint2::int2-cxx,Libint2::cxx>
# N.B. cxx compiled library if LIBINT2_REQUIRE_CXX_API_COMPILED=ON else header-only library
libint_f
int_f
)
add_test( # Test #16
NAME libint2/fortran_test/build
Expand Down
Loading