diff --git a/etc/cmake/Findlibbson-1.0.cmake b/etc/cmake/Findlibbson-1.0.cmake new file mode 100644 index 0000000000000000000000000000000000000000..e1f1df468c48dc8a7d44ba8328958fac8171a7e8 --- /dev/null +++ b/etc/cmake/Findlibbson-1.0.cmake @@ -0,0 +1,48 @@ +# 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() diff --git a/etc/cmake/Findlibmongoc-1.0 b/etc/cmake/Findlibmongoc-1.0 new file mode 100644 index 0000000000000000000000000000000000000000..594e87aeadc5cb31066934b8ad48dfa25ac29f8e --- /dev/null +++ b/etc/cmake/Findlibmongoc-1.0 @@ -0,0 +1,47 @@ +# 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() diff --git a/etc/mongocxx/install_mongocxx.sh b/etc/mongocxx/install_mongocxx.sh new file mode 100755 index 0000000000000000000000000000000000000000..feb912d3b34eda393e95c7c4f9a6cb207961713a --- /dev/null +++ b/etc/mongocxx/install_mongocxx.sh @@ -0,0 +1,40 @@ +#!/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 ." diff --git a/etc/mongocxx/mongo-cxx-driver-r3.2.1.tar.gz b/etc/mongocxx/mongo-cxx-driver-r3.2.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7ce0e9b587972ef723eaaf04dbdb49d7ffe5888 Binary files /dev/null and b/etc/mongocxx/mongo-cxx-driver-r3.2.1.tar.gz differ