]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
add configure parameters for sysrepo
authorRazvan Becheriu <razvan.becheriu@qualitance.com>
Sun, 18 Mar 2018 11:20:20 +0000 (13:20 +0200)
committerTomek Mrugalski <tomasz@isc.org>
Tue, 21 Aug 2018 10:18:56 +0000 (12:18 +0200)
configure.ac
src/bin/Makefile.am
src/bin/netconf/Makefile.am
tools/sysrepo_config [new file with mode: 0755]
tools/sysrepo_config_defines.sh.sample [new file with mode: 0755]

index cfc5b3b9ff3558e700a07f81e872065b41f56df6..910831b7b7102a303cbb7b00b50c0a9a39cb2bb8 100644 (file)
@@ -861,6 +861,58 @@ fi
 # ... and at the shell level, so Makefile.am can take action depending on this.
 AM_CONDITIONAL(HAVE_CQL, test "$CQL_CONFIG" != "")
 
+sysrepo_config="no"
+AC_ARG_WITH([sysrepo],
+  AC_HELP_STRING([--with-sysrepo=PATH],
+    [path to the Sysrepo 'sysrepo_config' script]),
+    [sysrepo_config="$withval"])
+
+if test "${sysrepo_config}" = "yes" ; then
+    SYSREPO_CONFIG="$PKG_CONFIG"
+elif test "${sysrepo_config}" != "no" ; then
+    SYSREPO_CONFIG="${sysrepo_config}"
+fi
+
+if test "SYSREPO_CONFIG" != "" ; then
+    if test -d "$SYSREPO_CONFIG" -o ! -x "$SYSREPO_CONFIG" ; then
+        AC_MSG_ERROR([--with-sysrepo should point to a sysrepo_config program])
+    fi
+
+    SYSREPO_INCLUDEDIR=`$SYSREPO_CONFIG --cflags-only-I sysrepo`
+    SYSREPO_CPPFLAGS="`$SYSREPO_CONFIG --cflags-only-other sysrepo` $SYSREPO_INCLUDEDIR"
+    SYSREPO_LIBS="`$SYSREPO_CONFIG --libs sysrepo`"
+    SYSREPO_VERSION=`$SYSREPO_CONFIG --modversion sysrepo`
+
+    AC_SUBST(SYSREPO_CPPFLAGS)
+    AC_SUBST(SYSREPO_LIBS)
+
+    # Check that a simple program using CQL functions can compile and link.
+    CPPFLAGS_SAVED="$CPPFLAGS"
+    LIBS_SAVED="$LIBS"
+
+    CPPFLAGS="$SYSREPO_CPPFLAGS $CPPFLAGS"
+    LIBS="$SYSREPO_LIBS $LIBS"
+
+    AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM([#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])]
+    )
+    CPPFLAGS=$CPPFLAGS_SAVED
+    LIBS=$LIBS_SAVED
+
+    # Note that CQL is present in the config.h file
+    AC_DEFINE([HAVE_SYSREPO], [1], [SYSREPO is present])
+fi
+
+# ... and at the shell level, so Makefile.am can take action depending on this.
+AM_CONDITIONAL(HAVE_SYSREPO, test "$SYSREPO_CONFIG" != "")
+
 # Check for log4cplus
 DISTCHECK_LOG4CPLUS_CONFIGURE_FLAG=
 log4cplus_path="yes"
@@ -1703,6 +1755,22 @@ Cassandra CQL:
 END
 fi
 
+if test "$SYSREPO_CPPFLAGS" != "" ; then
+cat >> config.report << END
+
+Sysrepo:
+  SYSREPO_VERSION:     ${SYSREPO_VERSION}
+  SYSREPO_CPPFLAGS:    ${SYSREPO_CPPFLAGS}
+  SYSREPO_LIBS:        ${SYSREPO_LIBS}
+END
+else
+cat >> config.report << END
+
+Sysrepo:
+  no
+END
+fi
+
 if test "$enable_gtest" != "no"; then
 cat >> config.report << END
 
@@ -1715,6 +1783,7 @@ Google Test:
 END
 else
 cat >> config.report << END
+
 Google Test:
   no
 END
index 520169017291589d9685623076d9bde3b5a2d686..4f58d81903396b5dc55263b493873c80227866f3 100644 (file)
@@ -1,8 +1,12 @@
 # The following build order must be maintained.
-SUBDIRS = dhcp4 dhcp6 netconf d2 agent perfdhcp admin lfc keactrl
+SUBDIRS = dhcp4 dhcp6 d2 agent perfdhcp admin lfc keactrl
 
 if KEA_SHELL
 SUBDIRS += shell
 endif
 
+if HAVE_SYSREPO
+SUBDIRS += netconf
+endif
+
 check-recursive: all-recursive
index e75f6d3b847ac4c2dfc3bcc63ec4003c21451c1e..84189b3fb3543d34c093852bdcc5b40b305e5cbb 100644 (file)
@@ -4,7 +4,7 @@ SUBDIRS = . tests
 AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
 AM_CPPFLAGS += -I$(top_srcdir)/src/bin -I$(top_builddir)/src/bin
 AM_CPPFLAGS += -I$(top_srcdir)/src -I$(top_builddir)/src
-AM_CPPFLAGS += $(BOOST_INCLUDES) $(NETCONF_INCLUDES)
+AM_CPPFLAGS += $(BOOST_INCLUDES) $(SYSREPO_INCLUDES)
 
 AM_CXXFLAGS = $(KEA_CXXFLAGS)
 
@@ -46,12 +46,12 @@ BUILT_SOURCES = netconf_messages.h netconf_messages.cc
 
 noinst_LTLIBRARIES = libnetconf.la
 
-libnetconf_la_SOURCES  = 
-libnetconf_la_SOURCES += agent.cc agent.h
+libnetconf_la_SOURCES  = agent.cc agent.h
 libnetconf_la_SOURCES += translator.cc translator.h
 libnetconf_la_SOURCES += netconf_log.cc netconf_log.h
 
 nodist_libnetconf_la_SOURCES = netconf_messages.h netconf_messages.cc
+
 EXTRA_DIST += netconf_messages.mes
 
 sbin_PROGRAMS = kea-netconf
diff --git a/tools/sysrepo_config b/tools/sysrepo_config
new file mode 100755 (executable)
index 0000000..3e197f7
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+sysrepo_lib="sysrepo"
+
+if [ -z ${YANG_LIBRARY_PATH} ]
+then
+       YANG_LIBRARY_PATH=/
+fi
+
+if test `uname -s` = "Darwin"; then
+       DIR=$(stat -f %N $0 | xargs dirname)
+else
+       DIR=$(readlink -f $0 | xargs dirname)
+fi
+
+if ! [ -f ${DIR}/sysrepo_config_defines.sh ] || ! [ -x ${DIR}/sysrepo_config_defines.sh ]
+then
+       echo "missing path configuration file for Sysrepo (sysrepo_config_defines.sh)"
+       exit 0
+fi
+source ${DIR}/sysrepo_config_defines.sh
+
+if [ $# -ne 1 ] && [ $# -ne 2 ]
+then
+       echo "run: \`$0 --help\` for more help"
+       exit 0
+fi
+if [ $1 == "--help" ]
+then
+       echo "sysrepo_config 'option' ['library']"
+       echo "options:"
+       echo "--help"
+       echo "    print this help message"
+       echo "--cflags-only-other"
+       echo "    get cpp compilation flags"
+       echo "--cflags-only-I"
+       echo "    get include path"
+       echo "--libs"
+       echo "    get lib path"
+       echo "--modversion"
+       echo "    get version"
+       echo "libraries:"
+       echo "    sysrepo"
+       exit 0
+else if [ $# -ne 2 ]
+       then
+               echo "run: \`$0 --help\` for more help"
+               exit 0
+       else if [ $2 != "sysrepo" ]
+               then
+                       echo "library $2 not supported"
+                       echo "run: \`$0 --help\` for more help"
+                       exit 0
+               else
+                       sysrepo_lib=$2
+               fi
+       fi
+fi
+if [ $1 == "--cflags-only-other" ]
+then
+       exit 0
+fi
+if [ $1 == "--cflags-only-I" ]
+then
+       echo "-I${SYSREPO_PATH}/inc/"
+       exit 0
+fi
+if [ $1 == "--libs" ]
+then
+       echo "-L${SYSREPO_PATH}/build/src -L${SYSREPO_PATH}/build/swig -L$YANG_LIBRARY_PATH -lsysrepo -lyang -pthread -lpcre -lev -lprotobuf -lavl -lprotobuf-c"
+       exit 0
+fi
+if [ $1 == "--modversion" ]
+then
+       MAJOR="1"
+       MINOR="0"
+       PATCH="0"
+       echo "${MAJOR}.${MINOR}.${PATCH}"
+       exit 0
+fi
+echo "wrong parameter"
+echo "run: \`$0 --help\` for more help"
diff --git a/tools/sysrepo_config_defines.sh.sample b/tools/sysrepo_config_defines.sh.sample
new file mode 100755 (executable)
index 0000000..12cf55a
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# This auxiliary script is considered temporary in nature. It will not be
+# necessary once the DataStax cpp-driver project accepts proper cql_config
+# script.
+
+# This variable should point to the directory where sysrepo is compiled.
+# You can download sysrepo sources from https://github.com/sysrepo/sysrepo.git
+SYSREPO_PATH="/please/specify/path/to/sysrepo/in/sysrepo_config_defines.sh"
+export SYSREPO_PATH