Newer
Older
set(NODE_TARGET "${PROJECT_NAME}" )
set(NODE_CLI_TARGET "${PROJECT_NAME}-cli" )
set(NODE_TOOL_TARGET "${PROJECT_NAME}-tool")
if(DAP_DEBUG_BUILD)
set(DAP_RELEASE 0)
message(STATUS "Debug build")
else()
set(DAP_RELEASE 1)
message(STATUS "Release build")
endif()
# Check whether we're on a 32-bit or 64-bit system
if(CMAKE_SIZEOF_VOID_P EQUAL "8")
set(DEFAULT_BUILD_64 ON)
else()
set(DEFAULT_BUILD_64 OFF)
endif()
option(BUILD_64 "Build for 64-bit? 'OFF' builds for 32-bit." ${DEFAULT_BUILD_64})
if(BUILD_64)
set(ARCH_WIDTH "64")
else()
set(ARCH_WIDTH "32")
endif()
message(STATUS "Building for a ${ARCH_WIDTH}-bit system")
if(DAP_RELEASE)
message(STATUS "Building type RELEASE")
else()
message(STATUS "Building type DEBUG")
endif()
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
SET(CMAKE_INSTALL_PREFIX "/opt/${PROJECT_NAME}")
SET(CPACK_INSTALL_PREFIX "/opt/${PROJECT_NAME}")
SET(DESTDIR "/opt/${PROJECT_NAME}")
SET( CPACK_GENERATOR "DEB")
SET( CPACK_PACKAGE_NAME "${PROJECT_NAME}")
SET( CPACK_PACKAGE_VERSION_MINOR 11)
SET( CPACK_PACKAGE_VERSION_PATCH 1)
SET( CPACK_SYSTEM_NAME "debian-10.0-amd64")
SET( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_PACKAGE_VERSION_PATCH}")
SET( CPACK_DEBIAN_PACKAGE_MAINTAINER "Dmitriy Gerasimov <naeper@demlabs.net>" )
SET( CPACK_DEBIAN_PACKAGE_DESCRIPTION_SUMMARY "CellFrame Node software https://cellframe.net" )
SET( CPACK_DEBIAN_PACKAGE_DESCRIPTION "CellFrame Node" )
SET( CPACK_DEBIAN_PACKAGE_DEPENDS "debconf (>=1.5), dpkg (>=1.17), bash (>=4), debconf-utils, dconf-cli, less, pv, psmisc")
SET( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
SET( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
"${CMAKE_CURRENT_SOURCE_DIR}/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/debian/postrm;${CMAKE_CURRENT_SOURCE_DIR}/debian/templates;${CMAKE_CURRENT_SOURCE_DIR}/debian/config;")
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
set(CMAKE_C_STANDARD 11)
set(SUBMODULES_NO_BUILD ON)
add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}\"")
add_definitions ("-DDAP_SERVER -DDAP_LOG_MT")
add_definitions ("-DNODE_NETNAME=\"cellframe\"")
add_definitions ("-DUNDEBUG")
add_definitions ("-DNDEBUG")
add_definitions ("-DWIN32")
add_definitions ("-D_WINDOWS")
add_definitions ("-D__WINDOWS__")
add_definitions ("-D_CRT_SECURE_NO_WARNINGS")
add_definitions ("-DCURL_STATICLIB")
add_definitions("-DHAVE_PREAD")
add_definitions("-DHAVE_MMAP")
add_definitions("-DHAVE_STRNDUP")
add_compile_definitions(WINVER=0x0600 _WIN32_WINNT=0x0600)
set(_CCOPT "-static -std=gnu11 -Wall -O3 -fno-ident -ffast-math -ftree-vectorize -mfpmath=sse -mmmx -msse2 -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -Wl,--strip-all")
else()
set(_CCOPT "-mconsole -static -Wall -pg")
set(_LOPT "-mconsole -static -pg")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
include_directories(libdap/src/win32/)
include_directories(3rdparty/uthash/src/)
include_directories(3rdparty/libjson-c/)
include_directories(3rdparty/curl/include/)
include_directories(3rdparty/libsqlite3/)
include_directories(libdap-chain-net-srv-vpn/)
endif()
add_definitions ("-DDAP_OS_LINUX -DDAP_OS_UNIX")
set(_CCOPT " -Wall -O3 -fPIC -fno-ident -ffast-math -ftree-vectorize -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -Wl,--strip-all -std=gnu11")
set(_CCOPT "-Wall -pg -g3 -ggdb -fno-eliminate-unused-debug-symbols")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")
endif()
if (ANDROID)
set(_CCOPT "${_CCOPT} -fforce-enable-int128 -std=gnu11")
add_definitions ("-DDAP_OS_ANDROID -DDAP_OS_UNIX")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
if (ANDROID)
add_subdirectory(lib/json-c)
add_subdirectory(lib/sqlite3)
add_subdirectory(lib/libev)
include_directories(lib/)
else()
endif(ANDROID)
add_subdirectory(libdap-crypto)
add_subdirectory(libdap-chain-common)
add_subdirectory(libdap-chain)
add_subdirectory(libdap-chain-cs-dag-poa)
add_subdirectory(libdap-chain-net)
add_subdirectory(libdap-chain-net-srv)
add_subdirectory(libdap-chain-net-srv-app)
add_subdirectory(libdap-chain-net-srv-app-db)
add_subdirectory(libdap-chain-net-srv-datum)
add_subdirectory(libdap-chain-net-srv-datum-pool)
if(NOT (WIN32))
add_subdirectory(libdap-chain-net-srv-vpn)
endif()
add_subdirectory(libdap-chain-mempool)
Dmitriy A. Gerasimov
committed
Ivan Deniskin
committed
add_subdirectory(libdap-stream)
add_subdirectory(libdap-stream-ch)
Dmitriy A. Gerasimov
committed
add_subdirectory(libdap-client)
add_subdirectory(libdap-stream-ch-chain-net)
add_subdirectory(libdap-stream-ch-chain-net-srv)
#if (NOT ANDROID)
add_subdirectory(libdap-chain-global-db)
#endif()
#add_subdirectory(libdap-stream-ch-chat)
Ivan Deniskin
committed
enable_testing()
add_subdirectory(test)
endif()
set( NODE_SOURCES
sources/main.c
sources/sig_unix_handler.c
)
set( NODE_CLI_SOURCES
sources/main_node_cli.c
sources/main_node_cli_shell.c
sources/main_node_cli_net.c
)
set( NODE_TOOL_SOURCES
sources/main_node_tool.c
)
if(ANDROID)
add_library(${PROJECT_NAME} SHARED
${NODE_SOURCES}
${NODE_CLI_SOURCES}
${NODE_TOOL_SOURCES}
sources/cellframe_node.h
)
else()
add_executable(${PROJECT_NAME} ${NODE_SOURCES})
add_executable(${NODE_CLI_TARGET} ${NODE_CLI_SOURCES})
add_executable(${NODE_TOOL_TARGET} ${NODE_TOOL_SOURCES})
endif()
if(WIN32)
add_executable(${PROJECT_NAME} "sources/main.c" "sources/exh_win32.c" "sources/sig_win32_handler.c")
add_executable(${NODE_CLI_TARGET} "sources/main_node_cli.c" "sources/main_node_cli_shell.c" "sources/main_node_cli_net.c" )
add_executable(${NODE_TOOL_TARGET} "sources/main_node_tool.c" )
target_link_libraries(${NODE_CLI_TARGET} dap_chain_net
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libjson-c[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libsqlite3[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/curl[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/nghttp2[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libssl[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/c-ares[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/misc[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/zlib[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libssh2[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libcrypto[x86_64CLANG].a
KERNEL32
USER32
SHELL32
WINMM
GDI32
ADVAPI32
Ole32
Version
Imm32
OleAut32
ws2_32
ntdll
psapi
Shlwapi
Bcrypt
Crypt32
Secur32
set_property(TARGET ${NODE_CLI_TARGET} APPEND_STRING PROPERTY LINK_FLAGS "-mconsole")
target_link_libraries(${NODE_TOOL_TARGET} dap_core dap_crypto dap_server_core dap_enc_server dap_udp_server dap_session
dap_enc_server dap_stream dap_stream_ch_chain dap_stream_ch_chain_net
dap_stream_ch_chain_net_srv dap_chain dap_chain_crypto dap_client
dap_chain_cs_dag dap_chain_cs_dag_poa dap_chain_cs_dag_pos
dap_chain_net dap_chain_net_srv dap_chain_net_srv_app dap_chain_net_srv_app_db
dap_chain_net_srv_datum dap_chain_net_srv_datum_pool
dap_chain_wallet dap_chain_global_db dap_chain_mempool dap_cuttdb
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libjson-c[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libsqlite3[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/curl[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/nghttp2[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libssl[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/c-ares[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/misc[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/zlib[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libssh2[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libcrypto[x86_64CLANG].a
KERNEL32
USER32
SHELL32
WINMM
GDI32
ADVAPI32
Ole32
Version
Imm32
OleAut32
ws2_32
ntdll
psapi
Shlwapi
Bcrypt
Crypt32
Secur32
set_property(TARGET ${NODE_TOOL_TARGET} APPEND_STRING PROPERTY LINK_FLAGS "-mconsole")
target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core dap_enc_server dap_udp_server dap_session
dap_enc_server dap_stream dap_stream_ch_chain dap_stream_ch_chain_net
dap_stream_ch_chain_net_srv dap_chain dap_chain_crypto dap_client
dap_chain_cs_dag dap_chain_cs_dag_poa dap_chain_cs_dag_pos
dap_chain_net dap_chain_net_srv dap_chain_net_srv_app dap_chain_net_srv_app_db
dap_chain_net_srv_datum dap_chain_net_srv_datum_pool
dap_chain_wallet dap_chain_global_db dap_chain_mempool dap_chain_gdb
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libjson-c[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libsqlite3[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/curl[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/nghttp2[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libssl[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/c-ares[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/misc[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/zlib[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libssh2[x86_64CLANG].a
${CMAKE_CURRENT_SOURCE_DIR}/lib/[x86_64CLANG]/libcrypto[x86_64CLANG].a
KERNEL32
USER32
SHELL32
WINMM
GDI32
ADVAPI32
Ole32
Version
Imm32
OleAut32
ws2_32
ntdll
psapi
Shlwapi
Bcrypt
Crypt32
Secur32
userenv
)
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS "-mwindows")
endif()
#add_executable(${PROJECT_NAME}-cli "sources/main_node_cli.c" "sources/main_node_cli_shell.c" "sources/main_node_cli_net.c" )
#add_executable(${PROJECT_NAME}-tool "sources/main_node_tool.c" )
if(UNIX)
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS "-D_GNU_SOURCE")
set(NODE_LIBRARIES
dap_core dap_crypto dap_crypto dap_server_core dap_enc_server dap_udp_server dap_session
dap_enc_server dap_stream dap_stream_ch_chain dap_stream_ch_chain_net
dap_stream_ch_chain_net_srv dap_chain dap_chain_crypto dap_client
dap_chain_cs_dag dap_chain_cs_dag_poa dap_chain_cs_dag_pos
dap_chain_net dap_chain_net_srv dap_chain_net_srv_app dap_chain_net_srv_app_db
dap_chain_net_srv_datum dap_chain_net_srv_datum_pool dap_chain_net_srv_vpn
dap_chain_wallet dap_chain_global_db dap_chain_mempool dap_chain_gdb m magic
set(NODE_CLI_LIBRARIES
m dap_chain_net curl dap_cuttdb)
set(NODE_TOOL_LIBRARIES
dap_core dap_crypto dap_server_core dap_enc_server dap_udp_server dap_session
dap_enc_server dap_stream dap_chain_net_srv_vpn dap_stream_ch_chain dap_stream_ch_chain_net
dap_stream_ch_chain_net_srv dap_chain dap_chain_crypto dap_client
dap_chain_cs_dag dap_chain_cs_dag_poa dap_chain_cs_dag_pos
dap_chain_net dap_chain_net_srv dap_chain_net_srv_app dap_chain_net_srv_app_db
dap_chain_net_srv_datum dap_chain_net_srv_datum_pool dap_chain_net_srv_vpn
dap_chain_wallet dap_chain_global_db dap_chain_mempool m magic
dap_core
if(ANDROID )
set(ALL_LIBRARIES ${NODE_LIBRARIES} ${NODE_CLI_LIBRARIES} ${NODE_TOOL_LIBRARIES} log)
list(REMOVE_DUPLICATES ALL_LIBRARIES)
target_link_libraries(${NODE_TARGET} ${ALL_LIBRARIES})
target_link_libraries(${NODE_TARGET} ${NODE_LIBRARIES} pthread dap_cuttdb )
target_link_libraries(${NODE_CLI_TARGET} ${NODE_CLI_LIBRARIES} pthread )
target_link_libraries(${NODE_TOOL_TARGET} ${NODE_TOOL_LIBRARIES} pthread )
endif()
target_include_directories(${PROJECT_NAME} INTERFACE .)
if(UNIX AND NOT ANDROID)
target_include_directories(${NODE_CLI_TARGET} INTERFACE .)
target_include_directories(${NODE_TOOL_TARGET} INTERFACE .)
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dist/ DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*" PATTERN "*")
INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin )
if(UNIX AND NOT ANDROID)
INSTALL(TARGETS ${NODE_CLI_TARGET} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin )
INSTALL(TARGETS ${NODE_TOOL_TARGET} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin )
endif()
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts/ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin FILES_MATCHING PATTERN "*" PATTERN "*" PERMISSIONS OWNER_EXECUTE;OWNER_READ;OWNER_WRITE;WORLD_READ;GROUP_READ )