]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#625,!485] Conditional explicit initialization done.
authorTomek Mrugalski <tomasz@isc.org>
Thu, 15 Aug 2019 16:50:57 +0000 (18:50 +0200)
committerTomek Mrugalski <tomek@isc.org>
Thu, 15 Aug 2019 20:27:36 +0000 (16:27 -0400)
configure.ac
src/lib/log/logger_manager.cc

index 9b78585611d11e2e4492ea343ac65a70f7ca6d85..0a15f6c48fa1bc64c1772d1fc150476e76b599bf 100644 (file)
@@ -1030,6 +1030,15 @@ AC_MSG_RESULT([$LOG4CPLUS_VERSION])
 CPPFLAGS=$CPPFLAGS_SAVED
 LIBS=$LIBS_SAVED
 
+AC_MSG_CHECKING([log4cplus explicit initialization (log4cplus/initializer.h)])
+AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM([#include <log4cplus/initializer.h>],
+                         [log4cplus::Initializer initializer;]
+                         )],
+        [AC_MSG_RESULT([yes])
+         AC_DEFINE(LOG4CPLUS_INITIALIZER_H, [1], [Explicit initialization of log4cplus possible])],
+        [AC_MSG_RESULT(no)])
+
 #
 # Configure Boost header path
 #
index 23db9faf16a5bf7fcbe7f171d1d58be1bb6bcd50..617acc7f88cdf2d64f66b3158b0295de7c52f5dc 100644 (file)
 #include <log/message_types.h>
 #include <log/interprocess/interprocess_sync_null.h>
 
-#include <log4cplus/initializer.h>
-
 using namespace std;
 
+// Older log4cplus versions (1.2.0) don't have the initializer.h header that
+// would allow explicit initialization. Newer versions (2.0.4 for sure, possibly
+// older as well) have it and it's recommended to use it. We detect whether
+// it's present or not and do explicit initalization if possible.
+#ifdef LOG4CPLUS_INITIALIZER_H
+#include <log4cplus/initializer.h>
 namespace {
-
 log4cplus::Initializer initializer;
+}
+#endif
+
+namespace {
 
 // Logger used for logging messages within the logging code itself.
 isc::log::Logger logger("log");