diff --git a/tbuild.py b/tbuild.py new file mode 100644 index 0000000000..5afab599a6 --- /dev/null +++ b/tbuild.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +from cffi import FFI + +ffibuilder = FFI() + +# cdef() expects a single string declaring the C types, functions and +# globals needed to use the shared object. It must be in valid C syntax. +ffibuilder.cdef( + """ +typedef ... dns_name; +typedef ... dns_name_t; + +static inline void +dns_name_init(dns_name_t *name, unsigned char *offsets); + +uint32_t +dns_name_hash(const dns_name_t *name); +""" +) + +# set_source() gives the name of the python extension module to +# produce, and some C source code as a string. This C code needs +# to make the declarated functions, types and globals available, +# so it is often just the "#include". +ffibuilder.set_source( + "_pi_cffi", + """ + #include "dns/name.h" // the C header of the library +""", + libraries=["dns"], + include_dirs=["lib/dns/include", "lib/isc/include"], +) # library name, for the linker + +if __name__ == "__main__": + ffibuilder.compile( + verbose=True, + )