diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/boost/libs/thread/build | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/thread/build')
-rw-r--r-- | src/boost/libs/thread/build/Jamfile.v2 | 319 | ||||
-rw-r--r-- | src/boost/libs/thread/build/has_atomic_flag_lockfree_test.cpp | 13 |
2 files changed, 332 insertions, 0 deletions
diff --git a/src/boost/libs/thread/build/Jamfile.v2 b/src/boost/libs/thread/build/Jamfile.v2 new file mode 100644 index 000000000..1a88d0102 --- /dev/null +++ b/src/boost/libs/thread/build/Jamfile.v2 @@ -0,0 +1,319 @@ +# $Id$ +# Copyright 2006-2007 Roland Schwarz. +# Copyright 2007 Anthony Williams +# Copyright 2011-2012 Vicente J.Botet Escriba. +# 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) + +######################################################################### +# The boost threading library can be built on top of different API's +# Currently this is the win32 API and the pthreads API. +# Pthread is native on unix variants. +# To get pthread on windows you need the pthread win32 library +# http://sourceware.org/pthreads-win32 which is available under LGPL. +# +# You need to provide the include path and lib path in the variables +# PTW32_INCLUDE and PTW32_LIB respectively. You can specify these +# paths in site-config.jam, user-config.jam or in the environment. +# A new feature is provided to request a specific API: +# <threadapi>win32 and <threadapi>pthread. +# +# The naming of the resulting libraries is mostly the same for the +# variant native to the build platform, i.e. +# boost_thread and the boost specific tagging. +# For the library variant that is not native on the build platform +# an additional tag is applied: +# boost_thread_pthread for the pthread variant on windows, and +# boost_thread_win32 for the win32 variant (likely when built on cygwin). +# +# To request the pthread variant on windows, from boost root you would +# say e.g: +# bjam msvc-8.0 --with-thread install threadapi=pthread +######################################################################### + +import os ; +import indirect ; +import path ; +import configure ; +import threadapi-feature ; + +exe has_atomic_flag_lockfree : ../build/has_atomic_flag_lockfree_test.cpp ; + +project boost/thread + : source-location ../src + : requirements <threading>multi + #<link>static:<define>BOOST_THREAD_STATIC_LINK=1 + #<link>shared:<define>BOOST_THREAD_DYN_LINK=1 + <link>static:<define>BOOST_THREAD_BUILD_LIB=1 + <link>shared:<define>BOOST_THREAD_BUILD_DLL=1 + -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag + <tag>@$(__name__).tag + <toolset>gcc:<cxxflags>-Wno-long-long + #<define>BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED + #<define>BOOST_SYSTEM_NO_DEPRECATED + #<define>BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS + + #-pedantic -ansi -std=gnu++0x -Wextra -fpermissive + <warnings>all + <toolset>gcc:<cxxflags>-Wextra + <toolset>gcc:<cxxflags>-pedantic + <toolset>gcc:<cxxflags>-Wno-long-long + #<toolset>gcc:<cxxflags>-ansi + #<toolset>gcc:<cxxflags>-fpermissive + <toolset>gcc-4:<cxxflags>-Wno-variadic-macros + <toolset>gcc-5:<cxxflags>-Wno-variadic-macros + #<toolset>gcc:<cxxflags>-Wunused-local-typedefs + <toolset>gcc:<cxxflags>-Wunused-function + <toolset>gcc:<cxxflags>-Wno-unused-parameter + + <toolset>darwin:<cxxflags>-Wextra + <toolset>darwin:<cxxflags>-pedantic + #<toolset>darwin:<cxxflags>-ansi + <toolset>darwin:<cxxflags>-fpermissive + <toolset>darwin:<cxxflags>-Wno-long-long + #<toolset>darwin:<cxxflags>-Wno-variadic-macros + <toolset>darwin-4:<cxxflags>-Wno-variadic-macros + <toolset>darwin-5:<cxxflags>-Wno-variadic-macros + #<toolset>darwin:<cxxflags>-Wunused-local-typedefs + <toolset>darwin:<cxxflags>-Wunused-function + <toolset>darwin:<cxxflags>-Wno-unused-parameter + + #<toolset>pathscale:<cxxflags>-Wextra + <toolset>pathscale:<cxxflags>-Wno-long-long + <toolset>pathscale:<cxxflags>-pedantic + + <toolset>clang:<warnings>on + <toolset>clang:<cxxflags>-Wextra + #<toolset>clang:<cxxflags>-ansi + #<toolset>clang:<cxxflags>-fpermissive + <toolset>clang:<cxxflags>-Wno-long-long + <toolset>clang:<cxxflags>-Wunused-function + <toolset>clang:<cxxflags>-Wno-variadic-macros + <toolset>clang:<cxxflags>-Wno-unused-parameter + + #<toolset>gcc-mingw-4.4.0:<cxxflags>-fdiagnostics-show-option + #<toolset>gcc-mingw-4.5.0:<cxxflags>-fdiagnostics-show-option + #<toolset>gcc-mingw-4.6.0:<cxxflags>-fdiagnostics-show-option + #<toolset>gcc-mingw-4.6.3:<cxxflags>-fdiagnostics-show-option + #<toolset>gcc-mingw-4.7.0:<cxxflags>-fdiagnostics-show-option + #<toolset>gcc-mingw-4.8.0:<cxxflags>-fdiagnostics-show-option + #<toolset>gcc:<cxxflags>-Wno-missing-field-initializers + + <toolset>darwin-4.6.2:<cxxflags>-Wno-delete-non-virtual-dtor + <toolset>darwin-4.7.0:<cxxflags>-Wno-delete-non-virtual-dtor + + #<toolset>clang-2.8:<cxxflags>-Wno-delete-non-virtual-dtor + #<toolset>clang-2.8:<cxxflags>-Wno-unused-function + #<toolset>clang-2.9:<cxxflags>-Wno-delete-non-virtual-dtor + #<toolset>clang-2.9:<cxxflags>-Wno-unused-function + <toolset>clang-3.0:<cxxflags>-Wno-delete-non-virtual-dtor + #<toolset>clang-3.0:<cxxflags>-Wno-unused-function + #<toolset>clang-3.0:<cxxflags>-Wno-unused-variable + +# Note: Some of the remarks from the Intel compiler are disabled +# remark #193: zero used for undefined preprocessing identifier "XXX" +# remark #304: access control not specified ("public" by default) +# remark #593: variable "XXX" was set but never used +# remark #1418: external function definition with no prior declaration +# remark #2415: variable "XXX" of static storage duration was declared but never referenced + + <toolset>intel:<cxxflags>-wd193,304,383,444 + <toolset>intel:<cxxflags>-wd593,981 + <toolset>intel:<cxxflags>-wd1418 + <toolset>intel:<cxxflags>-wd2415 + + <toolset>msvc:<cxxflags>/wd4100 + <toolset>msvc:<cxxflags>/wd4512 + <toolset>msvc:<cxxflags>/wd6246 + + <target-os>windows:<define>WIN32_LEAN_AND_MEAN + <target-os>windows:<define>BOOST_USE_WINDOWS_H + + # : default-build <threading>multi + : usage-requirements # pass these requirement to dependents (i.e. users) + #<link>static:<define>BOOST_THREAD_STATIC_LINK=1 + #<link>shared:<define>BOOST_THREAD_DYN_LINK=1 + <link>static:<define>BOOST_THREAD_BUILD_LIB=1 + <link>shared:<define>BOOST_THREAD_BUILD_DLL=1 + #<define>BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED + #<define>BOOST_SYSTEM_NO_DEPRECATED + #<define>BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS + ; + +rule tag ( name : type ? : property-set ) +{ + local result = $(name) ; + + if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB + { + local api = [ $(property-set).get <threadapi> ] ; + + # non native api gets additional tag + if $(api) != [ threadapi-feature.get-default $(property-set) ] { + result = $(result)_$(api) ; + } + } + + # forward to the boost tagging rule + return [ indirect.call $(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag + $(result) : $(type) : $(property-set) ] ; +} + +rule win32_pthread_paths ( properties * ) +{ + local result ; + local PTW32_INCLUDE ; + local PTW32_LIB ; + PTW32_INCLUDE = [ modules.peek : PTW32_INCLUDE ] ; + PTW32_LIB = [ modules.peek : PTW32_LIB ] ; + PTW32_INCLUDE ?= [ modules.peek user-config : PTW32_INCLUDE ] ; + PTW32_LIB ?= [ modules.peek user-config : PTW32_LIB ] ; + PTW32_INCLUDE ?= [ modules.peek site-config : PTW32_INCLUDE ] ; + PTW32_LIB ?= [ modules.peek site-config : PTW32_LIB ] ; + + if ! ( $(PTW32_INCLUDE) && $(PTW32_LIB) ) + { + if ! $(.notified) + { + echo "************************************************************" ; + echo "Trying to build Boost.Thread with pthread support." ; + echo "If you need pthread you should specify the paths." ; + echo "You can specify them in site-config.jam, user-config.jam" ; + echo "or in the environment." ; + echo "For example:" ; + echo "PTW32_INCLUDE=C:\\Program Files\\ptw32\\Pre-built2\\include" ; + echo "PTW32_LIB=C:\\Program Files\\ptw32\\Pre-built2\\lib" ; + echo "************************************************************" ; + .notified = true ; + } + } + else + { + local include_path = [ path.make $(PTW32_INCLUDE) ] ; + local lib_path = [ path.make $(PTW32_LIB) ] ; + local libname = pthread ; + if <toolset>msvc in $(properties) + { + libname = $(libname)VC2.lib ; + } + if <toolset>gcc in $(properties) + { + libname = lib$(libname)GC2.a ; + } + lib_path = [ path.glob $(lib_path) : $(libname) ] ; + if ! $(lib_path) + { + if ! $(.notified) + { + echo "************************************************************" ; + echo "Trying to build Boost.Thread with pthread support." ; + echo "But the library" $(libname) "could not be found in path" ; + echo $(PTW32_LIB) ; + echo "************************************************************" ; + .notified = true ; + } + } + else + { + result += <include>$(include_path) ; + result += <library>$(lib_path) ; + } + } + return $(result) ; +} + +rule usage-requirements ( properties * ) +{ + local result ; + if <threadapi>pthread in $(properties) + { + result += <define>BOOST_THREAD_POSIX ; + if <target-os>windows in $(properties) + { + result += [ win32_pthread_paths $(properties) ] ; + # TODO: What is for static linking? Is the <library> also needed + # in that case? + } + } + if <threadapi>win32 in $(properties) + { + result += <define>BOOST_THREAD_WIN32 ; + } + + #if ! <toolset>vacpp in $(properties) || <toolset-vacpp:version>11.1 in $(properties) || <toolset-vacpp:version>12.1.0.1 in $(properties) || <toolset-vacpp:version>12.1 in $(properties) + #{ + result += <library>/boost/chrono//boost_chrono ; + #} + + return $(result) ; +} + +rule requirements ( properties * ) +{ + local result ; + + if <threadapi>pthread in $(properties) + { + result += <define>BOOST_THREAD_POSIX ; + if <target-os>windows in $(properties) + { + local paths = [ win32_pthread_paths $(properties) ] ; + if $(paths) + { + result += $(paths) ; + } + else + { + result = <build>no ; + } + } + result += <define>BOOST_THREAD_DONT_USE_CHRONO ; + if ! [ configure.builds has_atomic_flag_lockfree + : $(properties) : "lockfree boost::atomic_flag" ] { + result += <library>/boost/atomic//boost_atomic ; + } + } else { + if <threadapi>win32 in $(properties) + { + result += <define>BOOST_THREAD_WIN32 ; + } + result += <define>BOOST_THREAD_USES_CHRONO ; + result += <library>/boost/chrono//boost_chrono ; + } + + return $(result) ; +} + +alias thread_sources + : ## win32 sources ## + win32/thread.cpp + win32/tss_dll.cpp + win32/tss_pe.cpp + win32/thread_primitives.cpp + future.cpp + : ## requirements ## + <threadapi>win32 + ; + +alias thread_sources + : ## pthread sources ## + pthread/thread.cpp + pthread/once.cpp + future.cpp + : ## requirements ## + <threadapi>pthread + ; + +explicit thread_sources ; + +lib boost_thread + : thread_sources + : <conditional>@requirements + : + : <link>shared:<define>BOOST_THREAD_USE_DLL=1 + <link>static:<define>BOOST_THREAD_USE_LIB=1 + <conditional>@usage-requirements + ; + +boost-install boost_thread ;
\ No newline at end of file diff --git a/src/boost/libs/thread/build/has_atomic_flag_lockfree_test.cpp b/src/boost/libs/thread/build/has_atomic_flag_lockfree_test.cpp new file mode 100644 index 000000000..ca6940546 --- /dev/null +++ b/src/boost/libs/thread/build/has_atomic_flag_lockfree_test.cpp @@ -0,0 +1,13 @@ +// Copyright (c) 2013, Petr Machata, Red Hat Inc. +// +// Use modification and distribution are subject to the boost Software +// License, Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). + +#include "../../../boost/atomic.hpp" +#include "../../../boost/static_assert.hpp" + +int main(int argc, char *argv[]) +{ + BOOST_STATIC_ASSERT(BOOST_ATOMIC_FLAG_LOCK_FREE); + return 0; +} |