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
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 --------------------------------------------------
--- /dev/null
+#!/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);
# 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:
# 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
# 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
# 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
# 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:
# 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
# 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 $<"
-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
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
$(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