SYSREPO_REPO=$($SYSREPO_CONFIG --variable=SR_REPOSITORY_LOC libsysrepo)
# Now get the environment for C++ bindings for Sysrepo.
- SYSREPOCPP_INCLUDEDIR=$($SYSREPO_CONFIG --cflags-only-I libSysrepo-cpp)
- SYSREPOCPP_CPPFLAGS="$SYSREPO_INCLUDEDIR $($SYSREPO_CONFIG --cflags-only-other libSysrepo-cpp)"
- SYSREPOCPP_LIBS=$($SYSREPO_CONFIG --libs libSysrepo-cpp)
- SYSREPOCPP_VERSION=$($SYSREPO_CONFIG --modversion libSysrepo-cpp)
+ SYSREPOCPP_INCLUDEDIR=$($SYSREPO_CONFIG --cflags-only-I libsysrepo-cpp)
+ SYSREPOCPP_CPPFLAGS="$SYSREPO_INCLUDEDIR $($SYSREPO_CONFIG --cflags-only-other libsysrepo-cpp)"
+ SYSREPOCPP_LIBS=$($SYSREPO_CONFIG --libs libsysrepo-cpp)
+ SYSREPOCPP_VERSION=$($SYSREPO_CONFIG --modversion libsysrepo-cpp)
+
+ AC_SUBST(SYSREPO_INCLUDEDIR)
+ AC_SUBST(SYSREPO_CPPFLAGS)
+ AC_SUBST(SYSREPO_LIBS)
+ AC_SUBST(SYSREPO_REPO)
+
+ # Check that a simple program using Sysrepo functions can compile and link.
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ LIBS_SAVED="$LIBS"
+
+ CPPFLAGS="$SYSREPO_CPPFLAGS $CPPFLAGS"
+ LIBS="$SYSREPO_LIBS $LIBS"
+
+ AC_MSG_CHECKING([sysrepo])
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [extern "C" {
+ #include <sysrepo.h>
+ }],
+ [sr_conn_ctx_t *connection;
+ sr_session_ctx_t *session;
+ sr_disconnect(connection);])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Cannot integrate with Sysrepo's C API. Make sure that the sysrepo.h header and the libsysrepo.so library can be found.])]
+ )
# If include paths are equal, there's no need to include both. But if they're different,
# we need both.
AC_SUBST(SYSREPO_INCLUDEDIR)
AC_SUBST(SYSREPO_CPPFLAGS)
AC_SUBST(SYSREPO_LIBS)
- AC_SUBST(SYSREPO_REPO)
-
- # Check that a simple program using Sysrepo functions can compile and link.
- CPPFLAGS_SAVED="$CPPFLAGS"
- LIBS_SAVED="$LIBS"
CPPFLAGS="$SYSREPO_CPPFLAGS $CPPFLAGS"
LIBS="$SYSREPO_LIBS $LIBS"
+ AC_MSG_CHECKING([sysrepo-cpp])
AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([extern "C" {
- #include <sysrepo.h>
- }],
- [sr_conn_ctx_t *connection = NULL;
- sr_session_ctx_t *session = NULL;
- sr_connect("configure_test", SR_CONN_DEFAULT, &connection);
- sr_disconnect(connection);])],
- [AC_MSG_RESULT([checking for Sysrepo headers and library... yes])],
- [AC_MSG_RESULT([checking for Sysrepo headers and library... no])
- AC_MSG_ERROR([Needs Sysrepo library])]
- )
-
- AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <sysrepo-cpp/Session.hpp>],
+ [])],
+ [AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
- [#include <sysrepo-cpp/Session.hpp>],
- [sysrepo::Connection("conn-name");])],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [#include <sysrepo-cpp/Session.hpp>],
- [auto is_empty = [[]](sysrepo::S_Val v){
- return (v->empty()); };
- ])],
- [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library, new])
- AC_DEFINE([HAVE_POST_0_7_7_SYSREPO], [1], [Using sysrepo > 0.7.7])],
- [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library, yes])])],
+ [#include <sysrepo-cpp/Session.hpp>],
+ [sysrepo::Connection();]
+ )],
+ [AC_MSG_RESULT([v1.x])
+ AC_DEFINE([HAVE_SYSREPO_V1], [true], [Using sysrepo 1.x])],
[AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <sysrepo-cpp/Session.hpp>],
+ [sysrepo::S_Val value;
+ value->empty();]
+ )],
+ [AC_MSG_RESULT([>= v0.7.7])
+ AC_MSG_ERROR([Using legacy sysrepo >= 0.7.7 which is no longer supported. Upgrade to the latest version with C++ bindings: 1.4.140.])],
+ [AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
- [#include <sysrepo-cpp/Session.h>],
- [Connection("conn-name");])],
- [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... old])
- AC_DEFINE([HAVE_PRE_0_7_6_SYSREPO], [1], [Using sysrepo < 0.7.6])],
- [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... no])
- AC_MSG_ERROR([Needs Sysrepo C++ bindings (unable to find Sysrepo-ccp library. To get it, you need to compile sysrepo with -DGEN_CPP_BINDINGS=ON.)])]
+ [#include <sysrepo-cpp/Session.h>],
+ [Connection("conn-name");])],
+ [AC_MSG_RESULT([<= v0.7.6])
+ AC_MSG_ERROR([Using sysrepo <= 0.7.6 which is no longer supported. Upgrade to the latest version with C++ bindings: 1.4.140.])],
+ [AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Found Sysrepo C++ bindings, but could not identify their version. If you think Kea should support this version of sysrepo, please contact ISC.)])]
+ )]
)]
+ )],
+ [AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Count not integrate with Sysrepo C++ bindings. Make sure that the sysrepo-cpp/Session.hpp header and the libsysrepo-cpp.so library can be found.])]
)
CPPFLAGS=$CPPFLAGS_SAVED
LIBS=$LIBS_SAVED
# Note that Sysrepo is present in the config.h file
- AC_DEFINE([HAVE_SYSREPO], [1], [SYSREPO is present])
+ AC_DEFINE([HAVE_SYSREPO], [true], [SYSREPO is present])
fi
# ... and at the shell level, so Makefile.am can take action depending on this.
#!/bin/sh
-# Copyright (C) 2018-2020 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2018-2021 Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
echo " get repo path"
echo "libraries:"
echo " libsysrepo"
- echo " libSysrepo-cpp"
+ echo " libsysrepo-cpp"
exit 0
fi
echo "Incorrect number of parameters specified"
echo "run: \`$0 --help\` for more help"
exit 0
-elif [ "$2" != "libsysrepo" ] && [ "$2" != "libSysrepo-cpp" ]; then
+elif [ "$2" != "libsysrepo" ] && [ "$2" != "libsysrepo-cpp" ]; then
echo "library $2 not supported"
echo "run: \`$0 --help\` for more help"
exit 0
fi
if [ "$1" = "--cflags-only-I" ]; then
- echo "-I${SYSREPO_PATH}/include/"
+ echo "-I${LIBYANG_PATH}/include/ -I${SYSREPO_PATH}/include/"
exit 0
fi
if [ "$1" = "--libs" ]; then
- # Earlier versions also required -lprotobuf, but it is no longer needed.
- echo "-L${LIBYANG_PATH}/lib/ -L${SYSREPO_PATH}/lib/ -lsysrepo -lSysrepo-cpp -lyang -pthread -lpcre -lev -lavl -lprotobuf-c"
+ printf '%s' "-L${LIBYANG_PATH}/lib/ -L${SYSREPO_PATH}/lib/"
+
+ if [ "$2" = "libsysrepo" ]; then
+ printf '%s' ' -lyang -lsysrepo'
+ fi
+
+ if [ "$2" = "libsysrepo-cpp" ]; then
+ printf '%s' ' -lyang-cpp -lsysrepo-cpp'
+ fi
+
+ printf '\n'
exit 0
fi
if [ "$1" = "--modversion" ]; then
- VERSION=$(sysrepoctl -v | tr -s " " | cut -d " " -f 7)
- echo "${VERSION}"
+ "${SYSREPO_PATH}/bin/sysrepoctl" -V | grep -Eo 'libsysrepo v[0-9\.]*' | \
+ cut -d ' ' -f 2
exit 0
fi
if [ "$1" = "--variable=SR_REPOSITORY_LOC" ]; then
- echo "${SYSREPO_PATH}/build/repository"
+ "${SYSREPO_PATH}/bin/sysrepoctl" -l | head -n 1 | cut -d ':' -f 2- | \
+ cut -d ' ' -f 2-
exit 0
fi