I try to transition from automake/autoconf
instructions to setuptools
and setup.py
to build a swig-generated Python wrapper for a C-library. I already found many instructions how that can be accomplished, but all of them have the setup.py
script in the projects root directory. Since my project is already distributed as a C-library (with scripting language extensions), I was wondering whether it is possible to write the code within setup.py
such that sources for the extension module are located out-of-tree.
My current directory structure looks somewhat like this:
myproject/
src/
mylib/
implementation.c
implementation.h
...
swig/
mod.i
perl5/
python/
setup.py
where the C-files are located in src/
and the swig-wrapper is in swig/
.
When I add relative paths toward the root directory within my setup.py
script, things start to go wrong. For instance, adding Extension(sources=['../mod.i', '../../src/mylib/implementation.c', ...])
already results in many errors during the python -m build
process. In particular, the sdist
is created, but it is missing all files 'up' the directory tree, so ../mod.i
, etc. are not included and therefore the actual build of the binary package fails.
So, I was wondering, whether it is possible to leave the current directory structure as-is and only specify setup.py
such that it includes all required files into the sdist
.