Skip to content
Snippets Groups Projects
CMakeLists.txt 8.07 KiB
Newer Older
cmake_minimum_required(VERSION 3.0)
Sergei Rashitov's avatar
Sergei Rashitov committed

alexey.stratulat's avatar
alexey.stratulat committed
if (SUPPORT_PYTHON_PLUGINS)
    project(API_CellFrame C)
else()
    project(CellFrame C)
endif()
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE   ON)
Sergei Rashitov's avatar
Sergei Rashitov committed
set(Python_ADDITIONAL_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4)
find_package (PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIR} include/)
Sergei Rashitov's avatar
Sergei Rashitov committed
file(GLOB PYTHON_CELLFRAME_SRCS CellFrame/*.c)
file(GLOB PYTHON_CELLFRAME_HEADERS include/*.h)
set(SUBMODULES_NO_BUILD ON)
        set(CELLFRAME_MODULES "core chains network cs-none")
        set(CELLFRAME_MODULES "core chains network cs-none")
Dmitriy A. Gerasimov's avatar
Dmitriy A. Gerasimov committed
    include(cellframe-sdk/cmake/OS_Detection.cmake)
else()
    add_subdirectory(modules/plugins)
    target_compile_options(dap_plugins_python PRIVATE "-fpic")
add_subdirectory(modules/dap-sdk/core)
add_subdirectory(modules/dap-sdk/crypto)
add_subdirectory(modules/dap-sdk/net/core)
add_subdirectory(modules/dap-sdk/net/client)
add_subdirectory(modules/dap-sdk/net/server/enc)
add_subdirectory(modules/dap-sdk/net/server/http)
add_subdirectory(modules/cellframe-sdk/common)
add_subdirectory(modules/cellframe-sdk/net)
add_subdirectory(modules/cellframe-sdk/gdb)
add_subdirectory(modules/cellframe-sdk/chain)
add_subdirectory(modules/cellframe-sdk/app-cli)
add_subdirectory(modules/cellframe-sdk/wallet)
Dmitriy A. Gerasimov's avatar
Dmitriy A. Gerasimov committed

    target_compile_options(dap_chain_common_python_module PRIVATE "-fpic")
    target_compile_options(dap_python_module PRIVATE "-fpic" )
    target_compile_options(dap_crypto_python_module PRIVATE "-fpic" )
    target_compile_options(dap_chain_net_python_module PRIVATE "-fpic")
    target_compile_options(dap_chain_gdb_python_module PRIVATE "-fpic")
    target_compile_options(dap_chain_python_module PRIVATE "-fpic")
    target_compile_options(dap_app_cli_python_module PRIVATE "-fpic")
    target_compile_options(dap_client_python_module PRIVATE "-fpic")
    target_compile_options(dap_chain_wallet_python_module PRIVATE "-fpic")


target_compile_options(dap_core PRIVATE "-fpic")
target_compile_options(dap_core_unix PRIVATE "-fpic")
target_compile_options(dap_app_cli PRIVATE "-fpic")
target_compile_options(dap_crypto PRIVATE "-fpic")
target_compile_options(dap_chain PRIVATE "-fpic")
alexey.stratulat's avatar
alexey.stratulat committed
target_compile_options(dap_chain_common PRIVATE "-fpic")
target_compile_options(dap_chain_wallet PRIVATE "-fpic" )
#target_compile_options(dap_chain_crypto PRIVATE "-fpic" )
target_compile_options(dap_chain_mempool PRIVATE "-fpic" )
target_compile_options(dap_chain_net PRIVATE "-fpic" )
target_compile_options(dap_server_core PRIVATE "-fpic" )
target_compile_options(dap_chain_global_db PRIVATE "-fpic" )
target_compile_options(dap_client PRIVATE "-fpic" )
#target_compile_options(libdap-server PRIVATE "-fpic" )
target_compile_options(dap_stream PRIVATE "-fpic" )
target_compile_options(dap_stream_ch PRIVATE "-fpic" )
target_compile_options(dap_stream_ch_chain_net PRIVATE "-fpic" )
target_compile_options(dap_stream_ch_chain PRIVATE "-fpic" )
#target_compile_options(dap_chain_net_srv PRIVATE "-fpic" )
#target_compile_options(dap_chain_net_srv_stake PRIVATE "-fpic")
Sergei Rashitov's avatar
Sergei Rashitov committed
if(NOT WIN32)
#    target_compile_options(dap_chain_net_srv_vpn PRIVATE "-fpic" )
Sergei Rashitov's avatar
Sergei Rashitov committed
endif()
#target_compile_options(dap_chain_cs_none PRIVATE "-fpic" )
target_compile_options(dap_enc_server PRIVATE "-fpic")
target_compile_options(dap_http_server PRIVATE "-fpic")
target_compile_options(dap_session PRIVATE "-fpic")
target_compile_options(dap_stream_ch_chain_net_srv PRIVATE "-fpic")
#target_compile_options(dap_chain_cs_dag PRIVATE "-fpic")
#target_compile_options(dap_chain_cs_dag_poa PRIVATE "-fpic")
#target_compile_options(dap_chain_cs_dag_pos PRIVATE "-fpic")
    file (GLOB APP_CONTEXT_HEADER
        modules/plugins/include/dap_plugins_python_app_context.h)
Dmitriy A. Gerasimov's avatar
Dmitriy A. Gerasimov committed
    add_definitions("-DDAP_SUPPORT_PYTHON_PLUGINS")
    add_library(${PROJECT_NAME} STATIC ${PYTHON_CELLFRAME_SRCS} ${APP_CONTEXT_HEADER} ${PYTHON_CELLFRAME_HEADERS})
else()

    SET( CPACK_GENERATOR "DEB")
    SET( CPACK_PACKAGE_NAME  "${PROJECT_NAME}")
    SET( CPACK_PACKAGE_VERSION_MAJOR 0)
    SET( CPACK_PACKAGE_VERSION_MINOR 9)
Dmitriy A. Gerasimov's avatar
Dmitriy A. Gerasimov committed
    SET( CPACK_PACKAGE_VERSION_PATCH 15)

    add_definitions("-DDAP_VERSION_MAJOR=\"${CPACK_PACKAGE_VERSION_MAJOR}\"")
    add_definitions("-DDAP_VERSION_MINOR=\"${CPACK_PACKAGE_VERSION_MINOR}\"")
    add_definitions("-DDAP_VERSION_PATCH=\"${CPACK_PACKAGE_VERSION_PATCH}\"")
    add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_PACKAGE_VERSION_PATCH}\"")
    message(STATUS "Make python extension")
    #find_package(PythonExtensions REQUIRED)
    add_library(CellFrame MODULE ${PYTHON_CELLFRAME_SRCS} ${PYTHON_CELLFRAME_HEADERS})
    #python_extension_module(${PROJECT_NAME})
    #python_extension_module(${PROJECT_NAME} LINKED_MODULES_VAR dap_python_module)
    #python_extension_module(${PROJECT_NAME} LINKED_MODULES_VAR dap_crypto_python_module)
    #python_extension_module(${PROJECT_NAME} LINKED_MODULES_VAR DapServerCore)
    install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${PROJECT_NAME})
Sergei Rashitov's avatar
Sergei Rashitov committed
    install(FILES CellFrame/__init__.py DESTINATION ${PROJECT_NAME})
    install(FILES CellFrame/PublicNetworks/* DESTINATION ${PROJECT_NAME})
    #    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdap-python/libdap_python_module.so DESTINATION CellFrame/lib)
    #    install(TARGETS dap_python_module LIBRARY DESTINATION CellFrame)
    #    install(TARGETS dap_crypto_python_module LIBRARY DESTINATION CellFrame)
    #    install(TARGETS DapServerCore LIBRARY DESTINATION CellFrame)
    #else()
    #    add_library(${PROJECT_NAME} SHARED ${PYTHON_CELLFRAME_SRCS} ${PYTHON_CELLFRAME_HEADERS})
    #endif()
Dmitriy A. Gerasimov's avatar
Dmitriy A. Gerasimov committed
endif()
target_compile_options(dap_core PRIVATE "-fpic")
target_compile_options(dap_app_cli PRIVATE "-fpic")
target_compile_options(dap_crypto PRIVATE "-fpic")
target_compile_options(dap_chain PRIVATE "-fpic")
target_compile_options(dap_chain_common PRIVATE "-fpic")
target_compile_options(dap_chain_wallet PRIVATE "-fpic" )
#target_compile_options(dap_chain_crypto PRIVATE "-fpic" )
target_compile_options(dap_chain_mempool PRIVATE "-fpic" )
target_compile_options(dap_chain_net PRIVATE "-fpic" )
target_compile_options(dap_server_core PRIVATE "-fpic" )
target_compile_options(dap_chain_global_db PRIVATE "-fpic" )
target_compile_options(dap_client PRIVATE "-fpic" )
#target_compile_options(libdap-server PRIVATE "-fpic" )
target_compile_options(dap_stream PRIVATE "-fpic" )
target_compile_options(dap_stream_ch PRIVATE "-fpic" )
target_compile_options(dap_stream_ch_chain_net PRIVATE "-fpic" )
target_compile_options(dap_stream_ch_chain PRIVATE "-fpic" )
#target_compile_options(dap_chain_net_srv PRIVATE "-fpic" )
Sergei Rashitov's avatar
Sergei Rashitov committed
if (NOT WIN32)
#target_compile_options(dap_chain_net_srv_vpn PRIVATE "-fpic" )
Sergei Rashitov's avatar
Sergei Rashitov committed
endif()
#target_compile_options(dap_chain_cs_none PRIVATE "-fpic" )
target_compile_options(dap_enc_server PRIVATE "-fpic")
target_compile_options(dap_http_server PRIVATE "-fpic")
target_compile_options(dap_session PRIVATE "-fpic")
target_compile_options(dap_stream_ch_chain_net_srv PRIVATE "-fpic")
#target_compile_options(dap_chain_cs_dag PRIVATE "-fpic")
#target_compile_options(dap_chain_cs_dag_poa PRIVATE "-fpic")
#target_compile_options(dap_chain_cs_dag_pos PRIVATE "-fpic")
target_compile_options(dap_server_core_python_module PRIVATE "-fpic")
Sergei Rashitov's avatar
Sergei Rashitov committed
if (WIN32)
    set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".pyd")
endif()

target_link_libraries(${PROJECT_NAME} cellframe-sdk dap_python_module
                      dap_crypto_python_module
                      dap_server_core_python_module
                      dap_enc_server_python_module
                      dap_server_http_python_module
                      dap_chain_python_module
                      dap_chain_net_python_module
                      dap_chain_gdb_python_module
                      dap_app_cli_python_module
target_include_directories(${PROJECT_NAME} INTERFACE include/)