diff --git a/xbob/measure/main.cpp b/xbob/measure/main.cpp index e1cf79d968f77fc686897e058284574cb38f0f15..bcedb33ea81e88da41cb09fd256c7048109b86e8 100644 --- a/xbob/measure/main.cpp +++ b/xbob/measure/main.cpp @@ -954,7 +954,7 @@ static PyObject* roc_for_far(PyObject*, PyObject* args, PyObject* kwds) { } -static PyMethodDef library_methods[] = { +static PyMethodDef module_methods[] = { { s_epc_str, (PyCFunction)epc, @@ -1072,10 +1072,30 @@ static PyMethodDef library_methods[] = { {0} /* Sentinel */ }; +PyDoc_STRVAR(module_docstr, "Bob metrics and performance figures"); + +#if PY_VERSION_HEX >= 0x03000000 +static PyModuleDef module_definition = { + PyModuleDef_HEAD_INIT, + XBOB_EXT_MODULE_NAME, + module_docstr, + -1, + module_methods, + 0, 0, 0, 0 +}; +#endif + PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { - PyObject* m = Py_InitModule3(XBOB_EXT_MODULE_NAME, - library_methods, "bob::measure bindings"); +# if PY_VERSION_HEX >= 0x03000000 + PyObject* m = PyModule_Create(&module_definition); + if (!m) return 0; +# else + PyObject* m = Py_InitModule3(XBOB_EXT_MODULE_NAME, + module_methods, module_docstr); + if (!m) return; +# endif + PyModule_AddStringConstant(m, "__version__", XBOB_EXT_MODULE_VERSION); /* imports the NumPy C-API */ @@ -1084,4 +1104,8 @@ PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { /* imports xbob.blitz C-API */ import_xbob_blitz(); +# if PY_VERSION_HEX >= 0x03000000 + return m; +# endif + }