cmake_minimum_required(VERSION 3.10) project(cellframe-sdk C) set(CMAKE_C_STANDARD 11) set(CELLFRAME_SDK_NATIVE_VERSION "3.4-0") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") if (INSTALL_SDK) set(INSTALL_DAP_SDK ON) endif() # problem in /usr/include/linux/netlink.h:99:24: note: expanded from macro 'NLMSG_OK' (nlh)->nlmsg_len <= (len) if(CMAKE_C_COMPILER MATCHES "clang") add_compile_options(-Wno-sign-compare) endif() if(NOT DEFINED CELLFRAME_MODULES) include (dap-sdk/cmake/OS_Detection.cmake) set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-block-poa cs-block-pos cs-esbocs cs-none srv-app srv-app-db srv-datum srv-stake srv-voting srv-bridge srv-xchange") if(LINUX OR DARWIN) set(CELLFRAME_MODULES "${CELLFRAME_MODULES} srv-vpn") endif() if(BUILD_CELLFRAME_SDK_TESTS) set(DAPSDK_MODULES "test-framework") endif() add_subdirectory(dap-sdk) set(CELLFRAME_SDK_STANDALONE_BUILD ON) endif() message("Cellframe modules: ${CELLFRAME_MODULES}") if (CELLFRAME_MODULES MATCHES "srv-stake") add_definitions("-DDAP_SRV_STAKE_USED") endif() option(DAP_INT128_SUPPORT "Use 128-bit varaibles, if supported" ON) # Enabled by default if(NOT DAP_INT128_SUPPORT) message("[!] INT128 DISABLED") add_definitions(-DDAP_DISABLE_INT128) else() # message("[!] INT128 ENABLED") # add_definitions(-DDAP_DISABLE_INT128=FALSE) endif(NOT DAP_INT128_SUPPORT) if (BUILD_CELLFRAME_SDK_TESTS) enable_testing() add_definitions("-DDAP_LEDGER_TEST") add_definitions("-DDAP_CHAIN_BLOCKS_TEST") endif() if (BUILD_WITH_ZIP) add_subdirectory(3rdparty/libzip) include_directories(3rdparty/libzip/lib) endif() add_subdirectory(3rdparty/monero_crypto) add_subdirectory(modules/) add_library(${PROJECT_NAME} STATIC cellframe-sdk.c) # init libs set(CELLFRAME_LIBS "") # Core libs from dap-sdk if (CELLFRAME_MODULES MATCHES "core") message("[+] Module 'core'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_core dap_app_cli dap_plugin dap_crypto m) endif() # General chain libs if (CELLFRAME_MODULES MATCHES "chains") message("[+] Module 'chains'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_common dap_chain dap_global_db dap_chain_wallet) endif() # Networking if (CELLFRAME_MODULES MATCHES "network") message("[+] Module 'network'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_io dap_json_rpc dap_enc_server dap_notify_srv dap_http_server dap_session dap_stream dap_stream_ch dap_client dap_cli_server dap_stream_ch_chain_net dap_chain_net dap_chain_net_srv dap_chain_mempool) endif() # Chain net services if (CELLFRAME_MODULES MATCHES "srv-" ) set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_stream_ch_chain_net_srv) endif() # DAG based consensus(es) if (CELLFRAME_MODULES MATCHES "cs-dag-" ) set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_dag) endif() # PoA consensus for DAG if (CELLFRAME_MODULES MATCHES "cs-dag-poa") message("[+] Module 'cs-dag-poa'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_dag_poa) endif() # PoS consensus for DAG if (CELLFRAME_MODULES MATCHES "cs-dag-pos") message("[+] Module 'cs-dag-pos'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_dag_pos) endif() # Blocks based consensus(es) if (CELLFRAME_MODULES MATCHES "cs-block-" OR CELLFRAME_MODULES MATCHES "cs-esbocs") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_blocks) endif() # PoA consensus for blocks if (CELLFRAME_MODULES MATCHES "cs-block-poa") message("[+] Module 'cs-block-poa'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_block_poa) endif() # PoS consensus for blocks if (CELLFRAME_MODULES MATCHES "cs-block-pos") message("[+] Module 'cs-block-pos'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_block_pos) endif() # TON consensus for blocks if (CELLFRAME_MODULES MATCHES "cs-esbocs") message("[+] Module 'cs-esbocs'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_esbocs) endif() # PoW consensus for blocks if (CELLFRAME_MODULES MATCHES "cs-block-pow") message("[+] Module 'cs-block-pow'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_block_pow) endif() # No-consensus if (CELLFRAME_MODULES MATCHES "cs-none") message("[+] Module 'cs-none'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_cs_none) endif() # Enable service Application if (CELLFRAME_MODULES MATCHES "srv-app") message("[+] Module 'srv-app'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_app) endif() # Enable service Application DB if (CELLFRAME_MODULES MATCHES "srv-app-db") message("[+] Module 'srv-app-db'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_app_db) endif() # Enable service datum process if (CELLFRAME_MODULES MATCHES "srv-datum") message("[+] Module 'srv-datum'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_datum) endif() # Enable service VPN if (CELLFRAME_MODULES MATCHES "srv-vpn") message("[+] Module 'srv-vpn'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_vpn) endif() # Enable service eXchange if (CELLFRAME_MODULES MATCHES "srv-xchange") message("[+] Module 'srv-xchange'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_xchange) endif() # Enable service of stake token if (CELLFRAME_MODULES MATCHES "srv-stake") message("[+] Module 'srv-stake'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_stake) endif() # Enable service bridge if (CELLFRAME_MODULES MATCHES "srv-bridge") message("[+] Module 'srv-bridge'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_bridge) endif() # Enable service voting if (CELLFRAME_MODULES MATCHES "srv-voting") message("[+] Module 'srv-voting'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_chain_net_srv_voting) endif() # Enable service for dynamic modules if (CELLFRAME_MODULES MATCHES "modules-dynamic") message("[+] Module 'dap_modules_dynamic_cdb'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_modules_dynamic_cdb) endif() if (WIN32) set(CELLFRAME_LIBS ${CELLFRAME_LIBS} kernel32 user32 shell32 winmm gdi32 advapi32 ole32 version imm32 oleaut32 ws2_32 ntdll psapi shlwapi bcrypt crypt32 secur32 userenv) #mqrt) endif() if (DARWIN) set(CELLFRAME_LIBS ${CELLFRAME_LIBS} bz2) endif() target_link_libraries(${PROJECT_NAME} ${CELLFRAME_LIBS})