summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/log/build/Jamfile.v2
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
commit483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch)
treee5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/log/build/Jamfile.v2
parentInitial commit. (diff)
downloadceph-upstream.tar.xz
ceph-upstream.zip
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/log/build/Jamfile.v2')
-rw-r--r--src/boost/libs/log/build/Jamfile.v2534
1 files changed, 534 insertions, 0 deletions
diff --git a/src/boost/libs/log/build/Jamfile.v2 b/src/boost/libs/log/build/Jamfile.v2
new file mode 100644
index 00000000..a172767a
--- /dev/null
+++ b/src/boost/libs/log/build/Jamfile.v2
@@ -0,0 +1,534 @@
+#
+# Copyright Andrey Semashev 2007 - 2016.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+
+import common ;
+import modules ;
+import os ;
+import path ;
+import project ;
+import feature ;
+import configure ;
+import log-architecture ;
+import log-platform-config ;
+using mc ;
+
+local here = [ modules.binding $(__name__) ] ;
+
+project.push-current [ project.current ] ;
+project.load [ path.join [ path.make $(here:D) ] ../config/message-compiler ] ;
+project.load [ path.join [ path.make $(here:D) ] ../config/x86-ext ] ;
+project.load [ path.join [ path.make $(here:D) ] ../config/pthread-mutex-robust ] ;
+project.load [ path.join [ path.make $(here:D) ] ../config/native-syslog ] ;
+project.load [ path.join [ path.make $(here:D) ] ../config/atomic-int32 ] ;
+project.pop-current ;
+
+# Windows libs
+lib psapi ;
+lib advapi32 ;
+lib secur32 ;
+lib ws2_32 ;
+lib mswsock ;
+
+# UNIX libs
+lib rt ;
+lib socket ;
+lib nsl ;
+lib ipv6 ;
+
+rule has-config-flag ( flag : properties * )
+{
+ if ( "<define>$(flag)" in $(properties) || "<define>$(flag)=1" in $(properties) )
+ {
+ return 1 ;
+ }
+ else
+ {
+ return ;
+ }
+}
+
+rule check-instruction-set ( properties * )
+{
+ local result ;
+ local instruction_set = [ feature.get-values "log-instruction-set" : [ log-architecture.deduce-instruction-set $(properties) ] ] ;
+
+ if $(instruction_set) = i386 || $(instruction_set) = i486
+ {
+ if ! $(.annouced-failure)
+ {
+ ECHO Boost.Log is not supported on the specified target CPU and will not be built. At least i586 class CPU is required. ;
+ .annouced-failure = 1 ;
+ }
+ result = <build>no ;
+ }
+
+ return $(result) ;
+}
+
+rule select-regex-backend ( properties * )
+{
+ local result = ;
+
+ # Use Boost.Regex backend by default. It produces smaller executables and also has the best performance for small string matching.
+ if ! (
+ [ has-config-flag BOOST_LOG_WITHOUT_SETTINGS_PARSERS : $(properties) ] ||
+ [ has-config-flag BOOST_LOG_WITHOUT_DEFAULT_FACTORIES : $(properties) ] ||
+ [ has-config-flag BOOST_LOG_USE_STD_REGEX : $(properties) ] ||
+ [ has-config-flag BOOST_LOG_USE_BOOST_XPRESSIVE : $(properties) ] )
+ {
+ result = <library>/boost/regex//boost_regex ;
+ }
+
+ return $(result) ;
+}
+
+rule check-pthread-mutex-robust ( properties * )
+{
+ local result = ;
+
+ local has_pthread_mutex_robust = [ configure.builds /boost/log/pthread-mutex-robust//pthread_mutex_robust : $(properties) : pthread-supports-robust-mutexes ] ;
+ if $(has_pthread_mutex_robust)
+ {
+ result = <define>BOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST ;
+ }
+
+ return $(result) ;
+}
+
+rule check-atomic-int32 ( properties * )
+{
+ local result = ;
+
+ local has_atomic_int32 = [ configure.builds /boost/log/atomic-int32//atomic_int32 : $(properties) : native-atomic-int32-supported ] ;
+ if ! $(has_atomic_int32)
+ {
+ result = <define>BOOST_LOG_WITHOUT_IPC ;
+ }
+
+ return $(result) ;
+}
+
+rule check-native-syslog ( properties * )
+{
+ local result = ;
+
+ if ! [ has-config-flag BOOST_LOG_WITHOUT_SYSLOG : $(properties) ]
+ {
+ local has_native_syslog = [ configure.builds /boost/log/native-syslog//native_syslog : $(properties) : native-syslog-supported ] ;
+ if $(has_native_syslog)
+ {
+ result = <define>BOOST_LOG_USE_NATIVE_SYSLOG ;
+ }
+ }
+
+ return $(result) ;
+}
+
+rule check-message-compiler ( properties * )
+{
+ local result ;
+
+ if <target-os>windows in $(properties)
+ {
+ if ! [ has-config-flag BOOST_LOG_WITHOUT_EVENT_LOG : $(properties) ]
+ {
+ local has_mc = [ configure.builds /boost/log/message-compiler//test-availability : $(properties) : message-compiler ] ;
+ if ! $(has_mc)
+ {
+ result = <define>BOOST_LOG_WITHOUT_EVENT_LOG ;
+ }
+ }
+ else
+ {
+ # This branch is needed to fix building with MinGW
+ result = <define>BOOST_LOG_WITHOUT_EVENT_LOG ;
+ }
+ }
+ else
+ {
+ result = <define>BOOST_LOG_WITHOUT_EVENT_LOG ;
+ }
+
+ return $(result) ;
+}
+
+project boost/log
+ : source-location ../src
+ : requirements
+ <conditional>@check-instruction-set
+ <conditional>@check-atomic-int32
+ <conditional>@select-regex-backend
+ <conditional>@check-pthread-mutex-robust
+ <conditional>@check-native-syslog
+ <conditional>@check-message-compiler
+ <conditional>@log-platform-config.set-platform-defines
+
+ <include>../src
+
+ <define>__STDC_CONSTANT_MACROS # Use system-defined macros for integer constants, if possible
+ <define>BOOST_SPIRIT_USE_PHOENIX_V3=1
+ <define>BOOST_THREAD_DONT_USE_CHRONO=1 # Don't introduce false dependency on Boost.Chrono
+
+ # Disable warnings about using 'insecure' standard C functions
+ <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
+ <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
+ <toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS
+ <toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
+ <toolset>intel-win:<define>_SCL_SECURE_NO_WARNINGS
+ <toolset>intel-win:<define>_SCL_SECURE_NO_DEPRECATE
+ <toolset>intel-win:<define>_CRT_SECURE_NO_WARNINGS
+ <toolset>intel-win:<define>_CRT_SECURE_NO_DEPRECATE
+
+ <toolset>msvc:<cxxflags>/bigobj
+ <toolset>msvc:<cxxflags>/wd4503 # decorated name length exceeded, name was truncated
+ <toolset>msvc:<cxxflags>/wd4456 # declaration of 'A' hides previous local declaration
+ <toolset>msvc:<cxxflags>/wd4459 # declaration of 'A' hides global declaration
+ <toolset>msvc:<cxxflags>/wd4003 # not enough actual parameters for macro 'X' - caused by BOOST_PP_IS_EMPTY and BOOST_PP_IS_BEGIN_PARENS which are used by Fusion
+
+ # Disable Intel warnings:
+ # warning #177: function "X" was declared but never referenced
+ # warning #780: using-declaration ignored -- it refers to the current namespace
+ # warning #2196: routine is both "inline" and "noinline"
+ # remark #1782: #pragma once is obsolete. Use #ifndef guard instead.
+ # remark #193: zero used for undefined preprocessing identifier "X"
+ # remark #304: access control not specified ("public" by default)
+ # remark #981: operands are evaluated in unspecified order
+ # remark #1418: external function definition with no prior declaration
+ # Mostly comes from Boost.Phoenix: warning #411: class "X" defines no constructor to initialize the following: reference member "Y"...
+ # warning #734: "X" (declared at line N of "file.hpp"), required for copy that was eliminated, is inaccessible
+ # warning #279: controlling expression is constant
+ <toolset>intel-win:<cxxflags>"/Qwd177,780,2196,1782,193,304,981,1418,411,734,279"
+ <toolset>intel-linux:<cxxflags>"-wd177,780,2196,1782,193,304,981,1418,411,734,279"
+ <toolset>intel-darwin:<cxxflags>"-wd177,780,2196,1782,193,304,981,1418,411,734,279"
+
+ <toolset>darwin:<cxxflags>-ftemplate-depth-1024
+ <toolset>clang:<cxxflags>-ftemplate-depth-1024
+ <toolset>gcc:<cxxflags>-ftemplate-depth-1024
+
+ <toolset>gcc:<cxxflags>-fno-strict-aliasing # avoids strict aliasing violations in other Boost components
+ <toolset>gcc,<target-os>windows:<linkflags>-Wl,--enable-auto-import
+ <toolset>gcc,<target-os>cygwin:<linkflags>-Wl,--enable-auto-import
+
+ <library>/boost/date_time//boost_date_time
+ <library>/boost/filesystem//boost_filesystem
+ <threading>single:<define>BOOST_LOG_NO_THREADS
+ <threading>multi:<library>/boost/atomic//boost_atomic
+ <threading>multi:<library>/boost/thread//boost_thread
+
+ <target-os>windows:<library>ws2_32
+ <target-os>windows:<library>mswsock
+ <target-os>windows:<library>advapi32
+
+ <target-os>cygwin:<library>ws2_32
+ <target-os>cygwin:<library>mswsock
+ <target-os>cygwin:<library>advapi32
+ # Boost.Interprocess does not compile on Cygwin: https://github.com/boostorg/interprocess/issues/76
+ <target-os>cygwin:<define>BOOST_LOG_WITHOUT_IPC
+
+ <target-os>linux:<library>rt
+
+ <target-os>solaris:<library>socket
+ <target-os>solaris:<library>nsl
+
+ <target-os>hpux:<library>ipv6
+
+ <target-os>freebsd:<library>rt
+ <target-os>qnxnto:<library>socket
+ <toolset>pgi:<library>rt
+ : usage-requirements
+ <toolset>clang:<cxxflags>-Wno-bind-to-temporary-copy
+ <toolset>clang:<cxxflags>-Wno-unused-function
+ ;
+
+local BOOST_LOG_COMMON_SRC =
+ attribute_name.cpp
+ attribute_set.cpp
+ attribute_value_set.cpp
+ code_conversion.cpp
+ core.cpp
+ record_ostream.cpp
+ severity_level.cpp
+ global_logger_storage.cpp
+ named_scope.cpp
+ process_name.cpp
+ process_id.cpp
+ thread_id.cpp
+ timer.cpp
+ exceptions.cpp
+ default_attribute_names.cpp
+ default_sink.cpp
+ text_ostream_backend.cpp
+ text_file_backend.cpp
+ text_multifile_backend.cpp
+ thread_specific.cpp
+ once_block.cpp
+ timestamp.cpp
+ threadsafe_queue.cpp
+ event.cpp
+ trivial.cpp
+ spirit_encoding.cpp
+ format_parser.cpp
+ date_time_format_parser.cpp
+ named_scope_format_parser.cpp
+ permissions.cpp
+ dump.cpp
+ ;
+
+BOOST_LOG_COMMON_SSSE3_SRC =
+ dump_ssse3
+ ;
+
+BOOST_LOG_COMMON_AVX2_SRC =
+ dump_avx2
+ ;
+
+rule ssse3-targets-cond ( properties * )
+{
+ local result = <build>no ;
+
+ if <log-architecture>x86 in [ log-architecture.deduce-architecture $(properties) ]
+ {
+ local has_ssse3 = [ configure.builds /boost/log/x86-extensions//ssse3 : $(properties) : compiler-supports-ssse3 ] ;
+ if $(has_ssse3)
+ {
+ result = ;
+ if <toolset>gcc in $(properties) || <toolset>clang in $(properties)
+ {
+ result = <cxxflags>"-msse -msse2 -msse3 -mssse3" ;
+ }
+ else if <toolset>intel in $(properties)
+ {
+ if <toolset-intel:platform>win in $(properties)
+ {
+ result = <cxxflags>"/QxSSSE3" ;
+ }
+ else
+ {
+ result = <cxxflags>"-xSSSE3" ;
+ }
+ }
+ else if <toolset>msvc in $(properties)
+ {
+ # MSVC doesn't really care about these switches, all SSE intrinsics are always available, but still...
+ # Also 64 bit MSVC doesn't have the /arch:SSE2 switch as it is the default.
+ if <log-address-model>32 in [ log-architecture.deduce-address-model $(properties) ]
+ {
+ result = <cxxflags>"/arch:SSE2" ;
+ }
+ }
+ }
+ }
+
+# if ! <build>no in $(result)
+# {
+# ECHO Boost.Log: Using SSSE3 optimized implementation ;
+# }
+# ECHO $(result) ;
+
+ return $(result) ;
+}
+
+for local src in $(BOOST_LOG_COMMON_SSSE3_SRC)
+{
+ obj $(src)
+ : ## sources ##
+ $(src).cpp
+ : ## requirements ##
+ <conditional>@ssse3-targets-cond
+ <link>shared:<define>BOOST_LOG_DLL
+ <define>BOOST_LOG_BUILDING_THE_LIB=1
+ : ## default-build ##
+ : ## usage-requirements ##
+ <define>BOOST_LOG_USE_SSSE3
+ ;
+
+ explicit $(src) ;
+}
+
+rule avx2-targets-cond ( properties * )
+{
+ local result = <build>no ;
+
+ if <log-architecture>x86 in [ log-architecture.deduce-architecture $(properties) ]
+ {
+ local has_avx2 = [ configure.builds /boost/log/x86-extensions//avx2 : $(properties) : compiler-supports-avx2 ] ;
+ if $(has_avx2)
+ {
+ result = ;
+ if <toolset>gcc in $(properties)
+ {
+ result = <cxxflags>"-mavx -mavx2 -fabi-version=0" ;
+ }
+ else if <toolset>clang in $(properties)
+ {
+ result = <cxxflags>"-mavx -mavx2" ;
+ }
+ else if <toolset>intel in $(properties)
+ {
+ if <toolset-intel:platform>win in $(properties)
+ {
+ result = <cxxflags>"/arch:CORE-AVX2" ;
+ }
+ else
+ {
+ result = <cxxflags>"-xCORE-AVX2 -fabi-version=0" ;
+ }
+ }
+ else if <toolset>msvc in $(properties)
+ {
+ result = <cxxflags>"/arch:AVX" ;
+ }
+ }
+ }
+
+# if ! <build>no in $(result)
+# {
+# ECHO Boost.Log: Using AVX2 optimized implementation ;
+# }
+# ECHO $(result) ;
+
+ return $(result) ;
+}
+
+for local src in $(BOOST_LOG_COMMON_AVX2_SRC)
+{
+ obj $(src)
+ : ## sources ##
+ $(src).cpp
+ : ## requirements ##
+ <conditional>@avx2-targets-cond
+ <link>shared:<define>BOOST_LOG_DLL
+ <define>BOOST_LOG_BUILDING_THE_LIB=1
+ : ## default-build ##
+ : ## usage-requirements ##
+ <define>BOOST_LOG_USE_AVX2
+ ;
+
+ explicit $(src) ;
+}
+
+rule select-arch-specific-sources ( properties * )
+{
+ local result ;
+
+ if <log-architecture>x86 in [ log-architecture.deduce-architecture $(properties) ]
+ {
+ local has_ssse3 = [ configure.builds /boost/log/x86-extensions//ssse3 : $(properties) : compiler-supports-ssse3 ] ;
+ if $(has_ssse3)
+ {
+ result += <define>BOOST_LOG_USE_SSSE3 ;
+ result += <source>$(BOOST_LOG_COMMON_SSSE3_SRC) ;
+ }
+
+ local has_avx2 = [ configure.builds /boost/log/x86-extensions//avx2 : $(properties) : compiler-supports-avx2 ] ;
+ if $(has_avx2)
+ {
+ result += <define>BOOST_LOG_USE_AVX2 ;
+ result += <source>$(BOOST_LOG_COMMON_AVX2_SRC) ;
+ }
+ }
+
+# ECHO Arch sources: $(result) ;
+
+ return $(result) ;
+}
+
+rule select-platform-specific-sources ( properties * )
+{
+ local result ;
+
+ if <target-os>windows in $(properties)
+ {
+ result += <source>windows/light_rw_mutex.cpp ;
+
+ if ! [ has-config-flag BOOST_LOG_WITHOUT_IPC : $(properties) ]
+ {
+ result += <source>windows/object_name.cpp ;
+ result += <source>windows/mapped_shared_memory.cpp ;
+ result += <source>windows/ipc_sync_wrappers.cpp ;
+ result += <source>windows/ipc_reliable_message_queue.cpp ;
+ result += <library>secur32 ;
+ }
+
+ if ! [ has-config-flag BOOST_LOG_WITHOUT_DEBUG_OUTPUT : $(properties) ]
+ {
+ result += <source>windows/debug_output_backend.cpp ;
+ }
+
+ if ! [ has-config-flag BOOST_LOG_WITHOUT_EVENT_LOG : $(properties) ]
+ {
+ result += <source>windows/simple_event_log.mc ;
+ result += <source>windows/event_log_backend.cpp ;
+ result += <library>psapi ;
+
+ DEPENDS windows/event_log_backend.cpp : windows/simple_event_log.mc ;
+ }
+ }
+ else
+ {
+ result += <define>BOOST_LOG_WITHOUT_EVENT_LOG ;
+ result += <define>BOOST_LOG_WITHOUT_DEBUG_OUTPUT ;
+
+ if ! [ has-config-flag BOOST_LOG_WITHOUT_IPC : $(properties) ]
+ {
+ result += <source>posix/object_name.cpp ;
+ result += <source>posix/ipc_reliable_message_queue.cpp ;
+ }
+ }
+
+ if ! [ has-config-flag BOOST_LOG_WITHOUT_SYSLOG : $(properties) ]
+ {
+ result += <source>syslog_backend.cpp ;
+ }
+
+# ECHO Platform sources: $(result) ;
+
+ return $(result) ;
+}
+
+lib boost_log
+ : ## sources ##
+ $(BOOST_LOG_COMMON_SRC)
+ : ## requirements ##
+ <conditional>@select-arch-specific-sources
+ <conditional>@select-platform-specific-sources
+ <link>shared:<define>BOOST_LOG_DLL
+ <define>BOOST_LOG_BUILDING_THE_LIB=1
+ : ## default-build ##
+ : ## usage-requirements ##
+ <link>shared:<define>BOOST_LOG_DYN_LINK=1
+ <threading>single:<define>BOOST_LOG_NO_THREADS
+ ;
+
+
+local BOOST_LOG_SETUP_COMMON_SRC =
+ parser_utils.cpp
+ init_from_stream.cpp
+ init_from_settings.cpp
+ settings_parser.cpp
+ filter_parser.cpp
+ formatter_parser.cpp
+ default_filter_factory.cpp
+ matches_relation_factory.cpp
+ default_formatter_factory.cpp
+ ;
+
+lib boost_log_setup
+ : ## sources ##
+ setup/$(BOOST_LOG_SETUP_COMMON_SRC)
+ : ## requirements ##
+ <link>shared:<define>BOOST_LOG_DYN_LINK=1
+ <link>shared:<define>BOOST_LOG_SETUP_DLL
+ <define>BOOST_LOG_SETUP_BUILDING_THE_LIB=1
+ <library>boost_log
+ : ## default-build ##
+ : ## usage-requirements ##
+ <link>shared:<define>BOOST_LOG_SETUP_DYN_LINK=1
+ <threading>single:<define>BOOST_LOG_NO_THREADS
+ ;
+
+boost-install boost_log boost_log_setup ;