summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/thread/build
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
commit19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch)
tree42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/boost/libs/thread/build
parentInitial commit. (diff)
downloadceph-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.v2319
-rw-r--r--src/boost/libs/thread/build/has_atomic_flag_lockfree_test.cpp13
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;
+}