pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/41849?usp=email )
Change subject: Add --disable-syslog-logging configure option ......................................................................
Add --disable-syslog-logging configure option
Right now syslog logging support is built in automatically based on syslog.h being built at compile time. That's not desirable; as with other dependencies make sure there's an explicit configure option for it. Leave it enabled by default since most systems come with syslog.h and it's a feature nice to have by default. It is disabled explicitly when compiling for arm-none-eabi since the toolchain doesn't have syslog.h.
Take the chance to completelly skip compiling the logging_syslog.c file if support for syslog logging is disabled.
Change-Id: Ifc54d60e24547696b3059b6eb75572f8c84874d0 --- M configure.ac M contrib/jenkins_arm.sh M src/core/Makefile.am M src/core/logging.c M src/core/logging_syslog.c M src/vty/logging_vty.c 6 files changed, 29 insertions(+), 13 deletions(-)
Approvals: Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve fixeria: Looks good to me, approved
diff --git a/configure.ac b/configure.ac index 6a5f0c0..aa3e251 100644 --- a/configure.ac +++ b/configure.ac @@ -74,7 +74,7 @@
dnl checks for header files AC_HEADER_STDC -AC_CHECK_HEADERS(execinfo.h poll.h sys/select.h sys/socket.h sys/signalfd.h sys/eventfd.h sys/timerfd.h syslog.h ctype.h netinet/tcp.h netinet/in.h) +AC_CHECK_HEADERS(execinfo.h poll.h sys/select.h sys/socket.h sys/signalfd.h sys/eventfd.h sys/timerfd.h ctype.h netinet/tcp.h netinet/in.h) AC_CHECK_DECL(HAVE_SYS_SOCKET_H, AC_SUBST(HAVE_SYS_SOCKET_H, 1), AC_SUBST(HAVE_SYS_SOCKET_H, 0)) # for src/conv.c AC_FUNC_ALLOCA @@ -242,6 +242,21 @@ AC_DEFINE([USE_GNUTLS], [1], [Use GnuTLS as a fallback for missing getrandom()]) fi
+AC_ARG_ENABLE([syslog_logging], + [AS_HELP_STRING( + [--disable-syslog-logging], + [Build without syslog logging support] + )], + [syslog_logging=$enableval], [syslog_logging="yes"]) +AS_IF([test "x$syslog_logging" = "xyes"], [ + AC_CHECK_HEADER([syslog.h], [SYSLOG_H_FOUND='yes'], + [SYSLOG_H_FOUND='no'; + AC_MSG_ERROR([syslog logging support needs syslog.h header])]) + AC_DEFINE([ENABLE_SYSLOG_LOGGING], [1], [Enable syslog logging target]) +]) +AM_CONDITIONAL(ENABLE_SYSLOG_LOGGING, test "x$syslog_logging" = "xyes") +AC_SUBST(ENABLE_SYSLOG_LOGGING) + AC_ARG_ENABLE([systemd_logging], [AS_HELP_STRING( [--enable-systemd-logging], @@ -423,6 +438,7 @@ AM_CONDITIONAL(ENABLE_URING, false) AM_CONDITIONAL(ENABLE_PSEUDOTALLOC, true) AM_CONDITIONAL(ENABLE_SERCOM_STUB, true) + AM_CONDITIONAL(ENABLE_SYSLOG_LOGGING, false) AM_CONDITIONAL(EMBEDDED, true) AC_DEFINE([USE_GNUTLS], [0]) AC_DEFINE([PANIC_INFLOOP],[1],[Use infinite loop on panic rather than fprintf/abort]) diff --git a/contrib/jenkins_arm.sh b/contrib/jenkins_arm.sh index 8793415..a65bb67 100755 --- a/contrib/jenkins_arm.sh +++ b/contrib/jenkins_arm.sh @@ -21,6 +21,7 @@ --disable-libsctp \ --disable-libusb \ --disable-libmnl \ + --disable-syslog-logging \ CFLAGS="-Os -ffunction-sections -fdata-sections -nostartfiles -nodefaultlibs $WERROR_FLAGS"
$MAKE $PARALLEL_MAKE diff --git a/src/core/Makefile.am b/src/core/Makefile.am index 0b756da..f2cf138 100644 --- a/src/core/Makefile.am +++ b/src/core/Makefile.am @@ -44,7 +44,6 @@ isdnhdlc.c \ it_q.c \ logging.c \ - logging_syslog.c \ logging_gsmtap.c \ loggingrb.c \ macaddr.c \ @@ -137,6 +136,10 @@ libosmocore_la_SOURCES += serial.c endif
+if ENABLE_SYSLOG_LOGGING +libosmocore_la_SOURCES += logging_syslog.c +endif + if ENABLE_SYSTEMD_LOGGING libosmocore_la_SOURCES += logging_systemd.c libosmocore_la_LIBADD += $(SYSTEMD_LIBS) diff --git a/src/core/logging.c b/src/core/logging.c index cccfd93..9e5ae9f 100644 --- a/src/core/logging.c +++ b/src/core/logging.c @@ -37,7 +37,7 @@ #include <strings.h> #endif
-#ifdef HAVE_SYSLOG_H +#ifdef ENABLE_SYSLOG_LOGGING #include <syslog.h> #endif
@@ -1429,11 +1429,11 @@ case LOG_TGT_TYPE_GSMTAP: gsmtap_source_free(target->tgt_gsmtap.gsmtap_inst); break; -#ifdef HAVE_SYSLOG_H +#ifdef ENABLE_SYSLOG_LOGGING case LOG_TGT_TYPE_SYSLOG: closelog(); break; -#endif /* HAVE_SYSLOG_H */ +#endif /* ENABLE_SYSLOG_LOGGING */ default: /* make GCC happy */ break; diff --git a/src/core/logging_syslog.c b/src/core/logging_syslog.c index 1153bdf..eb84057 100644 --- a/src/core/logging_syslog.c +++ b/src/core/logging_syslog.c @@ -24,8 +24,6 @@
#include "config.h"
-#ifdef HAVE_SYSLOG_H - #include <stdarg.h> #include <stdlib.h> #include <stdio.h> @@ -84,6 +82,4 @@ return target; }
-#endif /* HAVE_SYSLOG_H */ - /* @} */ diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c index 128b23a..6fd7abc 100644 --- a/src/vty/logging_vty.c +++ b/src/vty/logging_vty.c @@ -644,7 +644,7 @@ 1 };
-#ifdef HAVE_SYSLOG_H +#ifdef ENABLE_SYSLOG_LOGGING
#include <syslog.h>
@@ -751,7 +751,7 @@
RET_WITH_UNLOCK(CMD_SUCCESS); } -#endif /* HAVE_SYSLOG_H */ +#endif /* ENABLE_SYSLOG_LOGGING */
DEFUN(cfg_log_systemd_journal, cfg_log_systemd_journal_cmd, "log systemd-journal [raw]", @@ -1049,7 +1049,7 @@ vty_out(vty, "log stderr blocking-io%s", VTY_NEWLINE); break; case LOG_TGT_TYPE_SYSLOG: -#ifdef HAVE_SYSLOG_H +#ifdef ENABLE_SYSLOG_LOGGING vty_out(vty, "log syslog %s%s", get_value_string(sysl_level_names, tgt->tgt_syslog.facility), @@ -1302,7 +1302,7 @@ install_lib_element(CONFIG_NODE, &cfg_no_log_file_cmd); install_lib_element(CONFIG_NODE, &cfg_log_alarms_cmd); install_lib_element(CONFIG_NODE, &cfg_no_log_alarms_cmd); -#ifdef HAVE_SYSLOG_H +#ifdef ENABLE_SYSLOG_LOGGING install_lib_element(CONFIG_NODE, &cfg_log_syslog_cmd); install_lib_element(CONFIG_NODE, &cfg_log_syslog_local_cmd); install_lib_element(CONFIG_NODE, &cfg_no_log_syslog_cmd);