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
49 changes: 44 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,29 @@
#

cmake_minimum_required(VERSION 3.19)
project(test_libgrpp_c.x C)
project(test_libgrpp_f90.x Fortran)

include(CMakeDependentOption)
include(CMakePackageConfigHelpers)

set(VERSION_MAJOR 2023)
set(VERSION_MINOR 12)
set(VERSION_PATCH 14)

project(libgrpp
DESCRIPTION "A library for the evaluation of molecular integrals of the generalized relativistic pseudopotential operator (GRPP) over Gaussian functions."
HOMEPAGE_URL https://github.com/aoleynichenko/libgrpp
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
LANGUAGES Fortran C)

set(CMAKE_C_STANDARD 11)
find_package(OpenMP)

# imply -O3 -DNDEBUG, can be changed with cmake -DCMAKE_BUILD_TYPE=DEBUG,etc....

set(CMAKE_BUILD_TYPE Release)

set(libgrpp_APIVERSION ${libgrpp_VERSION_MAJOR}.${libgrpp_VERSION_MINOR})

add_subdirectory(libgrpp)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS} -O3")
Expand Down Expand Up @@ -43,9 +60,8 @@ add_executable(test_libgrpp_f90.x
test_libgrpp_f90/libgrpp.f90
)

target_link_libraries(test_libgrpp_c.x libgrpp -lm ${OpenMP_C_LIBRARIES}) # -pg)
target_link_libraries(test_libgrpp_f90.x libgrpp -lm ${OpenMP_C_LIBRARIES})

target_link_libraries(test_libgrpp_c.x grpp OpenMP::OpenMP_C -m)
target_link_libraries(test_libgrpp_f90.x grpp OpenMP::OpenMP_Fortran -lm)

# enable testing functionality
enable_testing()
Expand All @@ -63,3 +79,26 @@ add_test(NAME UO2 WORKING_DIRECTORY ../test/UO2 COMMAND bash run_test.sh)
foreach (t KCs)
set_property(TEST ${t} PROPERTY ENVIRONMENT "PATH=${CMAKE_BINARY_DIR}:$ENV{PATH}")
endforeach ()

include(GNUInstallDirs)

write_basic_package_version_file(
"${PROJECT_BINARY_DIR}/grppConfigVersion.cmake"
VERSION "${libgrpp_VERSION}"
COMPATIBILITY SameMajorVersion)

configure_file("${PROJECT_SOURCE_DIR}/cmake/grppConfig.cmake.in"
"${PROJECT_BINARY_DIR}/grppConfig.cmake" @ONLY)
configure_file(cmake/libgrpp.pc.in libgrpp.pc @ONLY)

install(FILES "${PROJECT_BINARY_DIR}/grppConfig.cmake"
"${PROJECT_BINARY_DIR}/grppConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")

install(FILES "${PROJECT_BINARY_DIR}/libgrpp.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")

install(DIRECTORY libgrpp
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
PATTERN "*.h")

13 changes: 13 additions & 0 deletions cmake/grppConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!-------------------------------------------------------------------------------------------------!
#! CP2K: A general program to perform molecular dynamics simulations !
#! Copyright 2000-2023 CP2K developers group <https://cp2k.org> !
#! !
#! SPDX-License-Identifier: GPL-2.0-or-later !
#!-------------------------------------------------------------------------------------------------!

cmake_minimum_required(VERSION 3.19)
include(CMakeFindDependencyMacro)

if(NOT TARGET grpp::grpp)
include("${CMAKE_CURRENT_LIST_DIR}/grppTargets.cmake")
endif()
11 changes: 11 additions & 0 deletions cmake/libgrpp.pc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
prefix="@CMAKE_INSTALL_PREFIX@"
exec_prefix="${prefix}"
libdir="${prefix}/@CMAKE_INSTALL_LIBDIR@"
includedir="${prefix}/@CMAKE_INSTALL_INCLUDEDIR@"

Name: @PROJECT_NAME@
Description: @CMAKE_PROJECT_DESCRIPTION@
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
Version: @PROJECT_VERSION@
Cflags: -I"${includedir}/grpp" -I"${includedir}/grpp/@CMAKE_Fortran_COMPILER_ID@-@CMAKE_Fortran_COMPILER_VERSION@"
Libs: -L"${libdir}" -lgrpp
28 changes: 17 additions & 11 deletions libgrpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,7 @@
# Copyright (C) 2021-2023 Alexander Oleynichenko
#

cmake_minimum_required(VERSION 3.19)
project(libgrpp C)

set(CMAKE_C_STANDARD 11)

find_package(OpenMP)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS} -O3")
#add_compile_options(-pg)

add_library(libgrpp
add_library(grpp
angular_integrals.c
binomial.c
diff_gaussian.c
Expand Down Expand Up @@ -53,4 +44,19 @@ add_library(libgrpp
utils.c
)

target_link_libraries(libgrpp -lm)
target_link_libraries(grpp INTERFACE -lm)

set_target_properties(grpp PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C"
POSITION_INDEPENDENT_CODE ON
VERSION ${libgrpp_VERSION}
SOVERSION ${libgrpp_APIVERSION})
include(GNUInstallDirs)
install(
TARGETS grpp
EXPORT libgrpp_targets
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")

install(EXPORT libgrpp_targets
FILE grppTargets.cmake
NAMESPACE grpp::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")