import os import pybind11 try: from pybind11.setup_helpers import Pybind11Extension from pybind11.setup_helpers import Pybind11Extension, build_ext, ParallelCompile, naive_recompile # Optional multithreaded build ParallelCompile("NPY_NUM_BUILD_JOBS", needs_recompile=naive_recompile).install() except ImportError: from setuptools import Extension as Pybind11Extension from setuptools import setup os.environ["CXX"] = "ninja" ext_modules = [ Pybind11Extension( "qosm_core", include_dirs=["include/", pybind11.get_include(), "3rdparty/include/", "3rdparty/"], libraries=["3rdparty/lib/libopenblas"], sources=[ "src/py_wrapper.cpp", "src/classes/Grid.cpp", "src/classes/Domain.cpp", "src/classes/Frame.cpp", "src/classes/Source.cpp", "src/classes/VSRC.cpp", "src/classes/Beam.cpp", "src/classes/Aperture.cpp", "src/classes/Horn.cpp", "src/classes/Triangle.cpp", "src/classes/BVH.cpp", "src/functions/Propagation.cpp", ], language="c++", extra_compile_args= [ "/W0", "/O2", "/DPYBIND11_DETAILED_ERROR_MESSAGES", "/openmp" ], ), ] setup( version='0.1', author='Gregory Gaudin', author_email='g.gaudin@terakalis.com', description='Quasi-Optical System Modelling - C++', name="qosm_core", cmdclass={"build_ext": build_ext}, ext_modules=ext_modules, zip_safe=False, python_requires=">=3.11", ) # USAGE: # install with: python .\setup.py install