Switch to pyproject build structure
This commit is contained in:
parent
2727bb5582
commit
790eb41a26
@ -121,7 +121,7 @@ include(portaudio)
|
|||||||
include(uldaq)
|
include(uldaq)
|
||||||
#
|
#
|
||||||
add_definitions(-Dgsl_CONFIG_DEFAULTS_VERSION=1)
|
add_definitions(-Dgsl_CONFIG_DEFAULTS_VERSION=1)
|
||||||
add_subdirectory(src/lasp)
|
add_subdirectory(cpp_src)
|
||||||
if(LASP_BUILD_CPP_TESTS)
|
if(LASP_BUILD_CPP_TESTS)
|
||||||
add_subdirectory(test)
|
add_subdirectory(test)
|
||||||
endif()
|
endif()
|
||||||
|
53
cpp_src/CMakeLists.txt
Normal file
53
cpp_src/CMakeLists.txt
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# src/lasp/CMakeLists.txt
|
||||||
|
|
||||||
|
# Armadillo, don't build the wrapper lib, but instead directly link to
|
||||||
|
# openblas.
|
||||||
|
add_definitions(-DARMA_DONT_USE_WRAPPER)
|
||||||
|
|
||||||
|
configure_file(lasp_config.h.in lasp_config.h)
|
||||||
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
include_directories(SYSTEM
|
||||||
|
${PROJECT_SOURCE_DIR}/third_party/armadillo-code/include)
|
||||||
|
|
||||||
|
include_directories(${PROJECT_SOURCE_DIR}/third_party/DebugTrace-cpp/include)
|
||||||
|
include_directories(${PROJECT_SOURCE_DIR}/third_party/gsl-lite/include)
|
||||||
|
include_directories(${PROJECT_SOURCE_DIR}/third_party/tomlplusplus/include)
|
||||||
|
include_directories(${PROJECT_SOURCE_DIR}/third_party/thread-pool)
|
||||||
|
|
||||||
|
if(LASP_HAS_RTAUDIO)
|
||||||
|
include_directories(${PROJECT_SOURCE_DIR}/third_party/rtaudio)
|
||||||
|
endif()
|
||||||
|
if(LASP_HAS_ULDAQ)
|
||||||
|
include_directories(${PROJECT_SOURCE_DIR}/third_party/uldaq/src)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(device)
|
||||||
|
add_subdirectory(dsp)
|
||||||
|
|
||||||
|
pybind11_add_module(lasp_cpp MODULE lasp_cpp.cpp
|
||||||
|
pybind11/lasp_deviceinfo.cpp
|
||||||
|
pybind11/lasp_daqconfig.cpp
|
||||||
|
pybind11//lasp_dsp_pybind.cpp
|
||||||
|
pybind11/lasp_streammgr.cpp
|
||||||
|
pybind11/lasp_daq.cpp
|
||||||
|
pybind11/lasp_deviceinfo.cpp
|
||||||
|
pybind11/lasp_pyindatahandler.cpp
|
||||||
|
pybind11/lasp_siggen.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(lasp_cpp PRIVATE lasp_device_lib lasp_dsp_lib
|
||||||
|
${OpenMP_CXX_LIBRARIES} ${LASP_FFT_LIBS} ${TARGET_OS_LINKLIBS})
|
||||||
|
|
||||||
|
# Install the Python module
|
||||||
|
install(TARGETS lasp_cpp
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
COMPONENT python_modules
|
||||||
|
DESTINATION ${PY_BUILD_CMAKE_MODULE_NAME})
|
||||||
|
# Install the debug file for the Python module (Windows only)
|
||||||
|
if (WIN32)
|
||||||
|
install(FILES $<TARGET_PDB_FILE:_add_module>
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
COMPONENT python_modules
|
||||||
|
DESTINATION ${PY_BUILD_CMAKE_MODULE_NAME}
|
||||||
|
OPTIONAL)
|
||||||
|
endif()
|
43
pyproject.toml
Normal file
43
pyproject.toml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[project]
|
||||||
|
name = "lasp"
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.10"
|
||||||
|
description = "Library for Acoustic Signal Processing"
|
||||||
|
license = { "file" = "LICENSE" }
|
||||||
|
authors = [{ "name" = "J.A. de Jong", "email" = "j.a.dejong@ascee.nl" }]
|
||||||
|
dynamic = ["version"]
|
||||||
|
|
||||||
|
keywords = ["DSP", "DAQ", "Signal processing"]
|
||||||
|
|
||||||
|
classifiers = [
|
||||||
|
"Development Status :: 3 - Alpha",
|
||||||
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
||||||
|
"License :: OSI Approved :: MIT License",
|
||||||
|
"Natural Language :: English",
|
||||||
|
"Topic :: Scientific/Engineering",
|
||||||
|
"Programming Language :: Python :: 3.10",
|
||||||
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Operating System :: POSIX :: Linux",
|
||||||
|
"Operating System :: Microsoft :: Windows",
|
||||||
|
]
|
||||||
|
urls = { "Documentation" = "https://lasp.ascee.nl" }
|
||||||
|
|
||||||
|
dependencies = ["scipy", "numpy", "matplotlib", "appdirs", "dataclasses_json",
|
||||||
|
"h5py", "pybind11"]
|
||||||
|
|
||||||
|
[build-system] # How pip and other frontends should build this project
|
||||||
|
requires = ["py-build-cmake~=0.1.8", "setuptools-scm"]
|
||||||
|
build-backend = "py_build_cmake.build"
|
||||||
|
|
||||||
|
[tool.py-build-cmake.module] # Where to find the Python module to package
|
||||||
|
directory = "python_src"
|
||||||
|
|
||||||
|
[tool.py-build-cmake.sdist] # What to include in source distributions
|
||||||
|
include = ["CMakeLists.txt", "cmake", "cpp_src", "python_src", "img", "scripts",
|
||||||
|
"third_party"]
|
||||||
|
|
||||||
|
[tool.py-build-cmake.cmake] # How to build the CMake project
|
||||||
|
build_type = "Release"
|
||||||
|
source_path = "."
|
||||||
|
build_args = ["-j"]
|
||||||
|
install_components = ["python_modules", "python_stubs"]
|
58
setup.py
58
setup.py
@ -1,58 +0,0 @@
|
|||||||
import glob, os
|
|
||||||
import platform
|
|
||||||
from setuptools import setup
|
|
||||||
|
|
||||||
pf = platform.platform()
|
|
||||||
|
|
||||||
if 'Linux' in pf:
|
|
||||||
ext_name_glob = 'lasp_cpp.cpython*'
|
|
||||||
# Split of path from file.
|
|
||||||
extensions = list(glob.glob('src/lasp/' + ext_name_glob))
|
|
||||||
elif 'Windows' in pf:
|
|
||||||
ext_name_glob = 'lasp_cpp*.cp*.pyd'
|
|
||||||
# Split of path from file.
|
|
||||||
extensions = list(glob.glob('src\\lasp/' + ext_name_glob))
|
|
||||||
else:
|
|
||||||
raise RuntimeError('Not yet Windows-proof')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print(extensions)
|
|
||||||
ext_names = [os.path.split(a)[1] for a in extensions]
|
|
||||||
|
|
||||||
if len(extensions) == 0:
|
|
||||||
raise RuntimeError('Please first run CMake to build extension')
|
|
||||||
elif len(extensions) > 1:
|
|
||||||
raise RuntimeError('Too many extension files found')
|
|
||||||
|
|
||||||
pkgdata = ext_names
|
|
||||||
classifiers = [
|
|
||||||
"Topic :: Scientific/Engineering",
|
|
||||||
"Programming Language :: Python :: 3.8",
|
|
||||||
"Operating System :: POSIX :: Linux",
|
|
||||||
"Operating System :: Microsoft :: Windows",
|
|
||||||
]
|
|
||||||
|
|
||||||
keywords = ["DSP", "DAQ", "Signal processing"]
|
|
||||||
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name="lasp",
|
|
||||||
version="1.0",
|
|
||||||
description="LASP: Library for Acoustic Signal Processing",
|
|
||||||
|
|
||||||
author='J.A. de Jong (ASCEE / Redu-Sone)',
|
|
||||||
author_email='info@ascee.nl',
|
|
||||||
|
|
||||||
url='https://www.ascee.nl/lasp',
|
|
||||||
classifiers=classifiers,
|
|
||||||
keywords=keywords,
|
|
||||||
license="MIT",
|
|
||||||
dependencies=["numpy", "scipy", "appdirs", "h5py", "appdirs",
|
|
||||||
"dataclasses_json"],
|
|
||||||
package_dir={"": "src"},
|
|
||||||
packages=['lasp', 'lasp.filter', 'lasp.tools'],
|
|
||||||
include_package_data=True,
|
|
||||||
package_data={'lasp': pkgdata},
|
|
||||||
python_requires='>=3.8',
|
|
||||||
)
|
|
@ -1,40 +0,0 @@
|
|||||||
# src/lasp/CMakeLists.txt
|
|
||||||
|
|
||||||
# Armadillo
|
|
||||||
add_definitions(-DARMA_DONT_USE_WRAPPER)
|
|
||||||
|
|
||||||
configure_file(lasp_config.h.in lasp_config.h)
|
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
include_directories(SYSTEM
|
|
||||||
${PROJECT_SOURCE_DIR}/third_party/armadillo-code/include)
|
|
||||||
|
|
||||||
include_directories(../../third_party/DebugTrace-cpp/include)
|
|
||||||
include_directories(../../third_party/gsl-lite/include)
|
|
||||||
include_directories(../../third_party/tomlplusplus/include)
|
|
||||||
include_directories(../../third_party/thread-pool)
|
|
||||||
|
|
||||||
if(LASP_HAS_RTAUDIO)
|
|
||||||
include_directories(../../third_party/rtaudio)
|
|
||||||
endif()
|
|
||||||
if(LASP_HAS_ULDAQ)
|
|
||||||
include_directories(../../third_party/uldaq/src)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(device)
|
|
||||||
add_subdirectory(dsp)
|
|
||||||
|
|
||||||
pybind11_add_module(lasp_cpp MODULE lasp_cpp.cpp
|
|
||||||
pybind11/lasp_deviceinfo.cpp
|
|
||||||
pybind11/lasp_daqconfig.cpp
|
|
||||||
pybind11//lasp_dsp_pybind.cpp
|
|
||||||
pybind11/lasp_streammgr.cpp
|
|
||||||
pybind11/lasp_daq.cpp
|
|
||||||
pybind11/lasp_deviceinfo.cpp
|
|
||||||
pybind11/lasp_pyindatahandler.cpp
|
|
||||||
pybind11/lasp_siggen.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(lasp_cpp PRIVATE lasp_device_lib lasp_dsp_lib
|
|
||||||
${OpenMP_CXX_LIBRARIES} ${LASP_FFT_LIBS} ${TARGET_OS_LINKLIBS})
|
|
||||||
|
|
||||||
install(TARGETS lasp_cpp DESTINATION .)
|
|
Loading…
Reference in New Issue
Block a user