build_module(modulename=None,
source_directory=' . ' ,
code='
' ,
init_code='
' ,
additional_definitions='
' ,
additional_declarations='
' ,
sources=[ ] ,
wrap_headers=[ ] ,
local_headers=[ ] ,
system_headers=[ ] ,
include_dirs=[ ' . ' ] ,
library_dirs=[ ] ,
libraries=[ ] ,
swigargs=[ ' -c++ ' , ' -fcompact ' , ' -O ' , ' -I. ' , ' -small ' ] ,
swig_include_dirs=[ ] ,
cppargs=[ ' -O2 ' ] ,
lddargs=[ ] ,
object_files=[ ] ,
arrays=[ ] ,
generate_interface=True,
generate_setup=True,
cmake_packages=[ ] ,
signature=None,
cache_dir=None)
| source code
|
Generate and compile a module from C/C++ code using SWIG.
Arguments:
The keyword arguments are as follows:
-
modulename:
-
The name you want for the module. If specified, the module will
not be cached. If missing, a name will be constructed based on
a checksum of the other arguments, and the module will be
placed in the global cache. String.
-
source_directory:
-
The directory where user supplied files reside. The files given
in sources, wrap_headers, and
local_headers are expected to exist in this directory.
String.
-
code:
-
A string containing C or C++ code to be compiled and wrapped.
String.
-
init_code:
-
Code that should be executed when the Instant module is
imported. This code is inserted in the SWIG interface file, and
is used for instance for calling
import_array()
used for the initialization of NumPy arrays. String.
-
additional_definitions:
-
Additional definitions (typically needed for inheritance) for
interface file. These definitions should be given as
triple-quoted strings in the case they span multiple lines, and
are placed both in the initial block for C/C++ code
(
%{,%} -block), and the main section of the
interface file. String.
-
additional_declarations:
-
Additional declarations (typically needed for inheritance) for
interface file. These declarations should be given as
triple-quoted strings in the case they span multiple lines, and
are plaves in the main section of the interface file. String.
-
sources:
-
Source files to compile and link with the module. These files
are compiled togehter with the SWIG-generated wrapper file into
the final library file. Should reside in directory specified in
source_directory. List of strings.
-
wrap_headers:
-
Local header files that should be wrapped by SWIG. The files
specified will be included both in the initial block for C/C++
code (with a C directive) and in the main section of the
interface file (with a SWIG directive). Should reside in
directory specified in source_directory. List of
strings.
-
local_headers:
-
Local header files required to compile the wrapped code. The
files specified will be included in the initial block for C/C++
code (with a C directive). Should reside in directory specified
in source_directory. List of strings.
-
system_headers:
-
System header files required to compile the wrapped code. The
files specified will be included in the initial block for C/C++
code (with a C directive). List of strings.
-
include_dirs:
-
Directories to search for header files for building the
extension module. Needs to be absolute path names. List of
strings.
-
library_dirs:
-
Directories to search for libraries (
-l ) for
building the extension module. Needs to be absolute paths. List
of strings.
-
libraries:
-
Libraries needed by the Instant module. The libraries will be
linked in from the shared object file. The initial
-l is added automatically. List of strings.
-
swigargs:
-
List of arguments to swig, e.g.
["-lpointers.i"] to include the SWIG
pointers.i library.
-
swig_include_dirs:
-
A list of directories to include in the 'swig' command.
-
cppargs:
-
List of arguments to the compiler, e.g.
["-Wall", "-fopenmp"] .
-
lddargs:
-
List of arguments to the linker, e.g.
["-E",
"-U"] .
-
object_files:
-
If you want to compile the files yourself. TODO: Not yet
supported.
-
arrays:
-
A nested list describing the C arrays to be made from NumPy
arrays. The SWIG interface for fil NumPy is used. For 1D
arrays, the inner list should contain strings with the variable
names for the length of the arrays and the array itself. 2D
matrices should contain the names of the dimensions in the two
directions as well as the name of the array, and 3D tensors
should contain the names of the dimensions in the three
directions in addition to the name of the array. If the NumPy
array har more than four dimensions, the inner list should
contain strings with variable names for the number of
dimensions, the length in each dimension as a pointer, and the
array itself, respectively.
-
generate_interface:
-
A bool to indicate if you want to generate the interface files.
-
generate_setup:
-
A bool to indicate if you want to generate the setup.py file.
-
cmake_packages:
-
A list with CMake configured packages which are used to
configure and build the extension module. If used it will
override the default behaviour of using distutils.
-
signature:
-
A signature string to identify the form instead of the source
code.
-
cache_dir:
-
A directory to look for cached modules and place new ones. If
missing, a default directory is used. Note that the module will
not be cached if modulename is specified. The cache
directory should not be used for anything else.
|