diff --git a/Makefile.am b/Makefile.am index 021e9d5a..ca60326e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,68 +1,48 @@ MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure depcomp \ config.guess config.sub missing install-sh \ ltmain.sh compile config.h.in config.h.in~ \ autoscan.log configure.scan AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = libtap libknet tests +SUBDIRS = libtap libknet libvty tests if BUILD_DOCS SUBDIRS += docs endif -AM_CFLAGS = -I$(srcdir)/libtap -I$(srcdir)/libknet +AM_CFLAGS = \ + -I$(top_srcdir)/libtap \ + -I$(top_srcdir)/libknet \ + -I$(top_srcdir)/libvty dist_doc_DATA = \ COPYING.applications \ COPYING.libraries \ COPYRIGHT \ README.licence \ README \ TODO noinst_HEADERS = \ cfg.h \ netutils.h \ - utils.h \ - vty.h \ - vty_auth.h \ - vty_cli.h \ - vty_cli_cmds.h \ - vty_utils.h + utils.h sbin_PROGRAMS = kronosnetd kronosnetd_SOURCES = \ cfg.c \ main.c \ netutils.c \ - utils.c \ - vty.c \ - vty_auth.c \ - vty_cli.c \ - vty_cli_cmds.c \ - vty_utils.c + utils.c kronosnetd_LDADD = \ + $(top_builddir)/libvty/libvty.a \ $(top_builddir)/libknet/libknet.a \ $(top_builddir)/libtap/libtap.la -install-exec-local: - $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR) - $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/down.d - $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/post-down.d - $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/pre-up.d - $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/up.d - -uninstall-local: - rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/down.d || :; - rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/post-down.d || :; - rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/pre-up.d || :; - rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/up.d || :; - rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR) || :; - maintainer-clean-local: rm -rf m4 diff --git a/configure.ac b/configure.ac index 3c1c17b5..66fccce7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,265 +1,267 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) AC_INIT([kronosnetd], [0.1], [fabbione@kronosnet.org]) AM_INIT_AUTOMAKE([1.11.1 dist-bzip2 dist-xz color-tests -Wno-portability]) LT_PREREQ([2.2.6]) LT_INIT AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) AC_CANONICAL_HOST AC_PROG_LIBTOOL AC_LANG([C]) if test "$prefix" = "NONE"; then prefix="/usr" if test "$localstatedir" = "\${prefix}/var"; then localstatedir="/var" fi if test "$sysconfdir" = "\${prefix}/etc"; then sysconfdir="/etc" fi fi # Checks for programs. if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then AC_MSG_ERROR([you don't seem to have GNU make; it is required]) fi AC_PROG_CC AM_PROG_CC_C_O AC_PROG_LN_S AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_CXX AC_PROG_RANLIB AC_CHECK_PROGS([PUBLICAN], [publican], [:]) AC_CHECK_PROGS([PKGCONFIG], [pkg-config]) ## local helper functions # this function checks if CC support options passed as # args. Global CFLAGS are ignored during this test. cc_supports_flag() { local CFLAGS="$@" AC_MSG_CHECKING([whether $CC supports "$@"]) AC_COMPILE_IFELSE([int main(){return 0;}] , [RC=0; AC_MSG_RESULT([yes])], [RC=1; AC_MSG_RESULT([no])]) return $RC } # helper macro to check libs without adding them to LIBS check_lib_no_libs() { lib_no_libs_arg1=$1 shift lib_no_libs_arg2=$1 shift lib_no_libs_args=$@ AC_CHECK_LIB([$lib_no_libs_arg1], [$lib_no_libs_arg2],,, [$lib_no_libs_args]) LIBS=$ac_check_lib_save_LIBS } # Checks for C features AC_C_INLINE # Checks for libraries. AC_CHECK_LIB([pthread], [pthread_create]) AC_CHECK_LIB([rt], [clock_gettime]) # Checks for header files. AC_CHECK_HEADERS([fcntl.h]) AC_CHECK_HEADERS([stdlib.h]) AC_CHECK_HEADERS([string.h]) AC_CHECK_HEADERS([sys/ioctl.h]) AC_CHECK_HEADERS([syslog.h]) AC_CHECK_HEADERS([unistd.h]) AC_CHECK_HEADERS([netinet/in.h]) AC_CHECK_HEADERS([sys/socket.h]) AC_CHECK_HEADERS([arpa/inet.h]) AC_CHECK_HEADERS([netdb.h]) AC_CHECK_HEADERS([limits.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T AC_TYPE_PID_T AC_TYPE_SSIZE_T AC_TYPE_UINT8_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T # Checks for library functions. AC_FUNC_ALLOCA AC_FUNC_FORK AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([memset]) AC_CHECK_FUNCS([strdup]) AC_CHECK_FUNCS([strerror]) AC_CHECK_FUNCS([dup2]) AC_CHECK_FUNCS([select]) AC_CHECK_FUNCS([socket]) AC_CHECK_FUNCS([inet_ntoa]) AC_CHECK_FUNCS([memmove]) AC_CHECK_FUNCS([strchr]) AC_CHECK_FUNCS([atexit]) AC_CHECK_FUNCS([ftruncate]) AC_CHECK_FUNCS([strrchr]) AC_CHECK_FUNCS([strstr]) AC_CHECK_FUNCS([clock_gettime]) # PAM check AC_CHECK_HEADERS([security/pam_appl.h], [AC_CHECK_LIB([pam], [pam_start])], [AC_MSG_ERROR([Unable to find LinuxPAM devel files])]) AC_CHECK_HEADERS([security/pam_misc.h], [AC_CHECK_LIB([pam_misc], [misc_conv])], [AC_MSG_ERROR([Unable to find LinuxPAM MISC devel files])]) # local options AC_ARG_ENABLE([debug], [ --enable-debug enable debug build. ], [ default="no" ]) AC_ARG_ENABLE([publicandocs], [ --enable-publicandocs enable docs build. ], [ default="no" ]) AC_ARG_WITH([syslogfacility], [ --with-syslogfacility=FACILITY default syslog facility. ], [ SYSLOGFACILITY="$withval" ], [ SYSLOGFACILITY="LOG_LOCAL4" ]) AC_ARG_WITH([sysloglevel], [ --with-sysloglevel=LEVEL default syslog level. ], [ SYSLOGLEVEL="$withval" ], [ SYSLOGLEVEL="LOG_INFO" ]) AC_ARG_WITH([defaultadmgroup], [ --with-defaultadmgroup=GROUP define PAM group. Users part of this group will be allowed to configure kronosnet. Others will only receive read-only rights. ], [ DEFAULTADMGROUP="$withval" ], [ DEFAULTADMGROUP="kronosnetadm" ]) ## random vars LOGDIR=${localstatedir}/log/ RUNDIR=${localstatedir}/run/ DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet ## do subst AM_CONDITIONAL(BUILD_DOCS, test "x${enable_publicandocs}" = xyes) AC_SUBST([DEFAULT_CONFIG_DIR]) AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR], "$(eval echo ${DEFAULT_CONFIG_DIR})", [Default config directory]) AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE], "$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)", [Default config file]) AC_DEFINE_UNQUOTED([LOGDIR], "$(eval echo ${LOGDIR})", [Default logging directory]) AC_DEFINE_UNQUOTED([RUNDIR], "$(eval echo ${RUNDIR})", [Default run directory]) AC_DEFINE_UNQUOTED([SYSLOGFACILITY], "$(eval echo ${SYSLOGFACILITY})", [Default syslog facility]) AC_DEFINE_UNQUOTED([SYSLOGLEVEL], "$(eval echo ${SYSLOGLEVEL})", [Default syslog level]) AC_DEFINE_UNQUOTED([DEFAULTADMGROUP], "$(eval echo ${DEFAULTADMGROUP})", [Default admin group]) ## *FLAGS handling ENV_CFLAGS="$CFLAGS" ENV_CPPFLAGS="$CPPFLAGS" ENV_LDFLAGS="$LDFLAGS" # debug build stuff if test "x${enable_debug}" = xyes; then AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code]) OPT_CFLAGS="-O0" else OPT_CFLAGS="-O3" fi # gdb flags if test "x${GCC}" = xyes; then GDB_FLAGS="-ggdb3" else GDB_FLAGS="-g" fi # extra warnings EXTRA_WARNINGS="" WARNLIST=" all shadow missing-prototypes missing-declarations strict-prototypes declaration-after-statement pointer-arith write-strings cast-align bad-function-cast missing-format-attribute format=2 format-security format-nonliteral no-long-long unsigned-char gnu89-inline no-strict-aliasing error address cpp enum-compare overflow parentheses sequence-point switch uninitialized unused-but-set-variable unused-function unused-result unused-value unused-variable " for j in $WARNLIST; do if cc_supports_flag -W$j; then EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j"; fi done CFLAGS="$ENV_CFLAGS $OPT_CFLAGS $GDB_FLAGS \ $EXTRA_WARNINGS $WERROR_CFLAGS" CPPFLAGS="$ENV_CPPFLAGS" LDFLAGS="$ENV_LDFLAGS" AC_CONFIG_FILES([ Makefile libtap/Makefile libtap/libtap.pc libknet/Makefile libknet/libknet.pc + libvty/Makefile + libvty/libvty.pc docs/Makefile tests/Makefile ]) AC_OUTPUT diff --git a/libtap/Makefile.am b/libtap/Makefile.am index 153cfaed..df881372 100644 --- a/libtap/Makefile.am +++ b/libtap/Makefile.am @@ -1,37 +1,52 @@ MAINTAINERCLEANFILES = Makefile.in sources = libtap.c libversion = 0:0:0 AM_CFLAGS = -fPIC # override global LIBS that pulls in lots of craft we don't need here LIBS = -lpthread include_HEADERS = libtap.h noinst_HEADERS = libtap-private.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libtap.pc lib_LTLIBRARIES = libtap.la libtap_la_SOURCES = $(sources) libtap_la_LDFLAGS = -Wl,-version-script,libtap_exported_sym \ --export-dynamic \ -version-info $(libversion) TESTS = $(check_PROGRAMS) noinst_PROGRAMS = $(check_PROGRAMS) check_PROGRAMS = tap_test tap_test_SOURCES = $(sources) ../utils.c tap_test_CPPFLAGS = -DTEST \ -DABSBUILDDIR=\"$(abs_builddir)\" + +install-exec-local: + $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR) + $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/down.d + $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/post-down.d + $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/pre-up.d + $(INSTALL) -d $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/up.d + +uninstall-local: + rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/down.d || :; + rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/post-down.d || :; + rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/pre-up.d || :; + rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR)/up.d || :; + rmdir $(DESTDIR)/$(DEFAULT_CONFIG_DIR) || :; + diff --git a/libvty/Makefile.am b/libvty/Makefile.am new file mode 100644 index 00000000..2d6c5a75 --- /dev/null +++ b/libvty/Makefile.am @@ -0,0 +1,21 @@ +MAINTAINERCLEANFILES = Makefile.in + +AM_CFLAGS = \ + -I$(top_srcdir)/libtap \ + -I$(top_srcdir)/libknet + +noinst_HEADERS = \ + vty.h \ + vty_auth.h \ + vty_cli.h \ + vty_cli_cmds.h \ + vty_utils.h + +noinst_LIBRARIES = libvty.a + +libvty_a_SOURCES = \ + vty.c \ + vty_auth.c \ + vty_cli.c \ + vty_cli_cmds.c \ + vty_utils.c diff --git a/libvty/libvty.pc.in b/libvty/libvty.pc.in new file mode 100644 index 00000000..c4b69400 --- /dev/null +++ b/libvty/libvty.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=${prefix}/include + +Name: libvty +Version: @VERSION@ +Description: vty library +Requires: +Libs: -L${libdir} -lpthread +Cflags: -I${includedir} diff --git a/vty.c b/libvty/vty.c similarity index 100% rename from vty.c rename to libvty/vty.c diff --git a/vty.h b/libvty/vty.h similarity index 100% rename from vty.h rename to libvty/vty.h diff --git a/vty_auth.c b/libvty/vty_auth.c similarity index 100% rename from vty_auth.c rename to libvty/vty_auth.c diff --git a/vty_auth.h b/libvty/vty_auth.h similarity index 100% rename from vty_auth.h rename to libvty/vty_auth.h diff --git a/vty_cli.c b/libvty/vty_cli.c similarity index 100% rename from vty_cli.c rename to libvty/vty_cli.c diff --git a/vty_cli.h b/libvty/vty_cli.h similarity index 100% rename from vty_cli.h rename to libvty/vty_cli.h diff --git a/vty_cli_cmds.c b/libvty/vty_cli_cmds.c similarity index 100% rename from vty_cli_cmds.c rename to libvty/vty_cli_cmds.c diff --git a/vty_cli_cmds.h b/libvty/vty_cli_cmds.h similarity index 100% rename from vty_cli_cmds.h rename to libvty/vty_cli_cmds.h diff --git a/tests/vty_test.c b/libvty/vty_test.c similarity index 100% rename from tests/vty_test.c rename to libvty/vty_test.c diff --git a/vty_utils.c b/libvty/vty_utils.c similarity index 100% rename from vty_utils.c rename to libvty/vty_utils.c diff --git a/vty_utils.h b/libvty/vty_utils.h similarity index 100% rename from vty_utils.h rename to libvty/vty_utils.h diff --git a/tests/Makefile.am b/tests/Makefile.am index 6f292f0d..367213e7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,73 +1,61 @@ MAINTAINERCLEANFILES = Makefile.in VALGRIND = valgrind -q --error-exitcode=127 --track-fds=yes --leak-check=full HELGRIND = valgrind -v --tool=helgrind check-valgrind: $(check_PROGRAMS) $(MAKE) TESTS_ENVIRONMENT="$(VALGRIND)" check check-helgrind: $(check_PROGRAMS) $(MAKE) TESTS_ENVIRONMENT="$(HELGRIND)" check noinst_PROGRAMS = \ ping_test \ khandle_test \ lookup_bench \ $(check_PROGRAMS) check_PROGRAMS = \ - vty_test \ netutils_test \ listener_test \ utils_test TESTS = $(check_PROGRAMS) AM_CPPFLAGS = -DTEST \ -I$(srcdir)/../ \ -I$(srcdir)/../libtap/ \ -I$(srcdir)/../libknet/ AM_LDFLAGS = \ $(top_builddir)/libtap/libtap.la \ $(top_builddir)/libknet/libknet.a ping_test_SOURCES = \ ping_test.c \ ../netutils.c \ ../utils.c khandle_test_SOURCES = \ khandle_test.c \ ../netutils.c \ ../utils.c lookup_bench_SOURCES = \ lookup_bench.c \ ../netutils.c \ ../utils.c listener_test_SOURCES = \ listener_test.c \ ../netutils.c \ ../utils.c -vty_test_SOURCES = \ - vty_test.c \ - ../cfg.c \ - ../vty.c \ - ../vty_auth.c \ - ../vty_cli.c \ - ../vty_cli_cmds.c \ - ../vty_utils.c \ - ../netutils.c \ - ../utils.c - netutils_test_SOURCES = \ netutils_test.c \ ../netutils.c \ ../utils.c utils_test_SOURCES = \ utils_test.c \ ../utils.c