Skip to content

Commit ce1fdf1

Browse files
authored
Rewrite the do module in C++ (#222)
1 parent 2fe7896 commit ce1fdf1

File tree

21 files changed

+483
-276
lines changed

21 files changed

+483
-276
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[submodule "cpp/memgraph"]
22
path = cpp/memgraph
33
url = https://github.com/memgraph/memgraph.git
4-
branch = fix-creating-mgp-value-from-nullptr
4+
branch = master

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ RUN apt-get update && apt-get install -y \
2626
python3-dev `mage-memgraph` \
2727
clang `mage-memgraph` \
2828
git `mage-memgraph` \
29+
libboost-all-dev `mage-memgraph` \
2930
--no-install-recommends \
3031
# Download and install Memgraph
3132
&& curl https://download.memgraph.com/memgraph/v${MG_VERSION}/debian-11/memgraph_${MG_VERSION}-1_amd64.deb --output memgraph.deb \

cpp/CMakeLists.txt

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,19 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
1515
# Required C++ standard.
1616
set(CMAKE_C_STANDARD 11)
1717
set(CMAKE_C_STANDARD_REQUIRED ON)
18-
set(CMAKE_CXX_STANDARD 17)
18+
set(CMAKE_CXX_STANDARD 20)
1919
set(CMAKE_CXX_STANDARD_REQUIRED ON)
2020

2121
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
2222

2323
# Compile flags.
2424
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall \
2525
-Werror=switch -Werror=switch-bool")
26+
2627
# Don't omit frame pointer in RelWithDebInfo, for additional callchain debug.
2728
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
28-
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer")
29+
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer")
30+
2931
# Release flags.
3032
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
3133
set(CMAKE_SHARED_LIBRARY_PREFIX "")
@@ -39,14 +41,14 @@ include(cugraph)
3941
# Install testing dependencies (gtest)
4042
set(GTEST_ROOT ${PROJECT_BINARY_DIR}/gtest)
4143
ExternalProject_Add(gtest-proj
42-
PREFIX ${GTEST_ROOT}
43-
INSTALL_DIR ${GTEST_ROOT}
44-
GIT_REPOSITORY https://github.com/google/googletest.git
45-
GIT_TAG release-1.11.0
46-
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
47-
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
48-
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
49-
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
44+
PREFIX ${GTEST_ROOT}
45+
INSTALL_DIR ${GTEST_ROOT}
46+
GIT_REPOSITORY https://github.com/google/googletest.git
47+
GIT_TAG release-1.11.0
48+
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
49+
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
50+
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
51+
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
5052
set(GTEST_INCLUDE_DIR ${GTEST_ROOT}/include)
5153
set(GTEST_LIBRARY_PATH ${GTEST_ROOT}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a)
5254
set(GTEST_DEBUG_LIBRARY_PATH ${GTEST_ROOT}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtestd.a)
@@ -60,22 +62,23 @@ add_dependencies(mage_gtest gtest-proj)
6062

6163
# Add OpenMP compiling option
6264
find_package(OpenMP)
63-
if (OPENMP_FOUND)
64-
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
65-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
66-
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
65+
66+
if(OPENMP_FOUND)
67+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
68+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
69+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
6770
endif()
6871

6972
# Add stduuid - cross-platform UUID implementation
7073
set(UUID_ROOT ${PROJECT_BINARY_DIR}/uuid)
7174
ExternalProject_Add(uuid-proj
72-
PREFIX ${UUID_ROOT}
73-
INSTALL_DIR ${UUID_ROOT}
74-
GIT_REPOSITORY https://github.com/mariusbancila/stduuid.git
75-
GIT_TAG v1.2.2
76-
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
77-
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
78-
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
75+
PREFIX ${UUID_ROOT}
76+
INSTALL_DIR ${UUID_ROOT}
77+
GIT_REPOSITORY https://github.com/mariusbancila/stduuid.git
78+
GIT_TAG v1.2.2
79+
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
80+
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
81+
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
7982
set(UUID_INCLUDE_DIR ${UUID_ROOT}/include)
8083
add_library(mage_uuid INTERFACE)
8184
target_include_directories(mage_uuid INTERFACE ${UUID_INCLUDE_DIR}/gsl)
@@ -88,7 +91,7 @@ ExternalProject_Add(mgclient-proj
8891
PREFIX ${MGCLIENT_ROOT}
8992
INSTALL_DIR ${MGCLIENT_ROOT}
9093
GIT_REPOSITORY https://github.com/memgraph/mgclient.git
91-
GIT_TAG T634-FL-add-column-names-to-cpp-client
94+
GIT_TAG v1.4.2
9295
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
9396
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
9497
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
@@ -138,5 +141,6 @@ add_subdirectory(degree_centrality_module)
138141
add_subdirectory(graph_util_module)
139142
add_subdirectory(node_similarity_module)
140143
add_subdirectory(distance_calculator)
144+
add_subdirectory(do_module)
141145
add_subdirectory(periodic_module)
142146
add_cugraph_subdirectory(cugraph_module)

cpp/do_module/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Add all module files related to graph util module
2+
set(do_module_src
3+
do_module.cpp)
4+
5+
add_query_module(do 1 "${do_module_src}")
6+
7+
target_include_directories(do PRIVATE ${MGCLIENT_INCLUDE_DIRS})
8+
target_link_libraries(do PRIVATE mgclient fmt::fmt)

0 commit comments

Comments
 (0)