I would like to call the C compiler from my setup.py by using platformer instead of Extension(). How do I add a custom build step to setup.py so that it is run with python setup.py build or any of the other build (bdist_*) commands?
            Asked
            
        
        
            Active
            
        
            Viewed 1,440 times
        
    2
            
            
         
    
    
        joeforker
        
- 40,459
- 37
- 151
- 246
- 
                    related: [Custom distutils commands](http://stackoverflow.com/q/1710839/4279) – jfs Aug 23 '12 at 16:02
- 
                    Today I'd solve this problem by replacing setuptools entirely with a PEP 517 compatible build system. Flit, poetry, https://pypi.org/project/enscons/ – joeforker Jun 25 '20 at 14:00
1 Answers
2
            I don't know what 'platformer' is. I assume that you want a complete control over how C extensions are built while providing the same interface for packaging tools.
A possible way: Cython defines its custom built_ext command that could be used as:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = [Extension("example", ["example.pyx"])]
)
A simpler option might be just to include generated C sources into your source tarball and use standard built_ext, Extension classes in setup.py. It would provide the best compatibility with existing tools.
 
    
    
        jfs
        
- 399,953
- 195
- 994
- 1,670