mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			322 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			322 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # $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 feature ;
 | |
| import indirect ;
 | |
| import path ;
 | |
| import configure ; 
 | |
| 
 | |
| 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
 | |
| 
 | |
|       <library>/boost/system//boost_system
 | |
|        #-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
 | |
|       <library>/boost/system//boost_system
 | |
|     ;
 | |
| 
 | |
| local rule default_threadapi ( )
 | |
| {
 | |
|     local api = pthread ;
 | |
|     if [ os.name ] = "NT" { api = win32 ; }
 | |
|     return $(api) ;
 | |
| }
 | |
| 
 | |
| feature.feature threadapi : pthread win32 : propagated ;
 | |
| feature.set-default threadapi : [ default_threadapi ] ;
 | |
| 
 | |
| exe has_atomic_flag_lockfree : ../build/has_atomic_flag_lockfree_test.cpp ; 
 | |
| 
 | |
| 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) != [ default_threadapi ] {
 | |
|             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 ! <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 {
 | |
|         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
 | |
|       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 ; |