Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work

源代码在线查看: jamfile.v2

软件大小: 35482 K
上传用户: sinba
关键词: libraries peer-reviewed emphasize provides
下载地址: 免注册下载 普通下载 VIP

相关代码

				# $Id: Jamfile.v2 42230 2007-12-21 11:51:05Z anthonyw $				# Copyright 2006-2007 Roland Schwarz.				# Copyright 2007 Anthony Williams				# 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:				# win32 and 				#				# 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 ;								project boost/thread				    : source-location ../src				    : requirements multi				      static:BOOST_THREAD_BUILD_LIB=1				      shared:BOOST_THREAD_BUILD_DLL=1				      -@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag				      @$(__name__).tag				    : default-build multi				    ;								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 ] ;								rule tag ( name : type ? : property-set )				{				    local result = $(name) ;				    				    if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB				    {				        local api = [ $(property-set).get  ] ;				        				        # 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 msvc in $(properties)				        {				            libname = $(libname)VC2.lib ;				        }				        if 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_path) ;				            result += $(lib_path) ;				        }				    }				    return $(result) ;				}								rule usage-requirements ( properties * )				{				    local result ;				    if pthread in $(properties)				    {				        result += BOOST_THREAD_POSIX ;				        if windows in $(properties)				        {				            result += [ win32_pthread_paths $(properties) ] ;				            # TODO: What is for static linking? Is the  also needed				            # in that case?				        }				    }				    return $(result) ;				}								rule requirements ( properties * )				{				    local result ;								    if pthread in $(properties)				    {				        result += BOOST_THREAD_POSIX ;				        if windows in $(properties) 				        {				            local paths = [ win32_pthread_paths $(properties) ] ;				            if $(paths)				            {				                result += $(paths) ;				            }				            else				            {				                result = no ;				            }				        }				    }				    return $(result) ;				}								alias thread_sources				    : ## win32 sources ##				      win32/thread.cpp				      win32/exceptions.cpp				      win32/tss_dll.cpp				      win32/tss_pe.cpp				    : ## requirements ##				      win32				    ;								alias thread_sources				    : ## pthread sources ##				      pthread/thread.cpp				      pthread/exceptions.cpp				      pthread/once.cpp				    : ## requirements ##				      pthread				    ;								explicit thread_sources ;								lib boost_thread				    : thread_sources				    : @requirements				    :				    : shared:BOOST_THREAD_USE_DLL=1				      static:BOOST_THREAD_USE_LIB=1				      @usage-requirements				    ;							

相关资源