diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..85477867ff7703065631f66e97a51ff62f794855 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,9 @@ +[submodule "libdap-server-core"] + path = libdap-server-core + url = https://gitlab.demlabs.net/cellframe/libdap-server-core.git +[submodule "libdap"] + path = libdap + url = https://gitlab.demlabs.net/cellframe/libdap.git +[submodule "libdap-crypto"] + path = libdap-crypto + url = https://gitlab.demlabs.net/cellframe/libdap-crypto.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..6a66d475f8402da328d01ea875842053c25654c4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,49 @@ +project(dap_server_core_python_module C) +cmake_minimum_required(VERSION 2.8) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_COLOR_MAKEFILE ON) +set(CMAKE_C_STANDARD 11) +set(SUBMODULES_NO_BUILD ON) + +add_subdirectory(libdap) +add_subdirectory(libdap-crypto) +add_subdirectory(libdap-server-core) + +file(GLOB SERVER_CORE_PYTHON_SRCS src/*.c) +file(GLOB SERVER_CORE_PYTHON_HEADERS include/*.h) + +set(Python_ADDITIONAL_VERSIONS 3.7) +find_package (PythonLibs REQUIRED) +#find_package(PkgConfig) +#pkg_check_modules(PC_JSON-C REQUIRED json-c) +include_directories(${PYTHON_INCLUDE_DIR} include/) + +add_library(${PROJECT_NAME} SHARED ${SERVER_CORE_PYTHON_SRCS} ${SERVER_CORE_PYTHON_HEADERS}) + +target_link_libraries(${PROJECT_NAME}) + +target_compile_options( + dap_server_core PRIVATE + "-fpic" +) + +target_compile_options( + dap_core PRIVATE + "-fpic" +) +target_compile_options( + dap_crypto PRIVATE + "-fpic" +) + + +#target_link_libraries(${PROJECT_NAME} dap_core dap_crypto) +#targat_link_libraries(${PROJECT_NAME} dap_server_core) +target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core) + +#if(BUILD_DAP_PYTHON_TESTS) +# add_subdirectory(test) +# enable_testing() +#endif() + diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h new file mode 100644 index 0000000000000000000000000000000000000000..87b2402acc83ed7416a744efcc8eb2937bca3231 --- /dev/null +++ b/include/libdap-server-core-python.h @@ -0,0 +1,36 @@ +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#include "dap_server.h" + +#ifdef __cplusplus +extern "C" { +#endif + +static PyObject *dap_server_core_init(PyObject *self, PyObject *args); +static PyObject *dap_server_core_deinit(); + +static PyMethodDef DapServerCorePythonMethods[] = { + {"init", dap_server_core_init, METH_VARARGS, "Initialization of the DAP (Deus Applicaions Prototypes) server core library"}, + {"deinit", dap_server_core_deinit, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) server core library"}, + {NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef dapservercorepythonmodule = { + PyModuleDef_HEAD_INIT, + "libdap_python_module", /* name of module */ + NULL, /* module documentation, may be NULL */ + -1, /* size of per-interpreter state of the module, + or -1 if the module keeps state in global variables. */ + DapServerCorePythonMethods +}; + +PyMODINIT_FUNC PyInit_libdap_server_core_python_module(void); + + + + + + +#ifdef __cplusplus +} +#endif diff --git a/libdap b/libdap new file mode 160000 index 0000000000000000000000000000000000000000..67993d1f4cec44de464acee32a4d4f71d51c7e7d --- /dev/null +++ b/libdap @@ -0,0 +1 @@ +Subproject commit 67993d1f4cec44de464acee32a4d4f71d51c7e7d diff --git a/libdap-crypto b/libdap-crypto new file mode 160000 index 0000000000000000000000000000000000000000..6249887fdd5c9ed88eb26c1e10f853ea9f7001b6 --- /dev/null +++ b/libdap-crypto @@ -0,0 +1 @@ +Subproject commit 6249887fdd5c9ed88eb26c1e10f853ea9f7001b6 diff --git a/libdap-server-core b/libdap-server-core new file mode 160000 index 0000000000000000000000000000000000000000..6778521f9f646e2985994e63f470067b3e2c1e48 --- /dev/null +++ b/libdap-server-core @@ -0,0 +1 @@ +Subproject commit 6778521f9f646e2985994e63f470067b3e2c1e48 diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c new file mode 100644 index 0000000000000000000000000000000000000000..431db0e350e6f8983d4ee6014162a4ce4ffedbe2 --- /dev/null +++ b/src/libdap-server-core-python.c @@ -0,0 +1,38 @@ +#include "libdap-server-core-python.h" + + +static PyObject *dap_server_core_init(PyObject *self, PyObject *args){ + return PyLong_FromLong(0); +} +static PyObject *dap_server_core_deinit(){ + return PyLong_FromLong(0); +} + +PyMODINIT_FUNC PyInit_libdap_server_core_python_module(void){ + return PyModule_Create(&dapservercorepythonmodule); +} + +int main(int argc, char **argv) { + wchar_t *program = Py_DecodeLocale(argv[0], NULL); + if (program == NULL) { + fprintf(stderr, "Fatal error: cannot decode argv[0]\n"); + exit(1); + } + + /* Add a built-in module, before Py_Initialize */ + PyImport_AppendInittab("libdap_server_core_python_module", PyInit_libdap_server_core_python_module); + + /* Pass argv[0] to the Python interpreter */ + Py_SetProgramName(program); + + /* Initialize the Python interpreter. Required. */ + Py_Initialize(); + + /* Optionally import the module; alternatively, + import can be deferred until the embedded script + imports it. */ + PyImport_ImportModule("libdap_server_core_python_module"); + + PyMem_RawFree(program); + return 0; +}