From 587be9942894b786feb4adfae3bc78bdedef8e99 Mon Sep 17 00:00:00 2001 From: Eric Bollengier Date: Thu, 6 Oct 2022 14:59:47 +0200 Subject: [PATCH] Add --enable-check-dmsg option to ./configure --- bacula/autoconf/Make.common.in | 2 ++ bacula/autoconf/configure.in | 21 +++++++++++++++++++++ bacula/scripts/check_dmsg | 22 ++++++++++++++++++++++ bacula/src/cats/Makefile.in | 1 + bacula/src/console/Makefile.in | 1 + bacula/src/dird/Makefile.in | 1 + bacula/src/filed/Makefile.in | 1 + bacula/src/findlib/Makefile.in | 1 + bacula/src/lib/Makefile.in | 4 ++++ bacula/src/stored/Makefile.in | 3 ++- bacula/src/win32/Makefile | 1 + bacula/src/win32/Makefile.inc.in | 3 +++ bacula/src/win32/Makefile.rules | 2 ++ 13 files changed, 62 insertions(+), 1 deletion(-) create mode 100755 bacula/scripts/check_dmsg diff --git a/bacula/autoconf/Make.common.in b/bacula/autoconf/Make.common.in index 2dc68f6d8..c681f639d 100644 --- a/bacula/autoconf/Make.common.in +++ b/bacula/autoconf/Make.common.in @@ -59,6 +59,8 @@ GMAKE = @GMAKE@ RANLIB = @RANLIB@ MKDIR = @BUILD_DIR@/autoconf/mkinstalldirs INSTALL = @INSTALL@ +CHECK_DMSG = @CHECK_DMSG@ +DO_CHECK_DMSG = @DO_CHECK_DMSG@ # add the -s to the following in PRODUCTION mode INSTALL_PROGRAM = $(INSTALL) -m @SBINPERM@ INSTALL_PROGRAM_ALL = $(INSTALL) -m 755 diff --git a/bacula/autoconf/configure.in b/bacula/autoconf/configure.in index bb7530608..1952e3198 100644 --- a/bacula/autoconf/configure.in +++ b/bacula/autoconf/configure.in @@ -190,6 +190,27 @@ AC_SUBST(LOCAL_CFLAGS) AC_SUBST(LOCAL_LDFLAGS) AC_SUBST(LOCAL_DEFS) +dnl -------------------------------------------------- +do_check_dmsg=no +AC_ARG_ENABLE(check-dmsg, + AC_HELP_STRING([--enable-check-dmsg], [enable check for Dmsg(0) @<:@default=no@:>@]), + [ + if test x$enableval = xyes; then + do_check_dmsg=yes + fi + ] +) + +if test x$do_check_dmsg = xyes; then + DO_CHECK_DMSG= + CHECK_DMSG=$PWD/scripts/check_dmsg +else + DO_CHECK_DMSG=true + CHECK_DMSG=true +fi +AC_SUBST(DO_CHECK_DMSG) +AC_SUBST(CHECK_DMSG) + dnl -------------------------------------------------- dnl Libtool config dnl -------------------------------------------------- diff --git a/bacula/scripts/check_dmsg b/bacula/scripts/check_dmsg new file mode 100755 index 000000000..0ff3e24a2 --- /dev/null +++ b/bacula/scripts/check_dmsg @@ -0,0 +1,22 @@ +#!/usr/bin/perl -w +use strict; + +# Copyright (C) 2000-2022 Kern Sibbald +# License: BSD 2-Clause; see file LICENSE-FOSS + +# Written by Eric Bollengier +# Code analysis tool to detect incorrect debug levels + +# Usage: +# g++ -E -c -fno-strict-aliasing -fno-exceptions -fno-rtti -I. -I.. -g -O2 -Wall -fno-strict-aliasing -fno-exceptions -fno-rtti file.c | check_dmsg + +my $found=0; +while (my $line = <>) { + if ($line =~ /d_msg\("(.+?)\", (\d+), 0, "(.+?)",/) { + print "$1:$2\t[$3]\n"; + $found++; + } +} + +print "Found $found Dmsg(0) problems\n" if ($found); +exit ($found>0); diff --git a/bacula/src/cats/Makefile.in b/bacula/src/cats/Makefile.in index d9145cdce..44bec65ef 100644 --- a/bacula/src/cats/Makefile.in +++ b/bacula/src/cats/Makefile.in @@ -72,6 +72,7 @@ LIBBACCATS_LT_RELEASE = @LIBBACCATS_LT_RELEASE@ # inference rules .c.o: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< .c.lo: diff --git a/bacula/src/console/Makefile.in b/bacula/src/console/Makefile.in index 2c6432068..67f1b5ad6 100644 --- a/bacula/src/console/Makefile.in +++ b/bacula/src/console/Makefile.in @@ -41,6 +41,7 @@ CONS_LDFLAGS=@CONS_LDFLAGS@ # inference rules .c.o: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(CONS_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< #------------------------------------------------------------------------- all: Makefile bconsole @STATIC_CONS@ bbconsjson diff --git a/bacula/src/dird/Makefile.in b/bacula/src/dird/Makefile.in index dac30cd7f..5367962d3 100644 --- a/bacula/src/dird/Makefile.in +++ b/bacula/src/dird/Makefile.in @@ -61,6 +61,7 @@ EXTRAOBJS = @OBJLIST@ # inference rules .c.o: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< #------------------------------------------------------------------------- all: Makefile bacula-dir @STATIC_DIR@ bdirjson diff --git a/bacula/src/filed/Makefile.in b/bacula/src/filed/Makefile.in index 74dc29fe0..b2b0ed757 100644 --- a/bacula/src/filed/Makefile.in +++ b/bacula/src/filed/Makefile.in @@ -71,6 +71,7 @@ WIN32LIBS = $(@WIN32@) # inference rules .c.o: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(LZO_INC) $(ZSTD_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< #------------------------------------------------------------------------- all: Makefile @WIN32@ bacula-fd @STATIC_FD@ bfdjson diff --git a/bacula/src/findlib/Makefile.in b/bacula/src/findlib/Makefile.in index dea0e1020..49327555c 100644 --- a/bacula/src/findlib/Makefile.in +++ b/bacula/src/findlib/Makefile.in @@ -44,6 +44,7 @@ LIBBACFIND_LT_RELEASE = @LIBBACFIND_LT_RELEASE@ # inference rules .c.o: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< .c.lo: diff --git a/bacula/src/lib/Makefile.in b/bacula/src/lib/Makefile.in index 9c282b049..b9b832d7d 100644 --- a/bacula/src/lib/Makefile.in +++ b/bacula/src/lib/Makefile.in @@ -86,18 +86,22 @@ LIBBACFINDTARGET = ../findlib/libbacfind.la # inference rules .c.o: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< .c.lo: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< .cc.o: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< .cc.lo: @echo "Compiling $<" + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -E -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< | $(CHECK_DMSG) $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< # specific build rules diff --git a/bacula/src/stored/Makefile.in b/bacula/src/stored/Makefile.in index e0a5acc36..1a6ce2341 100644 --- a/bacula/src/stored/Makefile.in +++ b/bacula/src/stored/Makefile.in @@ -159,7 +159,8 @@ SD_LIBS = -lbacsd -lbaccfg -lbac -lbacfind # inference rules .c.o: @echo "Compiling $<" - $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< + $(NO_ECHO)$(DO_CHECK_DMSG) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -E $< | $(CHECK_DMSG) + $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(TOKYOCABINET_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< .c.lo: @echo "LT Compiling $<" diff --git a/bacula/src/win32/Makefile b/bacula/src/win32/Makefile index 65aa42a5d..0b6181ba6 100644 --- a/bacula/src/win32/Makefile +++ b/bacula/src/win32/Makefile @@ -187,6 +187,7 @@ Makefile.inc: -e "s^@WIN32INCDIR@^$${INCDIR}^" \ -e "s^@WIN32DLLDIR@^$${DLLDIR}^" < Makefile.inc.in > $@ @grep EXTRA ../../autoconf/Make.common >> $@ + @grep DMSG ../../autoconf/Make.common >> $@ # Used to build windows dependency in a docker container for example depkgs-win.tar.gz: External-mingw-w64 External-mingw32 build-depkgs-mingw32 build-depkgs-mingw-w64 diff --git a/bacula/src/win32/Makefile.inc.in b/bacula/src/win32/Makefile.inc.in index c754edc43..d89bc0f8a 100644 --- a/bacula/src/win32/Makefile.inc.in +++ b/bacula/src/win32/Makefile.inc.in @@ -40,6 +40,9 @@ MINGW_BIN := @WIN32BINDIR@ MINGW_INCLUDE := @WIN32INCDIR@ MINGW_DLLDIR := @WIN32DLLDIR@ +DO_CHECK_DMSG = @DO_CHECK_DMSG@ +CHECK_DMSG = @CHECK_DMSG@ + # Point only to GCC (CC is already used for g++...) # Used to compile libobk for windows (just need simple gcc) GCC = $(MINGW_BIN)$(MINGW_BASE)-gcc diff --git a/bacula/src/win32/Makefile.rules b/bacula/src/win32/Makefile.rules index a81fb82fa..6099e0dda 100644 --- a/bacula/src/win32/Makefile.rules +++ b/bacula/src/win32/Makefile.rules @@ -55,11 +55,13 @@ endef $(OBJDIR)/%.o: %.c @echo "Compiling $<" $(call checkdir, $@) + $(ECHO_CMD)$(DO_CHECK_DMSG) $(CXX) $(CFLAGS) -E $< | $(CHECK_DMSG) $(ECHO_CMD)$(CXX) $(CFLAGS) -c $< -o $@ $(OBJDIR)/%.o: %.cpp @echo "Compiling $<" $(call checkdir, $@) + $(ECHO_CMD)$(DO_CHECK_DMSG) $(CXX) $(CFLAGS) -E $< | $(CHECK_DMSG) $(ECHO_CMD)$(CXX) $(CFLAGS) -c $< -o $@ $(OBJDIR)/%.res: %.rc -- 2.47.3