2017-12-04 20:56:17 +08:00
|
|
|
# CMake configuration for the main memgraph library and executable
|
|
|
|
|
2018-06-19 20:37:02 +08:00
|
|
|
# add memgraph sub libraries, ordered by dependency
|
2018-10-15 17:01:57 +08:00
|
|
|
add_subdirectory(lisp)
|
2018-05-29 17:13:13 +08:00
|
|
|
add_subdirectory(utils)
|
2018-07-06 15:28:05 +08:00
|
|
|
add_subdirectory(requests)
|
2018-05-30 19:00:25 +08:00
|
|
|
add_subdirectory(io)
|
2020-01-24 17:45:05 +08:00
|
|
|
add_subdirectory(kvstore)
|
2018-06-20 19:46:54 +08:00
|
|
|
add_subdirectory(telemetry)
|
Extract communication to static library
Summary:
Session specifics have been move out of the Bolt `executing` state, and
are accessed via pure virtual Session type. Our server is templated on
the session and we are setting the concrete type, so there should be no
virtual call overhead. Abstract Session is used to indicate the
interface, this could have also been templated, but the explicit
interface definition makes it clearer.
Specific session implementation for running Memgraph is now implemented
in memgraph_bolt, which instantiates the concrete session type. This may
not be 100% appropriate place, but Memgraph specific session isn't
needed anywhere else.
Bolt/communication tests now use a dummy session and depend only on
communication, which significantly improves test run times.
All these changes make the communication a library which doesn't depend
on storage nor the database. Only shared connection points, which aren't
part of the base communication library are:
* glue/conversion -- which converts between storage and bolt types, and
* communication/result_stream_faker -- templated, but used in tests and query/repl
Depends on D1453
Reviewers: mferencevic, buda, mtomic, msantl
Reviewed By: mferencevic, mtomic
Subscribers: pullbot
Differential Revision: https://phabricator.memgraph.io/D1456
2018-07-10 22:18:19 +08:00
|
|
|
add_subdirectory(communication)
|
2021-09-21 20:43:27 +08:00
|
|
|
add_subdirectory(memory)
|
2019-07-03 21:32:03 +08:00
|
|
|
add_subdirectory(storage/v2)
|
2021-06-10 18:43:01 +08:00
|
|
|
add_subdirectory(integrations)
|
2021-06-16 21:46:44 +08:00
|
|
|
add_subdirectory(query)
|
2021-03-10 17:36:38 +08:00
|
|
|
add_subdirectory(slk)
|
|
|
|
add_subdirectory(rpc)
|
2021-09-30 01:14:39 +08:00
|
|
|
add_subdirectory(auth)
|
|
|
|
|
2020-02-05 22:05:18 +08:00
|
|
|
if (MG_ENTERPRISE)
|
|
|
|
add_subdirectory(audit)
|
|
|
|
endif()
|
2018-05-29 17:13:13 +08:00
|
|
|
|
2018-10-04 21:23:07 +08:00
|
|
|
string(TOLOWER ${CMAKE_BUILD_TYPE} lower_build_type)
|
2017-12-04 20:56:17 +08:00
|
|
|
|
|
|
|
# Generate a version.hpp file
|
2020-02-11 23:39:54 +08:00
|
|
|
set(VERSION_STRING ${MEMGRAPH_VERSION})
|
2017-12-04 20:56:17 +08:00
|
|
|
configure_file(version.hpp.in version.hpp @ONLY)
|
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
|
2020-01-09 16:49:02 +08:00
|
|
|
# ----------------------------------------------------------------------------
|
|
|
|
# Memgraph Single Node v2 Executable
|
|
|
|
# ----------------------------------------------------------------------------
|
|
|
|
set(mg_single_node_v2_sources
|
|
|
|
glue/communication.cpp
|
|
|
|
memgraph.cpp
|
2021-09-30 01:14:39 +08:00
|
|
|
glue/auth.cpp
|
2020-01-09 16:49:02 +08:00
|
|
|
)
|
|
|
|
|
2021-03-04 19:20:11 +08:00
|
|
|
set(mg_single_node_v2_libs stdc++fs Threads::Threads
|
2021-12-07 18:05:33 +08:00
|
|
|
telemetry_lib mg-query mg-communication mg-memory mg-utils mg-auth mg-license mg-settings)
|
2020-02-05 22:05:18 +08:00
|
|
|
if (MG_ENTERPRISE)
|
|
|
|
# These are enterprise subsystems
|
2021-09-30 01:14:39 +08:00
|
|
|
set(mg_single_node_v2_libs ${mg_single_node_v2_libs} mg-audit)
|
2020-02-05 22:05:18 +08:00
|
|
|
endif()
|
2020-01-09 16:49:02 +08:00
|
|
|
|
2017-12-04 20:56:17 +08:00
|
|
|
# memgraph main executable
|
2020-01-09 16:49:02 +08:00
|
|
|
add_executable(memgraph ${mg_single_node_v2_sources})
|
|
|
|
target_include_directories(memgraph PUBLIC ${CMAKE_SOURCE_DIR}/include)
|
2021-03-04 19:20:11 +08:00
|
|
|
target_link_libraries(memgraph ${mg_single_node_v2_libs})
|
2020-01-09 16:49:02 +08:00
|
|
|
# NOTE: `include/mg_procedure.syms` describes a pattern match for symbols which
|
|
|
|
# should be dynamically exported, so that `dlopen` can correctly link the
|
|
|
|
# symbols in custom procedure module libraries.
|
|
|
|
target_link_libraries(memgraph "-Wl,--dynamic-list=${CMAKE_SOURCE_DIR}/include/mg_procedure.syms")
|
2017-12-11 22:51:53 +08:00
|
|
|
set_target_properties(memgraph PROPERTIES
|
|
|
|
# Set the executable output name to include version information.
|
2020-02-11 23:39:54 +08:00
|
|
|
OUTPUT_NAME "memgraph-${MEMGRAPH_VERSION}_${CMAKE_BUILD_TYPE}"
|
2017-12-11 22:51:53 +08:00
|
|
|
# Output the executable in main binary dir.
|
2017-12-04 20:56:17 +08:00
|
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
2017-12-11 22:51:53 +08:00
|
|
|
# Create symlink to the built executable.
|
|
|
|
add_custom_command(TARGET memgraph POST_BUILD
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE:memgraph> ${CMAKE_BINARY_DIR}/memgraph
|
|
|
|
BYPRODUCTS ${CMAKE_BINARY_DIR}/memgraph
|
2019-12-09 18:31:27 +08:00
|
|
|
COMMENT "Creating symlink to memgraph executable")
|
2020-03-09 18:06:01 +08:00
|
|
|
# Emulate the installed python_support, by creating a symlink
|
|
|
|
add_custom_command(TARGET memgraph POST_BUILD
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/python_support
|
|
|
|
BYPRODUCTS ${CMAKE_BINARY_DIR}/python_support
|
|
|
|
COMMENT "Creating symlink for python_support")
|
2017-12-11 22:51:53 +08:00
|
|
|
|
2017-12-04 20:56:17 +08:00
|
|
|
# Strip the executable in release build.
|
|
|
|
if (lower_build_type STREQUAL "release")
|
2017-12-11 22:51:53 +08:00
|
|
|
add_custom_command(TARGET memgraph POST_BUILD
|
|
|
|
COMMAND strip -s $<TARGET_FILE:memgraph>
|
2019-12-09 18:31:27 +08:00
|
|
|
COMMENT "Stripping symbols and sections from memgraph")
|
2017-12-04 20:56:17 +08:00
|
|
|
endif()
|
|
|
|
|
2019-12-09 18:31:27 +08:00
|
|
|
# Generate the configuration file.
|
|
|
|
add_custom_command(TARGET memgraph POST_BUILD
|
|
|
|
COMMAND ${CMAKE_SOURCE_DIR}/config/generate.py
|
|
|
|
${CMAKE_BINARY_DIR}/memgraph
|
|
|
|
${CMAKE_BINARY_DIR}/config/memgraph.conf
|
|
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/config/generate.py
|
|
|
|
${CMAKE_SOURCE_DIR}/config/flags.yaml
|
|
|
|
BYPRODUCTS ${CMAKE_BINARY_DIR}/config/memgraph.conf
|
|
|
|
COMMENT "Generating memgraph configuration file")
|
|
|
|
|
2017-12-04 20:56:17 +08:00
|
|
|
# Everything here is under "memgraph" install component.
|
|
|
|
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "memgraph")
|
|
|
|
|
2018-04-10 16:40:03 +08:00
|
|
|
# TODO: Default directory permissions to 755
|
|
|
|
# NOTE: This is added in CMake 3.11, so enable it then
|
|
|
|
#set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
|
|
|
|
# OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ)
|
|
|
|
|
2017-12-04 20:56:17 +08:00
|
|
|
# Install and rename executable to just 'memgraph' Since we have to rename,
|
|
|
|
# we cannot use the recommended `install(TARGETS ...)`.
|
2017-12-11 22:51:53 +08:00
|
|
|
install(PROGRAMS $<TARGET_FILE:memgraph>
|
2017-12-21 23:03:54 +08:00
|
|
|
DESTINATION lib/memgraph RENAME memgraph)
|
2020-03-09 18:06:01 +08:00
|
|
|
# Install Python source for supporting our embedded Python.
|
|
|
|
install(FILES ${CMAKE_SOURCE_DIR}/include/mgp.py
|
|
|
|
DESTINATION lib/memgraph/python_support)
|
Integrate loading openCypher module procedures
Summary:
All mgp_* symbols are exported from Memgraph executable, no other
symbols should be visible.
The primary C API header, mg_procedure.h, is now part of the
installation. Also, added a shippable query module example.
Directory `query_modules` is meant to contain sources of modules we
write and ship as part of the installation. Currently, there's only an
example module, but there may be potentially more. Some modules could
only be installed as part of the enterprise release.
For Memgraph to load custom procedures, it needs to be started with a
flag pointing to a directory with compiled shared libraries implementing
those procedures.
Reviewers: mferencevic, ipaljak, llugovic, dsantl, buda
Reviewed By: mferencevic
Subscribers: pullbot
Differential Revision: https://phabricator.memgraph.io/D2538
2019-10-31 23:36:34 +08:00
|
|
|
# Install the include file for writing custom procedures.
|
|
|
|
install(FILES ${CMAKE_SOURCE_DIR}/include/mg_procedure.h
|
|
|
|
DESTINATION include/memgraph)
|
2017-12-04 20:56:17 +08:00
|
|
|
# Install the config file (must use absolute path).
|
2019-12-09 18:31:27 +08:00
|
|
|
install(FILES ${CMAKE_BINARY_DIR}/config/memgraph.conf
|
2017-12-04 20:56:17 +08:00
|
|
|
DESTINATION /etc/memgraph RENAME memgraph.conf)
|
|
|
|
# Install logrotate configuration (must use absolute path).
|
2021-09-30 01:14:39 +08:00
|
|
|
install(FILES ${CMAKE_SOURCE_DIR}/release/logrotate.conf
|
2020-10-18 02:08:03 +08:00
|
|
|
DESTINATION /etc/logrotate.d RENAME memgraph)
|
2021-09-30 01:14:39 +08:00
|
|
|
|
2017-12-04 20:56:17 +08:00
|
|
|
# Create empty directories for default location of lib and log.
|
|
|
|
install(CODE "file(MAKE_DIRECTORY \$ENV{DESTDIR}/var/log/memgraph
|
|
|
|
\$ENV{DESTDIR}/var/lib/memgraph)")
|
2020-03-03 17:38:50 +08:00
|
|
|
|
|
|
|
# ----------------------------------------------------------------------------
|
|
|
|
# END Memgraph Single Node v2 Executable
|
|
|
|
# ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
# ----------------------------------------------------------------------------
|
|
|
|
# Memgraph CSV Import Tool Executable
|
|
|
|
# ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
add_executable(mg_import_csv mg_import_csv.cpp)
|
|
|
|
target_link_libraries(mg_import_csv mg-storage-v2)
|
|
|
|
|
|
|
|
# Strip the executable in release build.
|
|
|
|
if (lower_build_type STREQUAL "release")
|
|
|
|
add_custom_command(TARGET mg_import_csv POST_BUILD
|
|
|
|
COMMAND strip -s mg_import_csv
|
|
|
|
COMMENT "Stripping symbols and sections from mg_import_csv")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
install(TARGETS mg_import_csv RUNTIME DESTINATION bin)
|
|
|
|
|
|
|
|
# ----------------------------------------------------------------------------
|
|
|
|
# Memgraph CSV Import Tool Executable
|
|
|
|
# ----------------------------------------------------------------------------
|