Commit f9ef538b authored by Philipp Götze's avatar Philipp Götze
Browse files

Merge branch 'wip/mvcc' into 'master'

Wip/mvcc

See merge request !1
parents 8a7e6ff7 7c4bed7a
Pipeline #167 failed with stages
in 96 minutes and 50 seconds
......@@ -11,7 +11,7 @@ build:
script:
- mkdir build
- cd build
- cmake -DCMAKE_BUILD_TYPE=Release ../src
- cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TEST_CASES=ON ../src
- make
# clean up unnecessary files and strip binaries
- rm -rf *-src *-download *-build 3rdparty
......@@ -33,6 +33,8 @@ test:
coverage:
stage: build
only:
- master
tags:
- grouprunner
script:
......@@ -40,7 +42,7 @@ coverage:
- pip install gcovr --user
- mkdir build
- cd build
- cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-g -O0 -fprofile-arcs -ftest-coverage" ../src
- cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-g -O0 -fprofile-arcs -ftest-coverage" -DBUILD_TEST_CASES=ON ../src
- make
- ctest
- ~/.local/bin/gcovr -r .. --exclude 3rdparty --exclude '(.+/)?catch\.hpp$'
......
......@@ -3,18 +3,35 @@ MAINTAINER Kai-Uwe Sattler <kus@tu-ilmenau.de>
# Installing dependencies
RUN apk update && apk add --no-cache \
autoconf \
bash \
cmake \
fts-dev \
git \
g++ \
boost-dev \
zeromq-dev \
make \
ndctl-dev \
sudo && \
wget -P /usr/include/ https://raw.githubusercontent.com/zeromq/cppzmq/master/zmq.hpp && \
# PMDK
git clone https://github.com/pmem/pmdk && \
cd pmdk && git checkout tags/1.6 && make EXTRA_CFLAGS="-Wno-error" EXTRA_LIBS="-lfts" && \
make install prefix=/usr/local && \
git clone https://github.com/pmem/libpmemobj-cpp && \
cd libpmemobj-cpp && mkdir build && cd build && git checkout tags/1.7 && \
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_DOC=OFF \
-DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=lib && make && make install && \
cd ../../.. && \
# Cleaning up
rm -rf pmdk && \
rm -rf /usr/share/doc && \
rm -rf /usr/local/share/doc && \
rm -rf /usr/share/man/?? && \
rm -rf /usr/share/man/??_*
rm -rf /usr/local/share/man/?? && \
rm -rf /usr/share/man/??_* && \
rm -rf /usr/local/share/man/??_*
# Add user and allow sudo
ENV USER pf
......
# We download some 3rdparty modules from github.com via DownloadProject
include(DownloadProject)
set(THIRD_PARTY_DIR "${PROJECT_BINARY_DIR}/3rdparty")
#--------------------------------------------------------------------------------
# the Catch framework for testing
download_project(PROJ Catch
GIT_REPOSITORY https://github.com/philsquared/Catch
GIT_TAG master
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/catch
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${Catch_SOURCE_DIR}/single_include/catch2/catch.hpp
${PROJECT_SOURCE_DIR}/test)
#--------------------------------------------------------------------------------
# the JSON library
# this repository is too big (~500MB)
#download_project(PROJ json
# GIT_REPOSITORY https://github.com/nlohmann/json.git
# GIT_TAG develop
# GIT_SHALLOW 1
# UPDATE_DISCONNECTED 1
# QUIET
#)
download_project(PROJ json
URL https://raw.githubusercontent.com/nlohmann/json/v3.7.0/single_include/nlohmann/json.hpp
DOWNLOAD_NO_EXTRACT 1
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/json
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/json
COMMAND ${CMAKE_COMMAND} -E copy
${json_SOURCE_DIR}/../json-download/json-download-prefix/src/json.hpp
${THIRD_PARTY_DIR}/json/)
include_directories("${THIRD_PARTY_DIR}/json")
#--------------------------------------------------------------------------------
# the format library
download_project(PROJ Format
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 4.1.0
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/fmt
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/fmt
COMMAND ${CMAKE_COMMAND} -E copy
${Format_SOURCE_DIR}/fmt/format.*
${THIRD_PARTY_DIR}/fmt
COMMAND ${CMAKE_COMMAND} -E copy
${Format_SOURCE_DIR}/fmt/ostream.*
${THIRD_PARTY_DIR}/fmt)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFMT_HEADER_ONLY=1")
include_directories("${THIRD_PARTY_DIR}/fmt")
#--------------------------------------------------------------------------------
# the SimpleWeb library
download_project(PROJ SimpleWeb
GIT_REPOSITORY https://github.com/eidheim/Simple-Web-Server.git
GIT_TAG master
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/SimpleWeb
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/SimpleWeb
COMMAND ${CMAKE_COMMAND} -E copy_directory
${SimpleWeb_SOURCE_DIR}
${THIRD_PARTY_DIR}/SimpleWeb)
#--------------------------------------------------------------------------------
# Google Benchmark framework
if (BUILD_GOOGLE_BENCH)
download_project(PROJ benchmark
GIT_REPOSITORY https://github.com/google/benchmark.git
GIT_TAG v1.2.0
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/benchmark
COMMAND ${CMAKE_COMMAND} -E chdir ${benchmark_SOURCE_DIR} cmake -DCMAKE_BUILD_TYPE=Release
COMMAND ${CMAKE_COMMAND} -E chdir ${benchmark_SOURCE_DIR} $(MAKE)
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/benchmark/include
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/benchmark/lib
COMMAND ${CMAKE_COMMAND} -E copy_directory
${benchmark_SOURCE_DIR}/include
${THIRD_PARTY_DIR}/benchmark/include
COMMAND ${CMAKE_COMMAND} -E copy
${benchmark_SOURCE_DIR}/src/libbenchmark.a
${THIRD_PARTY_DIR}/benchmark/lib
)
endif()
#--------------------------------------------------------------------------------
if(USE_ROCKSDB_TABLE)
# RocksDB key-value store
download_project(PROJ rocksdb
GIT_REPOSITORY https://github.com/facebook/rocksdb
GIT_TAG v5.1.4
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/rocksdb
COMMAND ${CMAKE_COMMAND} -E chdir ${rocksdb_SOURCE_DIR} $(MAKE) static_lib
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/rocksdb/include
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/rocksdb/lib
COMMAND ${CMAKE_COMMAND} -E copy_directory
${rocksdb_SOURCE_DIR}/include
${THIRD_PARTY_DIR}/rocksdb/include
COMMAND ${CMAKE_COMMAND} -E copy
${rocksdb_SOURCE_DIR}/librocksdb.a
${THIRD_PARTY_DIR}/rocksdb/lib
)
endif()
#--------------------------------------------------------------------------------
if(BUILD_USE_CASES)
# data for use cases
download_project(PROJ data
GIT_REPOSITORY https://github.com/dbis-ilm/data.git
GIT_TAG master
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
file(COPY ${PROJECT_BINARY_DIR}/data-src/DEBS2017
DESTINATION ${THIRD_PARTY_DIR}
)
# Linear Road Data Driver
download_project(PROJ linroad
GIT_REPOSITORY https://github.com/samsonxian/Linear-Road-Benchmark-Data-Driver.git
GIT_TAG master
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/linroad
COMMAND ${CMAKE_COMMAND} -E copy
${PROJECT_SOURCE_DIR}/usecases/LinearRoad/CMakeLists.txt
${linroad_SOURCE_DIR}/src
COMMAND ${CMAKE_COMMAND} -E chdir ${linroad_SOURCE_DIR}/src cmake .
COMMAND ${CMAKE_COMMAND} -E chdir ${linroad_SOURCE_DIR}/src $(MAKE)
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/linroad/data
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/linroad/include
COMMAND ${CMAKE_COMMAND} -E make_directory ${THIRD_PARTY_DIR}/linroad/lib
COMMAND ${CMAKE_COMMAND} -E copy
${linroad_SOURCE_DIR}/src/Data/datafile20seconds.dat
${THIRD_PARTY_DIR}/linroad/data
COMMAND ${CMAKE_COMMAND} -E copy
${linroad_SOURCE_DIR}/src/libLRDataProvider.a
${THIRD_PARTY_DIR}/linroad/lib
COMMAND ${CMAKE_COMMAND} -E copy
${linroad_SOURCE_DIR}/src/LRDataProvider.h
${THIRD_PARTY_DIR}/linroad/include
)
endif()
#--------------------------------------------------------------------------------
if(USE_NVM_TABLE)
# Peristent Memory Development Kit (pmem.io)
download_project(PROJ pmdk
GIT_REPOSITORY https://github.com/pmem/pmdk.git
GIT_TAG master
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/pmdk
COMMAND ${CMAKE_COMMAND} -E chdir ${pmdk_SOURCE_DIR} $(MAKE)
COMMAND ${CMAKE_COMMAND} -E chdir ${pmdk_SOURCE_DIR} $(MAKE) install prefix=${THIRD_PARTY_DIR}/pmdk
)
download_project(PROJ pmdk-cpp
GIT_REPOSITORY https://github.com/pmem/libpmemobj-cpp
GIT_TAG master
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/pmdk-cpp
COMMAND ${CMAKE_COMMAND} -E copy_directory
${pmdk-cpp_SOURCE_DIR}/include
${THIRD_PARTY_DIR}/pmdk/include
)
# PTable (part of nvm-based data structures) for NVM
download_project(PROJ nvmDS
GIT_REPOSITORY https://dbgit.prakinf.tu-ilmenau.de/code/nvm-based_data_structures.git
GIT_TAG master
GIT_SHALLOW 1
UPDATE_DISCONNECTED 1
QUIET
)
add_custom_command(
OUTPUT ${THIRD_PARTY_DIR}/nvmDS
COMMAND ${CMAKE_COMMAND} -E chdir ${nvmDS_SOURCE_DIR} cmake -DBUILD_TEST_CASES=OFF -DPROJECT_INSTALL_DIR=${THIRD_PARTY_DIR}/nvmDS src
COMMAND ${CMAKE_COMMAND} -E chdir ${nvmDS_SOURCE_DIR} $(MAKE) install
)
endif()
cmake_minimum_required(VERSION 2.8.2)
project(${DL_ARGS_PROJ}-download NONE)
include(ExternalProject)
ExternalProject_Add(${DL_ARGS_PROJ}-download
${DL_ARGS_UNPARSED_ARGUMENTS}
SOURCE_DIR "${DL_ARGS_SOURCE_DIR}"
BINARY_DIR "${DL_ARGS_BINARY_DIR}"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)
# MODULE: DownloadProject (from https://github.com/Crascit/DownloadProject)
#
# PROVIDES:
# download_project( PROJ projectName
# [PREFIX prefixDir]
# [DOWNLOAD_DIR downloadDir]
# [SOURCE_DIR srcDir]
# [BINARY_DIR binDir]
# [QUIET]
# ...
# )
#
# Provides the ability to download and unpack a tarball, zip file, git repository,
# etc. at configure time (i.e. when the cmake command is run). How the downloaded
# and unpacked contents are used is up to the caller, but the motivating case is
# to download source code which can then be included directly in the build with
# add_subdirectory() after the call to download_project(). Source and build
# directories are set up with this in mind.
#
# The PROJ argument is required. The projectName value will be used to construct
# the following variables upon exit (obviously replace projectName with its actual
# value):
#
# projectName_SOURCE_DIR
# projectName_BINARY_DIR
#
# The SOURCE_DIR and BINARY_DIR arguments are optional and would not typically
# need to be provided. They can be specified if you want the downloaded source
# and build directories to be located in a specific place. The contents of
# projectName_SOURCE_DIR and projectName_BINARY_DIR will be populated with the
# locations used whether you provide SOURCE_DIR/BINARY_DIR or not.
#
# The DOWNLOAD_DIR argument does not normally need to be set. It controls the
# location of the temporary CMake build used to perform the download.
#
# The PREFIX argument can be provided to change the base location of the default
# values of DOWNLOAD_DIR, SOURCE_DIR and BINARY_DIR. If all of those three arguments
# are provided, then PREFIX will have no effect. The default value for PREFIX is
# CMAKE_BINARY_DIR.
#
# The QUIET option can be given if you do not want to show the output associated
# with downloading the specified project.
#
# In addition to the above, any other options are passed through unmodified to
# ExternalProject_Add() to perform the actual download, patch and update steps.
# The following ExternalProject_Add() options are explicitly prohibited (they
# are reserved for use by the download_project() command):
#
# CONFIGURE_COMMAND
# BUILD_COMMAND
# INSTALL_COMMAND
# TEST_COMMAND
#
# Only those ExternalProject_Add() arguments which relate to downloading, patching
# and updating of the project sources are intended to be used. Also note that at
# least one set of download-related arguments are required.
#
# If using CMake 3.2 or later, the UPDATE_DISCONNECTED option can be used to
# prevent a check at the remote end for changes every time CMake is run
# after the first successful download. See the documentation of the ExternalProject
# module for more information. It is likely you will want to use this option if it
# is available to you.
#
# EXAMPLE USAGE:
#
# include(download_project.cmake)
# download_project(PROJ googletest
# GIT_REPOSITORY https://github.com/google/googletest.git
# GIT_TAG master
# UPDATE_DISCONNECTED 1
# QUIET
# )
#
# add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
#
#========================================================================================
set(_DownloadProjectDir "${CMAKE_CURRENT_LIST_DIR}")
include(CMakeParseArguments)
function(download_project)
set(options QUIET)
set(oneValueArgs
PROJ
PREFIX
DOWNLOAD_DIR
SOURCE_DIR
BINARY_DIR
# Prevent the following from being passed through
CONFIGURE_COMMAND
BUILD_COMMAND
INSTALL_COMMAND
TEST_COMMAND
)
set(multiValueArgs "")
cmake_parse_arguments(DL_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
# Hide output if requested
if (DL_ARGS_QUIET)
set(OUTPUT_QUIET "OUTPUT_QUIET")
else()
unset(OUTPUT_QUIET)
message(STATUS "Downloading/updating ${DL_ARGS_PROJ}")
endif()
# Set up where we will put our temporary CMakeLists.txt file and also
# the base point below which the default source and binary dirs will be
if (NOT DL_ARGS_PREFIX)
set(DL_ARGS_PREFIX "${CMAKE_BINARY_DIR}")
endif()
if (NOT DL_ARGS_DOWNLOAD_DIR)
set(DL_ARGS_DOWNLOAD_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-download")
endif()
# Ensure the caller can know where to find the source and build directories
if (NOT DL_ARGS_SOURCE_DIR)
set(DL_ARGS_SOURCE_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-src")
endif()
if (NOT DL_ARGS_BINARY_DIR)
set(DL_ARGS_BINARY_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-build")
endif()
set(${DL_ARGS_PROJ}_SOURCE_DIR "${DL_ARGS_SOURCE_DIR}" PARENT_SCOPE)
set(${DL_ARGS_PROJ}_BINARY_DIR "${DL_ARGS_BINARY_DIR}" PARENT_SCOPE)
# Create and build a separate CMake project to carry out the download.
# If we've already previously done these steps, they will not cause
# anything to be updated, so extra rebuilds of the project won't occur.
configure_file("${_DownloadProjectDir}/DownloadProject.CMakeLists.cmake.in"
"${DL_ARGS_DOWNLOAD_DIR}/CMakeLists.txt")
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
${OUTPUT_QUIET}
WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}"
)
execute_process(COMMAND ${CMAKE_COMMAND} --build .
${OUTPUT_QUIET}
WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}"
)
endfunction()
message("===== Fetching 3rd Party Dependencies ==========================================")
include(FetchContent REQUIRED)
set(THIRD_PARTY_DIR "${PROJECT_BINARY_DIR}/_deps")
# including here enables reuse of dependencies
include_directories(${THIRD_PARTY_DIR})
# ============================================================================ #
# the JSON library ///< this repository is too big (~500MB) #
# ============================================================================ #
FetchContent_Declare(
json
URL https://raw.githubusercontent.com/nlohmann/json/v3.7.0/single_include/nlohmann/json.hpp
DOWNLOAD_NO_EXTRACT TRUE
SOURCE_DIR ${THIRD_PARTY_DIR}/json
DOWNLOAD_DIR ${THIRD_PARTY_DIR}/json
)
FetchContent_GetProperties(json)
if(NOT json_POPULATED)
message(STATUS "Populating json")
FetchContent_Populate(json)
endif()
# ============================================================================ #
# the format library #
# ============================================================================ #
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 5.3.0
GIT_SHALLOW TRUE
)
FetchContent_GetProperties(fmt)
if(NOT fmt_POPULATED)
message(STATUS "Populating fmt (Format)")
FetchContent_Populate(fmt)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFMT_HEADER_ONLY=1")
file(COPY ${fmt_SOURCE_DIR}/include/fmt/core.h
${fmt_SOURCE_DIR}/include/fmt/format-inl.h
${fmt_SOURCE_DIR}/include/fmt/format.h
${fmt_SOURCE_DIR}/include/fmt/ostream.h
DESTINATION ${THIRD_PARTY_DIR}/fmt
)
endif()
# ============================================================================ #
# the SimpleWeb library #
# ============================================================================ #
FetchContent_Declare(
SimpleWeb
GIT_REPOSITORY https://gitlab.com/eidheim/Simple-Web-Server.git
GIT_TAG master
GIT_SHALLOW TRUE
SOURCE_DIR ${THIRD_PARTY_DIR}/SimpleWeb
)
FetchContent_GetProperties(SimpleWeb)
if(NOT simpleweb_POPULATED)
message(STATUS "Populating SimpleWeb")
FetchContent_Populate(SimpleWeb)
endif()
# ============================================================================ #
# Concurrent hash table #
# ============================================================================ #
FetchContent_Declare(
libcuckoo
GIT_REPOSITORY https://github.com/efficient/libcuckoo
GIT_TAG master
GIT_SHALLOW TRUE
)
FetchContent_GetProperties(libcuckoo)
if(NOT libcuckoo_POPULATED)
message(STATUS "Populating libcuckoo")
set(BUILD_EXAMPLES OFF CACHE INTERNAL "")
set(BUILD_TESTS OFF CACHE INTERNAL "")
FetchContent_Populate(libcuckoo)
add_subdirectory(${libcuckoo_SOURCE_DIR} ${libcuckoo_BINARY_DIR} EXCLUDE_FROM_ALL)
include_directories(${libcuckoo_SOURCE_DIR})
endif()
if(BUILD_TEST_CASES)
# ========================================================================== #
# the Catch framework for testing #
# ========================================================================== #
FetchContent_Declare(
catch
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG v2.9.2
GIT_SHALLOW TRUE
)
FetchContent_GetProperties(catch)
if(NOT catch_POPULATED)
message(STATUS "Populating catch")
FetchContent_Populate(catch)
set(CATCH_INCLUDE_DIR ${catch_SOURCE_DIR}/single_include/catch2)
add_library(Catch2::Catch IMPORTED INTERFACE)
set_property(TARGET Catch2::Catch PROPERTY INTERFACE_INCLUDE_DIRECTORIES
"${CATCH_INCLUDE_DIR}")
endif()
endif()
if (BUILD_GOOGLE_BENCH)
# ========================================================================== #
# Google Benchmark framework #
# ========================================================================== #
FetchContent_Declare(
benchmark
GIT_REPOSITORY https://github.com/google/benchmark.git
GIT_TAG v1.5.0
GIT_SHALLOW TRUE
)
FetchContent_GetProperties(benchmark)
if(NOT benchmark_POPULATED)
message(STATUS "Populating benchmark (google)")
set(BENCHMARK_ENABLE_TESTING OFF CACHE INTERNAL "")
set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE INTERNAL "")
FetchContent_Populate(benchmark)
add_subdirectory(${benchmark_SOURCE_DIR} ${benchmark_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
endif()
if(USE_ROCKSDB_TABLE)
# ========================================================================== #
# RocksDB key-value store #
# ========================================================================== #
FetchContent_Declare(
rocksdb
GIT_REPOSITORY https://github.com/facebook/rocksdb
GIT_TAG v6.2.2
GIT_SHALLOW TRUE
)
FetchContent_GetProperties(rocksdb)
if(NOT rocksdb_POPULATED)
message(STATUS "Populating rocksdb (facebook)")
set(USE_RTTI 1)
set(WITH_TESTS OFF CACHE INTERNAL "")
set(WITH_TOOLS OFF CACHE INTERNAL "")
set(CMAKE_ENABLE_SHARED OFF CACHE INTERNAL "")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=deprecated-copy -Wno-deprecated-copy -Wno-error=pessimizing-move -Wno-pessimizing-move")
FetchContent_Populate(rocksdb)
add_subdirectory(${rocksdb_SOURCE_DIR} ${rocksdb_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
endif()
if(BUILD_USE_CASES)
# ========================================================================== #
# data for use cases #
# ========================================================================== #
FetchContent_Declare(
data
GIT_REPOSITORY https://github.com/dbis-ilm/data.git
GIT_TAG master
GIT_SHALLOW TRUE
SOURCE_DIR ${THIRD_PARTY_DIR}/data
)
FetchContent_GetProperties(data)
if(NOT data_POPULATED)
message(STATUS "Populating data (for use cases)")
FetchContent_Populate(data)
endif()
# ========================================================================== #
# Linear Road Data Driver #
# ========================================================================== #
FetchContent_Declare(
linroad
GIT_REPOSITORY https://github.com/yxian29/Linear-Road-Benchmark-Data-Driver.git
GIT_TAG master
GIT_SHALLOW TRUE