-
Roman Khlopkov authoredf6648eac
CMakeLists.txt 5.86 KiB
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 cs-dag-poa cs-esbocs cs-none 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()
# ESBOCS 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})