Skip to content
Snippets Groups Projects
Commit c5467924 authored by Fabian Tërnava's avatar Fabian Tërnava
Browse files

added installation script for mongocxx driver

parent 18188a42
No related branches found
No related tags found
1 merge request!171Periodic merge of armem/dev into master
# see https://github.com/intersvyaz/zerod/blob/master/cmake/modules/FindLibbson.cmake
# - Find libbson
# Find the native libbson includes and library.
# Once done this will define
#
# LIBBSON_INCLUDE_DIRS - where to find bson.h, etc.
# LIBBSON_LIBRARIES - List of libraries when using libbson.
# LIBBSON_FOUND - True if libbson found.
#
# LIBBSON_VERSION_STRING - The version of libbson found (x.y.z)
# LIBBSON_VERSION_MAJOR - The major version
# LIBBSON_VERSION_MINOR - The minor version
# LIBBSON_VERSION_MICRO - The micro version
FIND_PATH(LIBBSON_INCLUDE_DIR NAMES bson.h PATH_SUFFIXES libbson-1.0)
FIND_LIBRARY(LIBBSON_LIBRARY NAMES bson-1.0)
MARK_AS_ADVANCED(LIBBSON_LIBRARY LIBBSON_INCLUDE_DIR)
IF(LIBBSON_INCLUDE_DIR AND EXISTS "${LIBBSON_INCLUDE_DIR}/bson-version.h")
# Read and parse version header file for version number
file(READ "${LIBBSON_INCLUDE_DIR}/bson-version.h" _libbson_HEADER_CONTENTS)
IF(_libbson_HEADER_CONTENTS MATCHES ".*BSON_MAJOR_VERSION.*")
#define BSON_MAJOR_VERSION
string(REGEX REPLACE ".*#define +BSON_MAJOR_VERSION +\\(([0-9]+)\\).*" "\\1" LIBBSON_VERSION_MAJOR "${_libbson_HEADER_CONTENTS}")
string(REGEX REPLACE ".*#define +BSON_MINOR_VERSION +\\(([0-9]+)\\).*" "\\1" LIBBSON_VERSION_MINOR "${_libbson_HEADER_CONTENTS}")
string(REGEX REPLACE ".*#define +BSON_MICRO_VERSION +\\(([0-9]+)\\).*" "\\1" LIBBSON_VERSION_MICRO "${_libbson_HEADER_CONTENTS}")
ELSE()
SET(LIBBSON_VERSION_MAJOR 0)
SET(LIBBSON_VERSION_MINOR 0)
SET(LIBBSON_VERSION_MICRO 0)
ENDIF()
SET(LIBBSON_VERSION_STRING "${LIBBSON_VERSION_MAJOR}.${LIBBSON_VERSION_MINOR}.${LIBBSON_VERSION_MICRO}")
ENDIF()
# handle the QUIETLY and REQUIRED arguments and set LIBBSON_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(libbson-1.0
REQUIRED_VARS LIBBSON_LIBRARY LIBBSON_INCLUDE_DIR
VERSION_VAR LIBBSON_VERSION_STRING
)
IF(LIBBSON_FOUND)
SET(LIBBSON_INCLUDE_DIRS ${LIBBSON_INCLUDE_DIR})
SET(LIBBSON_LIBRARIES ${LIBBSON_LIBRARY})
ENDIF()
# see https://github.com/intersvyaz/freeradius-mongodb/blob/master/cmake/modules/FindLibmongoc.cmake
# - Find libmongoc
# Find the native libmongoc includes and library.
# Once done this will define
#
# LIBMONGOC_INCLUDE_DIRS - where to find mongoc.h, etc.
# LIBMONGOC_LIBRARIES - List of libraries when using libmongoc.
# LIBMONGOC_FOUND - True if libmongoc found.
#
# LIBMONGOC_VERSION_STRING - The version of libmongoc found (x.y.z)
# LIBMONGOC_VERSION_MAJOR - The major version
# LIBMONGOC_VERSION_MINOR - The minor version
# LIBMONGOC_VERSION_MICRO - The micro version
FIND_PATH(LIBMONGOC_INCLUDE_DIR NAMES mongoc.h PATH_SUFFIXES libmongoc-1.0)
FIND_LIBRARY(LIBMONGOC_LIBRARY NAMES mongoc-1.0)
MARK_AS_ADVANCED(LIBMONGOC_LIBRARY LIBMONGOC_INCLUDE_DIR)
IF(LIBMONGOC_INCLUDE_DIR AND EXISTS "${LIBMONGOC_INCLUDE_DIR}/mongoc-version.h")
# Read and parse version header file for version number
file(READ "${LIBMONGOC_INCLUDE_DIR}/mongoc-version.h" _libmongoc_HEADER_CONTENTS)
IF(_libmongoc_HEADER_CONTENTS MATCHES ".*MONGOC_MAJOR_VERSION.*")
string(REGEX REPLACE ".*#define +MONGOC_MAJOR_VERSION +\\(([0-9]+)\\).*" "\\1" LIBMONGOC_VERSION_MAJOR "${_libmongoc_HEADER_CONTENTS}")
string(REGEX REPLACE ".*#define +MONGOC_MINOR_VERSION +\\(([0-9]+)\\).*" "\\1" LIBMONGOC_VERSION_MINOR "${_libmongoc_HEADER_CONTENTS}")
string(REGEX REPLACE ".*#define +MONGOC_MICRO_VERSION +\\(([0-9]+)\\).*" "\\1" LIBMONGOC_VERSION_MICRO "${_libmongoc_HEADER_CONTENTS}")
ELSE()
SET(LIBMONGOC_VERSION_MAJOR 0)
SET(LIBMONGOC_VERSION_MINOR 0)
SET(LIBMONGOC_VERSION_MICRO 0)
ENDIF()
SET(LIBMONGOC_VERSION_STRING "${LIBMONGOC_VERSION_MAJOR}.${LIBMONGOC_VERSION_MINOR}.${LIBMONGOC_VERSION_MICRO}")
ENDIF()
# handle the QUIETLY and REQUIRED arguments and set LIBMONGOC_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Libmongoc
REQUIRED_VARS LIBMONGOC_LIBRARY LIBMONGOC_INCLUDE_DIR
VERSION_VAR LIBMONGOC_VERSION_STRING
)
IF(LIBMONGOC_FOUND)
SET(LIBMONGOC_INCLUDE_DIRS ${LIBMONGOC_INCLUDE_DIR})
SET(LIBMONGOC_LIBRARIES ${LIBMONGOC_LIBRARY})
ENDIF()
#!/bin/bash
# By Fabian Peller 2021-06-10;
if [ "$#" -ne 1 ]; then
echo "Usage: $0 CLONE-DIRECTORY" >&2
exit 1
fi
extractDir="$1"
sourceDir="$extractDir/mongo-cxx-driver-r3.2.1"
installDir="$extractDir/mongo-cxx-driver-r3.2.1/build/install"
scriptDir="$(readlink -f "$(dirname "$0")")"
pwd="$(pwd)"
# You first have to install libbson-dev and libmongoc-dev (not necessary on the lab pcs)
#sudo apt install libbson-dev libmongoc-dev
# Then you have to update the symlinks (not necessary on the lab pcs)
# Update the symlinks because the default mongoc bson cmake configs are shitty
#sudo ln -s /usr/include/libbson-1.0/ /usr/lib/include/libbson-1.0
#sudo ln -s /usr/include/libbson-1.0/ /usr/lib/include/libbson-1.0
#sudo ln -s /usr/include/libmongoc-1.0/ /usr/lib/include/libmongoc-1.0
#sudo ln -s /usr/lib /usr/lib/lib
# Then you can build the mongocxx driver
mkdir $extractDir &> /dev/null || true
tar -xvf mongo-cxx-driver-r3.2.1.tar.gz -C $extractDir
cd $sourceDir
mkdir build &> /dev/null || true
cd build
cmake ..
cmake .. -DBSON_LIBRARY="/usr/lib/x86_64-linux-gnu/libbson-1.0.so" -DMONGOC_LIBRARY="/usr/lib/x86_64-linux-gnu/libmongoc-1.0.so" -DCMAKE_INSTALL_PREFIX="$installDir"
# install to $extractDir/build/install
make -j`nproc`
make install
# Finally, tell RobotAPI where to find mongocxx
echo "You need to cmake RobotAPI now with: cmake -DCMAKE_PREFIX_PATH=$installDir .."
#armarx-dev exec --no-deps RobotAPI "cd build && cmake -DCMAKE_PREFIX_PATH=$installDir ."
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment