mirror of https://github.com/phonopy/phono3py.git
Update cmake recipe for c modules
This commit is contained in:
parent
9fad93726e
commit
b48db9189a
|
@ -0,0 +1,2 @@
|
||||||
|
BasedOnStyle: Google
|
||||||
|
IndentWidth: 4
|
|
@ -35,3 +35,24 @@ repos:
|
||||||
hooks:
|
hooks:
|
||||||
- id: isort
|
- id: isort
|
||||||
name: isort (python)
|
name: isort (python)
|
||||||
|
|
||||||
|
- repo: https://github.com/Takishima/cmake-pre-commit-hooks
|
||||||
|
rev: v1.5.3
|
||||||
|
hooks:
|
||||||
|
- id: clang-format
|
||||||
|
args:
|
||||||
|
- '-B_build-pre-commit'
|
||||||
|
- '-DWITH_Fortran=ON'
|
||||||
|
- '-DWITH_TESTS=ON'
|
||||||
|
- '-i'
|
||||||
|
stages: [manual]
|
||||||
|
- id: clang-tidy
|
||||||
|
args:
|
||||||
|
- '-B_build-pre-commit'
|
||||||
|
- '-DWITH_Fortran=ON'
|
||||||
|
- '-DWITH_TESTS=ON'
|
||||||
|
# - '--'
|
||||||
|
# - '-I/Users/togo/.miniforge/envs/dev/include'
|
||||||
|
# - '-I/Users/togo/.miniforge/envs/dev/include/python3.10'
|
||||||
|
# - '-I/Users/togo/.miniforge/envs/dev/lib/python3.10/site-packages/numpy/core/include'
|
||||||
|
stages: [manual]
|
||||||
|
|
375
CMakeLists.txt
375
CMakeLists.txt
|
@ -1,19 +1,36 @@
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.15)
|
||||||
cmake_policy(SET CMP0007 NEW)
|
cmake_policy(SET CMP0007 NEW)
|
||||||
|
|
||||||
project(phono3py C)
|
project(phono3py C)
|
||||||
|
|
||||||
|
option(USE_OpenMP "Option to search OpenMP library" ON)
|
||||||
|
|
||||||
|
# Sanity check if project is imported
|
||||||
|
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
|
||||||
|
option(WITH_TESTS "build unit tests" ON)
|
||||||
|
else()
|
||||||
|
option(WITH_TESTS "build unit tests" OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(BUILD_SHARED_LIBRARIES "Option to build shared library" OFF)
|
||||||
|
if(WITH_TESTS)
|
||||||
|
set(BUILD_SHARED_LIBRARIES ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_MACOSX_RPATH 1)
|
set(CMAKE_MACOSX_RPATH 1)
|
||||||
set(CMAKE_C_FLAGS_RELEASE "-Wall -O2")
|
set(CMAKE_C_FLAGS_RELEASE "-Wall -O2")
|
||||||
set(CMAKE_C_FLAGS_DEBUG "-g -DLAGWARNING -DTHMWARNING")
|
set(CMAKE_C_FLAGS_DEBUG "-g -DLAGWARNING -DTHMWARNING")
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE Release)
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
endif(NOT CMAKE_BUILD_TYPE)
|
endif(NOT CMAKE_BUILD_TYPE)
|
||||||
|
|
||||||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
||||||
message(STATUS "CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}")
|
message(STATUS "CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}")
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
# set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
||||||
|
|
||||||
|
# set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
# Version numbers
|
# Version numbers
|
||||||
file(READ ${PROJECT_SOURCE_DIR}/phono3py/version.py version_file)
|
file(READ ${PROJECT_SOURCE_DIR}/phono3py/version.py version_file)
|
||||||
|
@ -24,199 +41,219 @@ set(phono3py_micro_version ${CMAKE_MATCH_3})
|
||||||
set(serial "${phono3py_major_version}.${phono3py_minor_version}.${phono3py_micro_version}")
|
set(serial "${phono3py_major_version}.${phono3py_minor_version}.${phono3py_micro_version}")
|
||||||
set(soserial "1")
|
set(soserial "1")
|
||||||
|
|
||||||
if (USE_CONDA_PATH)
|
if(USE_CONDA_PATH)
|
||||||
message(STATUS "$ENV{CONDA_PREFIX}")
|
message(STATUS "$ENV{CONDA_PREFIX}")
|
||||||
set(CMAKE_MODULE_PATH $ENV{CONDA_PREFIX})
|
set(CMAKE_MODULE_PATH $ENV{CONDA_PREFIX})
|
||||||
set(MY_INCLUDES $ENV{CONDA_PREFIX}/include ${PROJECT_SOURCE_DIR}/c)
|
set(MY_INCLUDES $ENV{CONDA_PREFIX}/include ${PROJECT_SOURCE_DIR}/c)
|
||||||
link_directories($ENV{CONDA_PREFIX}/lib)
|
link_directories($ENV{CONDA_PREFIX}/lib)
|
||||||
else()
|
else()
|
||||||
set(MY_INCLUDES ${PROJECT_SOURCE_DIR}/c)
|
set(MY_INCLUDES ${PROJECT_SOURCE_DIR}/c)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_OpenMP "Option to search OpenMP library" ON)
|
if(USE_OpenMP)
|
||||||
if (USE_OpenMP)
|
message(STATUS "Find OpenMP library")
|
||||||
message(STATUS "Find OpenMP library")
|
find_package(OpenMP)
|
||||||
find_package(OpenMP)
|
|
||||||
if (OpenMP_FOUND)
|
if(OpenMP_FOUND)
|
||||||
message(STATUS "OpenMP libs: ${OpenMP_C_LIBRARIES}")
|
message(STATUS "OpenMP libs: ${OpenMP_C_LIBRARIES}")
|
||||||
message(STATUS "OpenMP flags: ${OpenMP_C_FLAGS}")
|
message(STATUS "OpenMP flags: ${OpenMP_C_FLAGS}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (PHONO3PY OR PHONONMOD)
|
if(PHONO3PY OR PHONONMOD)
|
||||||
find_package(BLAS REQUIRED) # set BLAS_LIBRARIES
|
find_package(BLAS REQUIRED) # set BLAS_LIBRARIES
|
||||||
if (BLAS_FOUND)
|
|
||||||
message(STATUS "BLAS libs: ${BLAS_LIBRARIES}")
|
if(BLAS_FOUND)
|
||||||
message(STATUS "BLAS flags: ${BLAS_LINKER_FLAGS}")
|
message(STATUS "BLAS libs: ${BLAS_LIBRARIES}")
|
||||||
endif()
|
message(STATUS "BLAS flags: ${BLAS_LINKER_FLAGS}")
|
||||||
find_package(LAPACK REQUIRED) # set LAPACK_LIBRARIES
|
endif()
|
||||||
if (LAPACK_FOUND)
|
|
||||||
message(STATUS "LAPACK libs: ${LAPACK_LIBRARIES}")
|
find_package(LAPACK REQUIRED) # set LAPACK_LIBRARIES
|
||||||
message(STATUS "LAPACK flags: ${LAPACK_LINKER_FLAGS}")
|
|
||||||
endif()
|
if(LAPACK_FOUND)
|
||||||
|
message(STATUS "LAPACK libs: ${LAPACK_LIBRARIES}")
|
||||||
|
message(STATUS "LAPACK flags: ${LAPACK_LINKER_FLAGS}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (PHONO3PY OR PHONONMOD)
|
if(PHONO3PY OR PHONONMOD)
|
||||||
if (BLAS_LIBRARIES MATCHES "libmkl")
|
if(BLAS_LIBRARIES MATCHES "libmkl")
|
||||||
message(STATUS "MKL detected: Set C-macros MKL_LAPACKE MULTITHREADED_BLAS")
|
message(STATUS "MKL detected: Set C-macros MKL_LAPACKE MULTITHREADED_BLAS")
|
||||||
endif()
|
endif()
|
||||||
if (BLAS_LIBRARIES MATCHES "libopenblas")
|
|
||||||
message(STATUS "OpenBLAS detected: Set C-macro MULTITHREADED_BLAS")
|
if(BLAS_LIBRARIES MATCHES "libopenblas")
|
||||||
endif()
|
message(STATUS "OpenBLAS detected: Set C-macro MULTITHREADED_BLAS")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
############
|
# ###########
|
||||||
# phono3py #
|
# phono3py #
|
||||||
############
|
# ###########
|
||||||
if (PHONO3PY)
|
if(PHONO3PY)
|
||||||
# Source code
|
# Source code
|
||||||
set(SOURCES_PHONO3PY
|
set(SOURCES_PHONO3PY
|
||||||
${PROJECT_SOURCE_DIR}/c/bzgrid.c
|
${PROJECT_SOURCE_DIR}/c/bzgrid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/collision_matrix.c
|
${PROJECT_SOURCE_DIR}/c/collision_matrix.c
|
||||||
${PROJECT_SOURCE_DIR}/c/fc3.c
|
${PROJECT_SOURCE_DIR}/c/fc3.c
|
||||||
${PROJECT_SOURCE_DIR}/c/grgrid.c
|
${PROJECT_SOURCE_DIR}/c/grgrid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/imag_self_energy_with_g.c
|
${PROJECT_SOURCE_DIR}/c/imag_self_energy_with_g.c
|
||||||
${PROJECT_SOURCE_DIR}/c/interaction.c
|
${PROJECT_SOURCE_DIR}/c/interaction.c
|
||||||
${PROJECT_SOURCE_DIR}/c/isotope.c
|
${PROJECT_SOURCE_DIR}/c/isotope.c
|
||||||
${PROJECT_SOURCE_DIR}/c/lagrid.c
|
${PROJECT_SOURCE_DIR}/c/lagrid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/lapack_wrapper.c
|
${PROJECT_SOURCE_DIR}/c/lapack_wrapper.c
|
||||||
${PROJECT_SOURCE_DIR}/c/phono3py.c
|
${PROJECT_SOURCE_DIR}/c/phono3py.c
|
||||||
${PROJECT_SOURCE_DIR}/c/phonoc_utils.c
|
${PROJECT_SOURCE_DIR}/c/phonoc_utils.c
|
||||||
${PROJECT_SOURCE_DIR}/c/pp_collision.c
|
${PROJECT_SOURCE_DIR}/c/pp_collision.c
|
||||||
${PROJECT_SOURCE_DIR}/c/real_self_energy.c
|
${PROJECT_SOURCE_DIR}/c/real_self_energy.c
|
||||||
${PROJECT_SOURCE_DIR}/c/real_to_reciprocal.c
|
${PROJECT_SOURCE_DIR}/c/real_to_reciprocal.c
|
||||||
${PROJECT_SOURCE_DIR}/c/reciprocal_to_normal.c
|
${PROJECT_SOURCE_DIR}/c/reciprocal_to_normal.c
|
||||||
${PROJECT_SOURCE_DIR}/c/snf3x3.c
|
${PROJECT_SOURCE_DIR}/c/snf3x3.c
|
||||||
${PROJECT_SOURCE_DIR}/c/tetrahedron_method.c
|
${PROJECT_SOURCE_DIR}/c/tetrahedron_method.c
|
||||||
${PROJECT_SOURCE_DIR}/c/triplet.c
|
${PROJECT_SOURCE_DIR}/c/triplet.c
|
||||||
${PROJECT_SOURCE_DIR}/c/triplet_grid.c
|
${PROJECT_SOURCE_DIR}/c/triplet_grid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/triplet_iw.c)
|
${PROJECT_SOURCE_DIR}/c/triplet_iw.c)
|
||||||
|
|
||||||
if (BUILD_SHARED_LIBRARIES)
|
if(BUILD_SHARED_LIBRARIES)
|
||||||
# Shared library
|
# Shared library
|
||||||
add_library(ph3py SHARED ${SOURCES_PHONO3PY})
|
add_library(ph3py SHARED ${SOURCES_PHONO3PY})
|
||||||
target_link_libraries(ph3py m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
target_link_libraries(ph3py m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
||||||
target_include_directories(ph3py PRIVATE ${MY_INCLUDES})
|
target_include_directories(ph3py PRIVATE ${MY_INCLUDES})
|
||||||
target_compile_options(ph3py PRIVATE ${OpenMP_C_FLAGS})
|
target_compile_options(ph3py PRIVATE ${OpenMP_C_FLAGS})
|
||||||
if (BLAS_LIBRARIES MATCHES "libmkl")
|
|
||||||
target_compile_definitions(ph3py PRIVATE MKL_LAPACKE THM_EPSILON=1e-10)
|
if(BLAS_LIBRARIES MATCHES "libmkl")
|
||||||
|
target_compile_definitions(ph3py PRIVATE MKL_LAPACKE THM_EPSILON=1e-10)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BLAS_LIBRARIES MATCHES "libopenblas")
|
||||||
|
target_compile_definitions(ph3py PRIVATE THM_EPSILON=1e-10)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(TARGET ph3py PROPERTY VERSION ${serial})
|
||||||
|
set_property(TARGET ph3py PROPERTY SOVERSION ${soserial})
|
||||||
|
install(TARGETS ph3py LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
endif()
|
endif()
|
||||||
if (BLAS_LIBRARIES MATCHES "libopenblas")
|
|
||||||
target_compile_definitions(ph3py PRIVATE THM_EPSILON=1e-10)
|
# Static link library
|
||||||
|
add_library(ph3py_static STATIC ${SOURCES_PHONO3PY})
|
||||||
|
target_link_libraries(ph3py_static m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
||||||
|
target_include_directories(ph3py_static PRIVATE ${MY_INCLUDES})
|
||||||
|
target_compile_options(ph3py_static PRIVATE ${OpenMP_C_FLAGS})
|
||||||
|
|
||||||
|
if(BLAS_LIBRARIES MATCHES "libmkl")
|
||||||
|
target_compile_definitions(ph3py_static PRIVATE MKL_LAPACKE THM_EPSILON=1e-10)
|
||||||
endif()
|
endif()
|
||||||
set_property(TARGET ph3py PROPERTY VERSION ${serial})
|
|
||||||
set_property(TARGET ph3py PROPERTY SOVERSION ${soserial})
|
|
||||||
install(TARGETS ph3py LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Static link library
|
if(BLAS_LIBRARIES MATCHES "libopenblas")
|
||||||
add_library(ph3py_static STATIC ${SOURCES_PHONO3PY})
|
target_compile_definitions(ph3py_static PRIVATE THM_EPSILON=1e-10)
|
||||||
target_link_libraries(ph3py_static m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
endif()
|
||||||
target_include_directories(ph3py_static PRIVATE ${MY_INCLUDES})
|
|
||||||
target_compile_options(ph3py_static PRIVATE ${OpenMP_C_FLAGS})
|
|
||||||
if (BLAS_LIBRARIES MATCHES "libmkl")
|
|
||||||
target_compile_definitions(ph3py_static PRIVATE MKL_LAPACKE THM_EPSILON=1e-10)
|
|
||||||
endif()
|
|
||||||
if (BLAS_LIBRARIES MATCHES "libopenblas")
|
|
||||||
target_compile_definitions(ph3py_static PRIVATE THM_EPSILON=1e-10)
|
|
||||||
endif()
|
|
||||||
set_property(TARGET ph3py_static PROPERTY VERSION ${serial})
|
|
||||||
set_property(TARGET ph3py_static PROPERTY SOVERSION ${soserial})
|
|
||||||
set_property(TARGET ph3py_static PROPERTY OUTPUT_NAME ph3py)
|
|
||||||
install(TARGETS ph3py_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
|
|
||||||
# Header file
|
set_property(TARGET ph3py_static PROPERTY VERSION ${serial})
|
||||||
install(FILES ${PROJECT_SOURCE_DIR}/c/phono3py.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
set_property(TARGET ph3py_static PROPERTY SOVERSION ${soserial})
|
||||||
|
set_property(TARGET ph3py_static PROPERTY OUTPUT_NAME ph3py)
|
||||||
|
install(TARGETS ph3py_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
|
# Header file
|
||||||
|
install(FILES ${PROJECT_SOURCE_DIR}/c/phono3py.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#############
|
# ############
|
||||||
# phononmod #
|
# phononmod #
|
||||||
#############
|
# ############
|
||||||
if (PHONONMOD)
|
if(PHONONMOD)
|
||||||
# Source code
|
# Source code
|
||||||
set(SOURCES_PHONONMOD
|
set(SOURCES_PHONONMOD
|
||||||
${PROJECT_SOURCE_DIR}/c/dynmat.c
|
${PROJECT_SOURCE_DIR}/c/dynmat.c
|
||||||
${PROJECT_SOURCE_DIR}/c/lapack_wrapper.c
|
${PROJECT_SOURCE_DIR}/c/lapack_wrapper.c
|
||||||
${PROJECT_SOURCE_DIR}/c/phonon.c
|
${PROJECT_SOURCE_DIR}/c/phonon.c
|
||||||
${PROJECT_SOURCE_DIR}/c/phononmod.c)
|
${PROJECT_SOURCE_DIR}/c/phononmod.c)
|
||||||
|
|
||||||
if (BUILD_SHARED_LIBRARIES)
|
if(BUILD_SHARED_LIBRARIES)
|
||||||
# Shared library
|
# Shared library
|
||||||
add_library(phmod SHARED ${SOURCES_PHONONMOD})
|
add_library(phmod SHARED ${SOURCES_PHONONMOD})
|
||||||
target_link_libraries(phmod m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
target_link_libraries(phmod m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
||||||
target_include_directories(phmod PRIVATE ${MY_INCLUDES})
|
target_include_directories(phmod PRIVATE ${MY_INCLUDES})
|
||||||
target_compile_options(phmod PRIVATE ${OpenMP_C_FLAGS})
|
target_compile_options(phmod PRIVATE ${OpenMP_C_FLAGS})
|
||||||
if (BLAS_LIBRARIES MATCHES "libmkl")
|
|
||||||
target_compile_definitions(phmod PRIVATE MKL_LAPACKE MULTITHREADED_BLAS)
|
if(BLAS_LIBRARIES MATCHES "libmkl")
|
||||||
|
target_compile_definitions(phmod PRIVATE MKL_LAPACKE MULTITHREADED_BLAS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BLAS_LIBRARIES MATCHES "libopenblas")
|
||||||
|
target_compile_definitions(phmod PRIVATE MULTITHREADED_BLAS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(TARGET phmod PROPERTY VERSION ${serial})
|
||||||
|
set_property(TARGET phmod PROPERTY SOVERSION ${soserial})
|
||||||
|
install(TARGETS phmod LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
endif()
|
endif()
|
||||||
if (BLAS_LIBRARIES MATCHES "libopenblas")
|
|
||||||
target_compile_definitions(phmod PRIVATE MULTITHREADED_BLAS)
|
# Static link library
|
||||||
|
add_library(phmod_static STATIC ${SOURCES_PHONONMOD})
|
||||||
|
target_link_libraries(phmod_static m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
||||||
|
target_include_directories(phmod_static PRIVATE ${MY_INCLUDES})
|
||||||
|
target_compile_options(phmod_static PRIVATE ${OpenMP_C_FLAGS})
|
||||||
|
|
||||||
|
if(BLAS_LIBRARIES MATCHES "libmkl")
|
||||||
|
target_compile_definitions(phmod_static PRIVATE MKL_LAPACKE MULTITHREADED_BLAS)
|
||||||
endif()
|
endif()
|
||||||
set_property(TARGET phmod PROPERTY VERSION ${serial})
|
|
||||||
set_property(TARGET phmod PROPERTY SOVERSION ${soserial})
|
|
||||||
install(TARGETS phmod LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Static link library
|
if(BLAS_LIBRARIES MATCHES "libopenblas")
|
||||||
add_library(phmod_static STATIC ${SOURCES_PHONONMOD})
|
target_compile_definitions(phmod_static PRIVATE MULTITHREADED_BLAS)
|
||||||
target_link_libraries(phmod_static m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${OpenMP_C_LIBRARIES})
|
endif()
|
||||||
target_include_directories(phmod_static PRIVATE ${MY_INCLUDES})
|
|
||||||
target_compile_options(phmod_static PRIVATE ${OpenMP_C_FLAGS})
|
|
||||||
if (BLAS_LIBRARIES MATCHES "libmkl")
|
|
||||||
target_compile_definitions(phmod_static PRIVATE MKL_LAPACKE MULTITHREADED_BLAS)
|
|
||||||
endif()
|
|
||||||
if (BLAS_LIBRARIES MATCHES "libopenblas")
|
|
||||||
target_compile_definitions(phmod_static PRIVATE MULTITHREADED_BLAS)
|
|
||||||
endif()
|
|
||||||
set_property(TARGET phmod_static PROPERTY VERSION ${serial})
|
|
||||||
set_property(TARGET phmod_static PROPERTY SOVERSION ${soserial})
|
|
||||||
set_property(TARGET phmod_static PROPERTY OUTPUT_NAME phmod)
|
|
||||||
install(TARGETS phmod_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
|
|
||||||
# Header file
|
set_property(TARGET phmod_static PROPERTY VERSION ${serial})
|
||||||
install(FILES ${PROJECT_SOURCE_DIR}/c/phononmod.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
set_property(TARGET phmod_static PROPERTY SOVERSION ${soserial})
|
||||||
|
set_property(TARGET phmod_static PROPERTY OUTPUT_NAME phmod)
|
||||||
|
install(TARGETS phmod_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
|
# Header file
|
||||||
|
install(FILES ${PROJECT_SOURCE_DIR}/c/phononmod.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
########
|
# #######
|
||||||
# grid #
|
# grid #
|
||||||
########
|
# #######
|
||||||
if (GRIDSYS)
|
if(GRIDSYS)
|
||||||
# Source code
|
# Source code
|
||||||
set(SOURCES_GRIDSYSMOD
|
set(SOURCES_GRIDSYSMOD
|
||||||
${PROJECT_SOURCE_DIR}/c/bzgrid.c
|
${PROJECT_SOURCE_DIR}/c/bzgrid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/grgrid.c
|
${PROJECT_SOURCE_DIR}/c/grgrid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/gridsys.c
|
${PROJECT_SOURCE_DIR}/c/gridsys.c
|
||||||
${PROJECT_SOURCE_DIR}/c/lagrid.c
|
${PROJECT_SOURCE_DIR}/c/lagrid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/phonoc_utils.c
|
${PROJECT_SOURCE_DIR}/c/phonoc_utils.c
|
||||||
${PROJECT_SOURCE_DIR}/c/snf3x3.c
|
${PROJECT_SOURCE_DIR}/c/snf3x3.c
|
||||||
${PROJECT_SOURCE_DIR}/c/tetrahedron_method.c
|
${PROJECT_SOURCE_DIR}/c/tetrahedron_method.c
|
||||||
${PROJECT_SOURCE_DIR}/c/triplet.c
|
${PROJECT_SOURCE_DIR}/c/triplet.c
|
||||||
${PROJECT_SOURCE_DIR}/c/triplet_grid.c
|
${PROJECT_SOURCE_DIR}/c/triplet_grid.c
|
||||||
${PROJECT_SOURCE_DIR}/c/triplet_iw.c)
|
${PROJECT_SOURCE_DIR}/c/triplet_iw.c)
|
||||||
|
|
||||||
if (BUILD_SHARED_LIBRARIES)
|
if(BUILD_SHARED_LIBRARIES)
|
||||||
# Shared library
|
# Shared library
|
||||||
add_library(gridsysmod SHARED ${SOURCES_GRIDSYSMOD})
|
add_library(gridsysmod SHARED ${SOURCES_GRIDSYSMOD})
|
||||||
target_link_libraries(gridsysmod m ${OpenMP_C_LIBRARIES})
|
target_link_libraries(gridsysmod m ${OpenMP_C_LIBRARIES})
|
||||||
target_include_directories(gridsysmod PRIVATE ${MY_INCLUDES})
|
target_include_directories(gridsysmod PRIVATE ${MY_INCLUDES})
|
||||||
target_compile_options(gridsysmod PRIVATE ${OpenMP_C_FLAGS})
|
target_compile_options(gridsysmod PRIVATE ${OpenMP_C_FLAGS})
|
||||||
target_compile_definitions(gridsysmod PRIVATE THM_EPSILON=1e-10)
|
target_compile_definitions(gridsysmod PRIVATE THM_EPSILON=1e-10)
|
||||||
set_property(TARGET gridsysmod PROPERTY VERSION ${serial})
|
set_property(TARGET gridsysmod PROPERTY VERSION ${serial})
|
||||||
set_property(TARGET gridsysmod PROPERTY SOVERSION ${soserial})
|
set_property(TARGET gridsysmod PROPERTY SOVERSION ${soserial})
|
||||||
install(TARGETS gridsysmod LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(TARGETS gridsysmod LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Static link library
|
# Static link library
|
||||||
add_library(gridsysmod_static STATIC ${SOURCES_GRIDSYSMOD})
|
add_library(gridsysmod_static STATIC ${SOURCES_GRIDSYSMOD})
|
||||||
target_link_libraries(gridsysmod_static m ${OpenMP_C_LIBRARIES})
|
target_link_libraries(gridsysmod_static m ${OpenMP_C_LIBRARIES})
|
||||||
target_include_directories(gridsysmod_static PRIVATE ${MY_INCLUDES})
|
target_include_directories(gridsysmod_static PRIVATE ${MY_INCLUDES})
|
||||||
target_compile_options(gridsysmod_static PRIVATE ${OpenMP_C_FLAGS})
|
target_compile_options(gridsysmod_static PRIVATE ${OpenMP_C_FLAGS})
|
||||||
target_compile_definitions(gridsysmod_static PRIVATE THM_EPSILON=1e-10)
|
target_compile_definitions(gridsysmod_static PRIVATE THM_EPSILON=1e-10)
|
||||||
set_property(TARGET gridsysmod_static PROPERTY VERSION ${serial})
|
set_property(TARGET gridsysmod_static PROPERTY VERSION ${serial})
|
||||||
set_property(TARGET gridsysmod_static PROPERTY SOVERSION ${soserial})
|
set_property(TARGET gridsysmod_static PROPERTY SOVERSION ${soserial})
|
||||||
set_property(TARGET gridsysmod_static PROPERTY OUTPUT_NAME gridsysmod)
|
set_property(TARGET gridsysmod_static PROPERTY OUTPUT_NAME gridsysmod)
|
||||||
install(TARGETS gridsysmod_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(TARGETS gridsysmod_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
# Header file
|
# Header file
|
||||||
install(FILES ${PROJECT_SOURCE_DIR}/c/gridsys.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install(FILES ${PROJECT_SOURCE_DIR}/c/gridsys.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WITH_TESTS)
|
||||||
|
add_subdirectory(ctest)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
enable_language(CXX)
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
|
|
||||||
|
find_package(GTest)
|
||||||
|
if(NOT GTest_FOUND)
|
||||||
|
# pthread (required for GoogleTest)
|
||||||
|
# https://stackoverflow.com/questions/1620918/cmake-and-libpthread
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
|
# Fetch GoogleTest
|
||||||
|
include(FetchContent)
|
||||||
|
FetchContent_Declare(
|
||||||
|
googletest
|
||||||
|
URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz
|
||||||
|
URL_HASH MD5=e82199374acdfda3f425331028eb4e2a
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(googletest)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
foreach(TESTCASE IN ITEMS
|
||||||
|
test_kpoints
|
||||||
|
)
|
||||||
|
add_executable(${TESTCASE} ${TESTCASE}.cpp)
|
||||||
|
target_link_libraries(${TESTCASE}
|
||||||
|
PUBLIC gridsysmod
|
||||||
|
PRIVATE GTest::gtest GTest::gtest_main)
|
||||||
|
gtest_discover_tests(${TESTCASE})
|
||||||
|
endforeach()
|
Loading…
Reference in New Issue