diff --git a/CMakeLists.txt b/CMakeLists.txt index 29eeafccafae66e88825529e0be9137cab0496a1..c0447f343281e970633dc8bdbdac3a21874ef2c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,43 @@ -project(dap-python C) +project(dap_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) +set(SUBMODULES_NO_BUILD ON) add_subdirectory(libdap) +add_subdirectory(libdap-crypto) file(GLOB CORE_SRCS src/*.c) file(GLOB CORE_HEADERS src/*.h) -set(Python_ADDITIONAL_VERSIONS 2.7) -find_package (PythonLibs) +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}) -add_library(${PROJECT_NAME} STATIC ${CORE_SRCS} ${CORE_UNIX_SRCS}) +#set(CMAKE_C_FLAGS "-fpic") +#set_property(GLOBAL PROPERTY CMAKE_C_FLAGS "-std=c11 -Wall -Wextra -fpic") + +#target_link_libraries(${PROJECT_NAME} dap_core) + +#add_executable(${PROJECT_NAME} ${CORE_SRCS} ${CORE_UNIX_SRCS}) +add_library(${PROJECT_NAME} SHARED ${CORE_SRCS} ${CORE_UNIX_SRCS}) +#add_library(${PROJECT_NAME} STATIC ${CORE_SRCS} ${CORE_UNIX_SRCS}) + +target_link_libraries(${PROJECT_NAME} ${PYTHON_LIBRARIES}) + +target_compile_options( + dap_core PRIVATE + "-fpic" +) + +target_link_libraries(${PROJECT_NAME} dap_core dap_crypto) + +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/src/libdapConnector.py + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) if(BUILD_DAP_TESTS) enable_testing() diff --git a/src/libdap-python.c b/src/libdap-python.c index fe18faecc4b900d7f0ee8b9ff722bc1e4b5487b9..5e03e0303522ebceadb2fb7b85fdaefe71411180 100644 --- a/src/libdap-python.c +++ b/src/libdap-python.c @@ -12,7 +12,7 @@ static PyObject *dap_init(PyObject *self, PyObject *args) int lenDapAppName=0; int countSeparators=0; int lenMassives = 0; - while (*(data+lenMassives) != '\0' ||*(data+lenMassives) != NULL) + while (*(data+lenMassives) != '\0') { if (*(data+lenMassives)=='\n') { @@ -47,7 +47,7 @@ static PyObject *dap_deinit(PyObject *self) return PyLong_FromLong(0); } -PyMODINIT_FUNC PyInit_dap(void) +PyMODINIT_FUNC PyInit_libdap_python_module(void) { return PyModule_Create(&dapmodule); } @@ -60,7 +60,7 @@ int main(int argc, char **argv) { } /* Add a built-in module, before Py_Initialize */ - PyImport_AppendInittab("dap", PyInit_dap); + PyImport_AppendInittab("libdap_python_module", PyInit_libdap_python_module); /* Pass argv[0] to the Python interpreter */ Py_SetProgramName(program); @@ -71,7 +71,7 @@ int main(int argc, char **argv) { /* Optionally import the module; alternatively, import can be deferred until the embedded script imports it. */ - PyImport_ImportModule("dap"); + PyImport_ImportModule("libdap_python_module"); PyMem_RawFree(program); return 0; diff --git a/src/libdap-python.h b/src/libdap-python.h index 6f12eb93dde89826b7a354d798556ebe47463e74..02f98063554fc3bcde849aea71e550c9d32df75a 100644 --- a/src/libdap-python.h +++ b/src/libdap-python.h @@ -19,14 +19,14 @@ static PyMethodDef DapMethods[] = { static struct PyModuleDef dapmodule = { PyModuleDef_HEAD_INIT, - "dap", /* name of module */ + "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. */ DapMethods }; -PyMODINIT_FUNC PyInit_dap(void); +PyMODINIT_FUNC PyInit_libdap_python_module(void); #ifdef __cplusplus } diff --git a/src/libdapConnector.py b/src/libdapConnector.py new file mode 100644 index 0000000000000000000000000000000000000000..03c03b430a50a9000f00b5974c9c908ee7c11af6 --- /dev/null +++ b/src/libdapConnector.py @@ -0,0 +1,15 @@ +import json +import libdap_python_module + +class Dap: + def __init__(self, data): + res = json.loads(data) + self.modules=res['modules'] + self.config_dir=res['dap']['config_dir'] + self.log_level=res['dap']['log_level'] + self.application_name=res['dap']['application_name'] +# dap.init('/opt/var/ler\njaryt\ndebug') + libdap_python_module.init(res['dap']['config_dir']+"\n"+res['dap']['application_name']+"\n") + def __del__(self): + libdap_python_module.deinit() +