from setuptools import setup
from setuptools.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize
import numpy
from pathlib import Path
import shutil
import sys

class MyBuildExt(build_ext):
    def run(self):
        build_ext.run(self)

        build_dir = Path(self.build_lib)
        root_dir = Path(__file__).parent
        target_dir = build_dir if not self.inplace else root_dir

        self.copy_file(Path('./WindSpeedTools') / '__init__.py', root_dir, target_dir)
        #self.copy_file(Path('./pkg2') / '__init__.py', root_dir, target_dir)
        self.copy_file(Path('.') / '__init__.py', root_dir, target_dir)
    def copy_file(self, path, source_dir, destination_dir):
        if not (source_dir / path).exists():
            return
        shutil.copyfile(str(source_dir / path), str(destination_dir / path))


# 判断平台和编译器，选择正确的OpenMP标志
compile_args = []
link_args = []

if sys.platform == "win32":
    # 在Windows上使用MSVC编译器
    compile_args = ['/openmp']  # 仅传递给编译器
    # 链接器不需要此选项，因此 link_args 为空
else:
    # 在Linux/macOS上使用GCC/Clang编译器
    compile_args = ['-fopenmp']
    link_args = ['-fopenmp']     # 对于GCC，通常需要同时传递给编译器和链接器

setup(
    name="MyModule",
    ext_modules=cythonize(
        [
           #Extension("pkg1.*", ["root/pkg1/*.py"]),
           Extension("pkg2.*", ["WindSpeedModel.pyx"],
                     # 添加OpenMP支持
                     extra_compile_args=compile_args,  # 选项只给编译器
                     extra_link_args=link_args,  # 链接器使用单独的选项列表
                     ),
           #Extension("1.*", ["root/*.py"])
        ],
        build_dir="build",
        compiler_directives=dict(
        always_allow_keywords=True
        )),
    cmdclass=dict(
        build_ext=MyBuildExt
    ),
    packages=[],
    include_dirs=[numpy.get_include()],

)

# 指令： python setup.py build_ext --inplace
