pygomx/pygomx-module/build_ffi.py

62 lines
2.1 KiB
Python
Raw Permalink Normal View History

2026-01-09 18:52:31 +01:00
#!/usr/bin/python
2026-02-13 14:46:36 +01:00
import sys
2026-01-09 18:52:31 +01:00
from cffi import FFI
2026-02-13 14:46:36 +01:00
lib_list = [
"mxclient",
]
if len(sys.argv) > 1:
lib_list += sys.argv[1:]
print(f"liblist: {lib_list}")
2026-01-09 18:52:31 +01:00
ffibuilder = FFI()
ffibuilder.set_source(
module_name="_pygomx",
source=""" //passed to the real C compiler
#include "libmxclient.h"
""",
2026-02-13 14:46:36 +01:00
libraries=lib_list,
2026-02-10 00:08:30 +01:00
library_dirs=["."],
include_dirs=["."],
2026-01-09 18:52:31 +01:00
)
ffibuilder.cdef(
csource="""
typedef void (*on_event_handler_ptr) (char*, void*);
typedef void (*on_message_handler_ptr) (char*, void*);
typedef void (*on_sys_handler_ptr) (char*, void*);
2026-01-19 17:55:44 +01:00
extern void FreeCString(char* s);
2026-01-13 13:11:02 +01:00
extern char* cli_discoverhs(char* mxid);
extern char* cli_mkmxtoken(char* mxid, char* pw);
extern char* cli_whoami(char* hs, char* accessToken);
extern char* cli_accountinfo(char* hs, char* accessToken);
extern char* cli_clearaccount(char* hs, char* accessToken);
extern char* cli_serverinfo(char* url);
2026-01-31 08:13:53 +01:00
extern int apiv0_initialize();
extern int apiv0_deinitialize();
extern char* apiv0_discover(char* mxid);
extern char* apiv0_login(char* data);
extern char* apiv0_createclient(char* storage_path, char* hs, char* mxid, char* accessToken);
extern char* apiv0_createclient_pass(char* mxpassfile, char* storage_path, char* hs, char* localpart, char* domain);
extern char* apiv0_set_on_event_handler(int cid, on_event_handler_ptr ptr, void* pobj);
extern char* apiv0_set_on_message_handler(int cid, on_message_handler_ptr ptr, void* pobj);
extern char* apiv0_set_on_sys_handler(int cid, on_sys_handler_ptr ptr, void* pobj);
2026-01-31 08:13:53 +01:00
extern char* apiv0_startclient(int cid);
extern char* apiv0_stopclient(int cid);
extern char* apiv0_sendmessage(int cid, char* data);
2026-02-07 10:43:11 +01:00
extern char* apiv0_leaveroom(int cid, char* roomid);
2026-02-13 23:38:44 +01:00
extern char* apiv0_joinedrooms(int cid);
2026-02-19 14:27:51 +01:00
extern char* apiv0_createroom(int cid, char* data);
2026-01-31 08:13:53 +01:00
extern int apiv0_removeclient(int cid);
extern char* apiv0_listclients();
extern char* apiv0_getoptions(int cid);
extern int apiv0_setoptions(int cid, char* opts);
2026-01-09 18:52:31 +01:00
"""
)
if __name__ == "__main__":
ffibuilder.compile(verbose=True)