123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import os
- from setuptools import setup
- from torch.utils.cpp_extension import BuildExtension, CUDAExtension
- _src_path = os.path.dirname(os.path.abspath(__file__))
- nvcc_flags = [
- '-O3', '-std=c++14',
- # '-lineinfo', # to debug illegal memory access
- '-U__CUDA_NO_HALF_OPERATORS__', '-U__CUDA_NO_HALF_CONVERSIONS__', '-U__CUDA_NO_HALF2_OPERATORS__',
- ]
- if os.name == "posix":
- c_flags = ['-O3', '-std=c++14']
- elif os.name == "nt":
- c_flags = ['/O2', '/std:c++17']
- # find cl.exe
- def find_cl_path():
- import glob
- for edition in ["Enterprise", "Professional", "BuildTools", "Community"]:
- paths = sorted(glob.glob(r"C:\\Program Files (x86)\\Microsoft Visual Studio\\*\\%s\\VC\\Tools\\MSVC\\*\\bin\\Hostx64\\x64" % edition), reverse=True)
- if paths:
- return paths[0]
- # If cl.exe is not on path, try to find it.
- if os.system("where cl.exe >nul 2>nul") != 0:
- cl_path = find_cl_path()
- if cl_path is None:
- raise RuntimeError("Could not locate a supported Microsoft Visual C++ installation")
- os.environ["PATH"] += ";" + cl_path
- '''
- Usage:
- python setup.py build_ext --inplace # build extensions locally, do not install (only can be used from the parent directory)
- python setup.py install # build extensions and install (copy) to PATH.
- pip install . # ditto but better (e.g., dependency & metadata handling)
- python setup.py develop # build extensions and install (symbolic) to PATH.
- pip install -e . # ditto but better (e.g., dependency & metadata handling)
- '''
- setup(
- name='raymarching_face', # package name, import this to use python API
- ext_modules=[
- CUDAExtension(
- name='_raymarching_face', # extension name, import this to use CUDA API
- sources=[os.path.join(_src_path, 'src', f) for f in [
- 'raymarching.cu',
- 'bindings.cpp',
- ]],
- extra_compile_args={
- 'cxx': c_flags,
- 'nvcc': nvcc_flags,
- }
- ),
- ],
- cmdclass={
- 'build_ext': BuildExtension,
- }
- )
|