Initial attempt to migrate to nanobind

This commit is contained in:
Atsushi Togo 2024-07-07 10:55:19 +09:00
parent 3e01240a56
commit 2b5b6f6d0b
13 changed files with 409 additions and 297 deletions

View File

@ -1,5 +1,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.20)
project(phono3py C)
option(PHPHCALC "Option to build phph calculation module" OFF) option(PHPHCALC "Option to build phph calculation module" OFF)
option(PHONONCALC "Option to build phonon calculation module" OFF) option(PHONONCALC "Option to build phonon calculation module" OFF)
@ -8,31 +7,40 @@ option(WITH_Fortran "enable fortran interface" OFF)
option(PHONO3PY_USE_OMP "Option to search OpenMP library" ON) option(PHONO3PY_USE_OMP "Option to search OpenMP library" ON)
option(PHPHCALC_USE_MTBLAS "Use multithread BLAS is it exists" OFF) option(PHPHCALC_USE_MTBLAS "Use multithread BLAS is it exists" OFF)
option(WITH_TESTS "build unit tests" OFF) option(WITH_TESTS "build unit tests" OFF)
option(BUILD_SHARED_LIBRARIES "Option to build shared library" OFF) option(BUILD_SHARED_LIBS "Option to build shared library" OFF)
if(WITH_Fortran) if(WITH_Fortran)
enable_language(Fortran) enable_language(Fortran)
set(GRIDSYS ON) set(GRIDSYS ON)
endif() endif()
if(WITH_TESTS) if(WITH_TESTS)
set(BUILD_SHARED_LIBRARIES ON) set(BUILD_SHARED_LIBS ON)
set(GRIDSYS ON) set(GRIDSYS ON)
endif() endif()
if((NOT PHPHCALC)
AND (NOT PHONONCALC)
AND (NOT GRIDSYS))
set(BUILD_NANOBIND_MODULE ON)
message(STATUS "Build nanobind module of ${SKBUILD_PROJECT_NAME}")
else()
set(BUILD_NANOBIND_MODULE OFF)
endif()
if(BUILD_NANOBIND_MODULE)
project(${SKBUILD_PROJECT_NAME})
set(DEV_MODULE Development.Module)
find_package(
Python 3.8 REQUIRED
COMPONENTS Interpreter ${DEV_MODULE}
OPTIONAL_COMPONENTS Development.SABIModule)
else()
project(phono3py C)
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)
set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE)
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
message(STATUS "CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}")
include(GNUInstallDirs)
# 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)
string(REGEX MATCH "__version__.*([0-9]+)[.]([0-9]+)[.]([0-9]+)" string(REGEX MATCH "__version__.*([0-9]+)[.]([0-9]+)[.]([0-9]+)"
@ -42,6 +50,19 @@ set(MINOR_VERSION ${CMAKE_MATCH_2})
set(MICRO_VERSION ${CMAKE_MATCH_3}) set(MICRO_VERSION ${CMAKE_MATCH_3})
set(SERIAL "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}") set(SERIAL "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}")
set(SOSERIAL "1") set(SOSERIAL "1")
include(GNUInstallDirs)
endif()
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE
Release
CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"MinSizeRel" "RelWithDebInfo")
endif()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
message(STATUS "CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}")
if(USE_CONDA_PATH) if(USE_CONDA_PATH)
message(STATUS "$ENV{CONDA_PREFIX}") message(STATUS "$ENV{CONDA_PREFIX}")
@ -62,7 +83,9 @@ if(PHONO3PY_USE_OMP)
endif() endif()
endif() endif()
if(PHPHCALC OR PHONONCALC) if(PHPHCALC
OR PHONONCALC
OR BUILD_NANOBIND_MODULE)
find_package(BLAS REQUIRED) # set BLAS_LIBRARIES find_package(BLAS REQUIRED) # set BLAS_LIBRARIES
if(BLAS_FOUND) if(BLAS_FOUND)
@ -76,12 +99,11 @@ if(PHPHCALC OR PHONONCALC)
message(STATUS "LAPACK libs: ${LAPACK_LIBRARIES}") message(STATUS "LAPACK libs: ${LAPACK_LIBRARIES}")
message(STATUS "LAPACK flags: ${LAPACK_LINKER_FLAGS}") message(STATUS "LAPACK flags: ${LAPACK_LINKER_FLAGS}")
endif() endif()
endif()
if(PHPHCALC OR PHONONCALC)
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")
message(STATUS "Use multithreaded BLAS for phonon calculation.") message(STATUS "Use multithreaded BLAS for phonon calculation.")
if(PHPHCALC_USE_MTBLAS) if(PHPHCALC_USE_MTBLAS)
message(STATUS "Use multithreaded BLAS for ph-ph calculation.") message(STATUS "Use multithreaded BLAS for ph-ph calculation.")
endif() endif()
@ -90,16 +112,17 @@ if(PHPHCALC OR PHONONCALC)
if(BLAS_LIBRARIES MATCHES "libopenblas") if(BLAS_LIBRARIES MATCHES "libopenblas")
message(STATUS "OpenBLAS detected: Set C-macro MULTITHREADED_BLAS") message(STATUS "OpenBLAS detected: Set C-macro MULTITHREADED_BLAS")
message(STATUS "Use multithreaded BLAS for phonon calculation.") message(STATUS "Use multithreaded BLAS for phonon calculation.")
if(PHPHCALC_USE_MTBLAS) if(PHPHCALC_USE_MTBLAS)
message(STATUS "Use multithreaded BLAS for ph-ph calculation.") message(STATUS "Use multithreaded BLAS for ph-ph calculation.")
endif() endif()
endif() endif()
endif() endif()
# ############################################################################## # ###################################################################################
# phono3py # # Build phphcalc module #
# ############################################################################## # ###################################################################################
if(PHPHCALC) if(PHPHCALC OR BUILD_NANOBIND_MODULE)
# Source code # Source code
set(SOURCES_PHPHCALC set(SOURCES_PHPHCALC
${PROJECT_SOURCE_DIR}/c/bzgrid.c ${PROJECT_SOURCE_DIR}/c/bzgrid.c
@ -123,132 +146,149 @@ if(PHPHCALC)
${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_LIBS)
# Shared library # Shared library
add_library(ph3py SHARED ${SOURCES_PHPHCALC}) add_library(phphcalc_lib SHARED ${SOURCES_PHPHCALC})
target_link_libraries(ph3py m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} target_link_libraries(phphcalc_lib m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
${OpenMP_C_LIBRARIES}) ${OpenMP_C_LIBRARIES})
target_include_directories(ph3py PRIVATE ${MY_INCLUDES}) target_include_directories(phphcalc_lib PRIVATE ${MY_INCLUDES})
target_compile_options(ph3py PRIVATE ${OpenMP_C_FLAGS}) target_compile_options(phphcalc_lib PRIVATE ${OpenMP_C_FLAGS})
if(BLAS_LIBRARIES MATCHES "libmkl")
if(PHPHCALC_USE_MTBLAS)
target_compile_definitions(ph3py PRIVATE MKL_LAPACKE MULTITHREADED_BLAS
THM_EPSILON=1e-10)
else()
target_compile_definitions(ph3py PRIVATE MKL_LAPACKE THM_EPSILON=1e-10)
endif()
endif()
if(BLAS_LIBRARIES MATCHES "libopenblas")
if(PHPHCALC_USE_MTBLAS)
target_compile_definitions(ph3py PRIVATE MULTITHREADED_BLAS
THM_EPSILON=1e-10)
else()
target_compile_definitions(ph3py PRIVATE 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
add_library(ph3py_static STATIC ${SOURCES_PHPHCALC})
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") if(BLAS_LIBRARIES MATCHES "libmkl")
if(PHPHCALC_USE_MTBLAS) if(PHPHCALC_USE_MTBLAS)
target_compile_definitions( target_compile_definitions(
ph3py_static PRIVATE MKL_LAPACKE MULTITHREADED_BLAS THM_EPSILON=1e-10) phphcalc_lib PRIVATE MKL_LAPACKE MULTITHREADED_BLAS
THM_EPSILON=1e-10)
else() else()
target_compile_definitions(ph3py_static PRIVATE MKL_LAPACKE target_compile_definitions(phphcalc_lib PRIVATE MKL_LAPACKE
THM_EPSILON=1e-10) THM_EPSILON=1e-10)
endif() endif()
endif() endif()
if(BLAS_LIBRARIES MATCHES "libopenblas") if(BLAS_LIBRARIES MATCHES "libopenblas")
if(PHPHCALC_USE_MTBLAS) if(PHPHCALC_USE_MTBLAS)
target_compile_definitions(ph3py_static PRIVATE MULTITHREADED_BLAS target_compile_definitions(phphcalc_lib PRIVATE MULTITHREADED_BLAS
THM_EPSILON=1e-10) THM_EPSILON=1e-10)
else() else()
target_compile_definitions(ph3py_static PRIVATE THM_EPSILON=1e-10) target_compile_definitions(phphcalc_lib PRIVATE THM_EPSILON=1e-10)
endif() endif()
endif() endif()
set_property(TARGET ph3py_static PROPERTY VERSION ${SERIAL}) else()
set_property(TARGET ph3py_static PROPERTY SOVERSION ${SOSERIAL}) # Static link library
set_property(TARGET ph3py_static PROPERTY OUTPUT_NAME ph3py) add_library(phphcalc_lib STATIC ${SOURCES_PHPHCALC})
install(TARGETS ph3py_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_link_libraries(phphcalc_lib m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
${OpenMP_C_LIBRARIES})
target_include_directories(phphcalc_lib PRIVATE ${MY_INCLUDES})
target_compile_options(phphcalc_lib PRIVATE ${OpenMP_C_FLAGS})
if(BLAS_LIBRARIES MATCHES "libmkl")
if(PHPHCALC_USE_MTBLAS)
target_compile_definitions(
phphcalc_lib PRIVATE MKL_LAPACKE MULTITHREADED_BLAS
THM_EPSILON=1e-10)
else()
target_compile_definitions(phphcalc_lib PRIVATE MKL_LAPACKE
THM_EPSILON=1e-10)
endif()
endif()
if(BLAS_LIBRARIES MATCHES "libopenblas")
if(PHPHCALC_USE_MTBLAS)
target_compile_definitions(phphcalc_lib PRIVATE MULTITHREADED_BLAS
THM_EPSILON=1e-10)
else()
target_compile_definitions(phphcalc_lib PRIVATE THM_EPSILON=1e-10)
endif()
endif()
endif()
if(NOT BUILD_NANOBIND_MODULE)
if(BUILD_SHARED_LIBS)
set_property(TARGET phphcalc_lib PROPERTY VERSION ${SERIAL})
set_property(TARGET phphcalc_lib PROPERTY SOVERSION ${SOSERIAL})
install(TARGETS phphcalc_lib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
else()
set_property(TARGET phphcalc_lib PROPERTY VERSION ${SERIAL})
set_property(TARGET phphcalc_lib PROPERTY SOVERSION ${SOSERIAL})
set_property(TARGET phphcalc_lib PROPERTY OUTPUT_NAME phphcalc_lib)
install(TARGETS phphcalc_lib ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
# Header file # Header file
install(FILES ${PROJECT_SOURCE_DIR}/c/phono3py.h install(FILES ${PROJECT_SOURCE_DIR}/c/phono3py.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
endif() endif()
endif()
# ############################################################################## # ###################################################################################
# phononcalc # # phononcalc #
# ############################################################################## # ###################################################################################
if(PHONONCALC) if(PHONONCALC OR BUILD_NANOBIND_MODULE)
# Source code # Source code
set(SOURCES_PHONONCALC set(SOURCES_PHONONCALC
${PROJECT_SOURCE_DIR}/c/dynmat.c ${PROJECT_SOURCE_DIR}/c/lapack_wrapper.c ${PROJECT_SOURCE_DIR}/c/dynmat.c ${PROJECT_SOURCE_DIR}/c/lapack_wrapper.c
${PROJECT_SOURCE_DIR}/c/phonon.c ${PROJECT_SOURCE_DIR}/c/phononcalc.c) ${PROJECT_SOURCE_DIR}/c/phonon.c ${PROJECT_SOURCE_DIR}/c/phononcalc.c)
if(BUILD_SHARED_LIBRARIES) if(BUILD_SHARED_LIBS)
# Shared library # Shared library
add_library(phcalc SHARED ${SOURCES_PHONONCALC}) add_library(phononcalc_lib SHARED ${SOURCES_PHONONCALC})
target_link_libraries(phcalc m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} target_link_libraries(phononcalc_lib m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
${OpenMP_C_LIBRARIES}) ${OpenMP_C_LIBRARIES})
target_include_directories(phcalc PRIVATE ${MY_INCLUDES}) target_include_directories(phononcalc_lib PRIVATE ${MY_INCLUDES})
target_compile_options(phcalc PRIVATE ${OpenMP_C_FLAGS}) target_compile_options(phononcalc_lib PRIVATE ${OpenMP_C_FLAGS})
if(BLAS_LIBRARIES MATCHES "libmkl") if(BLAS_LIBRARIES MATCHES "libmkl")
target_compile_definitions(phcalc PRIVATE MKL_LAPACKE MULTITHREADED_BLAS) target_compile_definitions(phononcalc_lib PRIVATE MKL_LAPACKE
endif()
if(BLAS_LIBRARIES MATCHES "libopenblas")
target_compile_definitions(phcalc PRIVATE MULTITHREADED_BLAS)
endif()
set_property(TARGET phcalc PROPERTY VERSION ${SERIAL})
set_property(TARGET phcalc PROPERTY SOVERSION ${SOSERIAL})
install(TARGETS phcalc LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
# Static link library
add_library(phcalc_static STATIC ${SOURCES_PHONONCALC})
target_link_libraries(phcalc_static m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
${OpenMP_C_LIBRARIES})
target_include_directories(phcalc_static PRIVATE ${MY_INCLUDES})
target_compile_options(phcalc_static PRIVATE ${OpenMP_C_FLAGS})
if(BLAS_LIBRARIES MATCHES "libmkl")
target_compile_definitions(phcalc_static PRIVATE MKL_LAPACKE
MULTITHREADED_BLAS) MULTITHREADED_BLAS)
endif() endif()
if(BLAS_LIBRARIES MATCHES "libopenblas") if(BLAS_LIBRARIES MATCHES "libopenblas")
target_compile_definitions(phcalc_static PRIVATE MULTITHREADED_BLAS) target_compile_definitions(phononcalc_lib PRIVATE MULTITHREADED_BLAS)
endif() endif()
set_property(TARGET phcalc_static PROPERTY VERSION ${SERIAL}) else()
set_property(TARGET phcalc_static PROPERTY SOVERSION ${SOSERIAL}) # Static link library
set_property(TARGET phcalc_static PROPERTY OUTPUT_NAME phcalc) add_library(phononcalc_lib STATIC ${SOURCES_PHONONCALC})
install(TARGETS phcalc_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_link_libraries(phononcalc_lib m ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
${OpenMP_C_LIBRARIES})
target_include_directories(phononcalc_lib PRIVATE ${MY_INCLUDES})
target_compile_options(phononcalc_lib PRIVATE ${OpenMP_C_FLAGS})
if(BLAS_LIBRARIES MATCHES "libmkl")
target_compile_definitions(phononcalc_lib PRIVATE MKL_LAPACKE
MULTITHREADED_BLAS)
endif()
if(BLAS_LIBRARIES MATCHES "libopenblas")
target_compile_definitions(phononcalc_lib PRIVATE MULTITHREADED_BLAS)
endif()
endif()
if(NOT BUILD_NANOBIND_MODULE)
if(BUILD_SHARED_LIBS)
set_property(TARGET phononcalc_lib PROPERTY VERSION ${SERIAL})
set_property(TARGET phononcalc_lib PROPERTY SOVERSION ${SOSERIAL})
install(TARGETS phononcalc_lib
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
else()
set_property(TARGET phononcalc_lib PROPERTY VERSION ${SERIAL})
set_property(TARGET phononcalc_lib PROPERTY SOVERSION ${SOSERIAL})
set_property(TARGET phononcalc_lib PROPERTY OUTPUT_NAME phononcalc_lib)
install(TARGETS phononcalc_lib
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
# Header file # Header file
install(FILES ${PROJECT_SOURCE_DIR}/c/phononcalc.h install(FILES ${PROJECT_SOURCE_DIR}/c/phononcalc.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
endif() endif()
endif()
# ############################################################################## # ###################################################################################
# grid # # grid #
# ############################################################################## # ###################################################################################
if(GRIDSYS) if(GRIDSYS)
# Source code # Source code
set(SOURCES_GRIDSYS set(SOURCES_GRIDSYS
@ -264,7 +304,7 @@ if(GRIDSYS)
${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_LIBS)
# Shared library # Shared library
add_library(gridsys SHARED ${SOURCES_GRIDSYS}) add_library(gridsys SHARED ${SOURCES_GRIDSYS})
target_link_libraries(gridsys m ${OpenMP_C_LIBRARIES}) target_link_libraries(gridsys m ${OpenMP_C_LIBRARIES})
@ -274,8 +314,7 @@ if(GRIDSYS)
set_property(TARGET gridsys PROPERTY VERSION ${SERIAL}) set_property(TARGET gridsys PROPERTY VERSION ${SERIAL})
set_property(TARGET gridsys PROPERTY SOVERSION ${SOSERIAL}) set_property(TARGET gridsys PROPERTY SOVERSION ${SOSERIAL})
install(TARGETS gridsys LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(TARGETS gridsys LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif() else()
# Static link library # Static link library
add_library(gridsys_static STATIC ${SOURCES_GRIDSYS}) add_library(gridsys_static STATIC ${SOURCES_GRIDSYS})
target_link_libraries(gridsys_static m ${OpenMP_C_LIBRARIES}) target_link_libraries(gridsys_static m ${OpenMP_C_LIBRARIES})
@ -286,6 +325,7 @@ if(GRIDSYS)
set_property(TARGET gridsys_static PROPERTY SOVERSION ${SOSERIAL}) set_property(TARGET gridsys_static PROPERTY SOVERSION ${SOSERIAL})
set_property(TARGET gridsys_static PROPERTY OUTPUT_NAME gridsys) set_property(TARGET gridsys_static PROPERTY OUTPUT_NAME gridsys)
install(TARGETS gridsys_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(TARGETS gridsys_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
# Header file # Header file
install(FILES ${PROJECT_SOURCE_DIR}/c/gridsys.h install(FILES ${PROJECT_SOURCE_DIR}/c/gridsys.h
@ -300,5 +340,31 @@ if(WITH_TESTS)
if(WITH_Fortran) if(WITH_Fortran)
set(LIB_MOD_DIR ${CMAKE_CURRENT_BINARY_DIR}/fortran) set(LIB_MOD_DIR ${CMAKE_CURRENT_BINARY_DIR}/fortran)
endif() endif()
add_subdirectory(ctest) add_subdirectory(ctest)
endif() endif()
if(BUILD_NANOBIND_MODULE)
set_target_properties(phphcalc_lib PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(phononcalc_lib PROPERTIES POSITION_INDEPENDENT_CODE ON)
execute_process(
COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE NB_DIR)
list(APPEND CMAKE_PREFIX_PATH "${NB_DIR}")
find_package(nanobind CONFIG REQUIRED)
nanobind_add_module(
_phono3py STABLE_ABI ${PROJECT_SOURCE_DIR}/c/phono3py.h
${PROJECT_SOURCE_DIR}/c/phononcalc.h ${PROJECT_SOURCE_DIR}/c/_phono3py.cpp)
if(OpenMP_FOUND)
target_link_libraries(_phono3py PRIVATE phphcalc_lib phononcalc_lib
OpenMP::OpenMP_C)
else()
target_link_libraries(_phono3py PRIVATE phphcalc_lib phononcalc_lib)
endif()
target_compile_definitions(_phono3py PRIVATE THM_EPSILON=1e-10)
install(TARGETS _phono3py LIBRARY DESTINATION ${SKBUILD_PROJECT_NAME})
endif()

4
cmake-format.py Normal file
View File

@ -0,0 +1,4 @@
with section("format"):
disable = False
line_width = 85
tab_size = 4

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
# Copyright (C) 2011 Atsushi Togo # Copyright (C) 2011 Atsushi Togo
# All rights reserved. # All rights reserved.
# #
@ -36,7 +34,9 @@
from phono3py.cui.phono3py_script import main from phono3py.cui.phono3py_script import main
if __name__ == "__main__":
def run():
"""Run phono3py script."""
argparse_control = { argparse_control = {
"fc_symmetry": False, "fc_symmetry": False,
"is_nac": False, "is_nac": False,

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
# Copyright (C) 2020 Atsushi Togo # Copyright (C) 2020 Atsushi Togo
# All rights reserved. # All rights reserved.
# #
@ -36,6 +34,8 @@
from phono3py.cui.phono3py_script import main from phono3py.cui.phono3py_script import main
if __name__ == "__main__":
def run():
"""Run phono3py-load script."""
argparse_control = {"fc_symmetry": True, "is_nac": True, "load_phono3py_yaml": True} argparse_control = {"fc_symmetry": True, "is_nac": True, "load_phono3py_yaml": True}
main(**argparse_control) main(**argparse_control)

View File

@ -1,5 +1,49 @@
[build-system] [build-system]
requires = ["setuptools", "wheel", "numpy"] requires = ["scikit-build-core", "nanobind", "numpy"]
build-backend = "scikit_build_core.build"
[project]
name = "phono3py"
dynamic = ["version"]
readme = { file = "README.md", content-type = "text/markdown" }
description = "This is the phono3py module."
authors = [{ name = "Atsushi Togo", email = "atztogo@gmail.com" }]
requires-python = ">=3.8"
dependencies = [
"numpy>=1.17.0",
"scipy",
"PyYAML>=5.3",
"matplotlib>=2.2.2",
"h5py>=3.0",
"spglib>=2.3",
"phonopy>=2.25,<2.26",
]
license = { file = "LICENSE" }
[project.urls]
Homepage = "https://phonopy.github.io/phono3py/"
Repository = "https://github.com/phonopy/phono3py"
[project.scripts]
phono3py = "phono3py.scripts.phono3py:run"
phono3py-load = "phonopy.scripts.phono3py_load:run"
[tool.scikit-build]
metadata.version.provider = "scikit_build_core.metadata.setuptools_scm"
sdist.exclude = ["*"]
sdist.include = [
"test",
"LICENSE",
"c",
"example",
"phono3py",
"pyproject.toml",
"CMakeLists.txt",
"README.md",
]
[tool.setuptools_scm]
write_to = "phono3py/_version.py"
[tool.ruff] [tool.ruff]
line-length = 88 line-length = 88
@ -10,10 +54,8 @@ lint.select = [
"E", # pycodestyle-errors "E", # pycodestyle-errors
"D", # pydocstyle "D", # pydocstyle
] ]
lint.extend-ignore = [ lint.extend-ignore = ["D417", "D100"]
"D417", exclude = ["cmake-format.py"]
"D100",
]
[tool.ruff.lint.pydocstyle] [tool.ruff.lint.pydocstyle]
convention = "numpy" convention = "numpy"