亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? python.jam

?? C++的一個好庫。。。現在很流行
?? JAM
字號:
# Copyright 2004 Vladimir Prus.
# 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)

# Support for Python and the the Boost.Python library.
#
# This module defines
#
# - a project 'python' with a target 'python' in it, that corresponds
#   to the python library
#
# - a main target rule 'python-extension' which can be used
#   to build a python extension.
#
# Extensions that use Boost.Python must explicitly link to it.

# Known problems: 
# - the directory where extension is generated is different from V2
# - the ext + py -> pyd_run_output generator is declared to take 
#   SHARED_LIB, not PYTHON_EXTENSION. That's because we reuse 
#   'lib-target-class', which creates SHARED_LIB explicitly.




import type ;
import testing ;
import generators ;
import project ;
import errors ;
import targets ;
import "class" : new ;
import os ;
import common ;
import toolset : flags ;

# Make this module a project
project.initialize $(__name__) ;
project python ;

# Initializes the Python toolset.
# - version -- the version of Python to use. Should be in Major.Minor format,
#   for example 2.3
# - 'root' -- the install root for Python
# - 'includes' -- the include path to Python headers. If empty, will be
#        guessed from 'root'
# - 'libraries' -- the path to Python libraries. If empty, will be guessed
#        from 'root'
# - 'cygwin-condition' -- if specified, should be a set of properties which
#   are present when we're building with cygwin gcc. 
#   This argument is not used yet.
#
# Example usage:
#
#   using python 2.3 ;  # Use default root
#   using python 2.3 : /usr/local ; # Root specified, include and lib paths
#                                   # will be guessed
#    
rule init ( version ? : root ? : includes ? : libraries ? : cygwin-condition ? )
{
    .configured = true ;
               
    if [ os.name ] = NT
    {
        init-nt $(version) : $(root) : $(includes) : $(libraries) : $(cygwin-condition) ;
    }
    else if [ os.name ] = MACOSX
    {
        init-mac $(version) : $(root) : $(includes) : $(libraries) ;
    } 
    else if [ modules.peek : UNIX ]
    {
        init-unix $(version) : $(root) : $(includes) : $(libraries) ;
    }
}

rule init-unix ( version ? : root ? : includes ? : libraries ? )
{
    root ?= /usr ;
    includes ?= $(root)/include/python$(version) ;
    libraries ?= $(root)/lib/python$(version)/config ;
    
    # Find the 'python' binary, which is used for testing.
    # Look first in $(root)/bin, then in PATH.
    local interpreter = [ common.get-invocation-command 
        python : python : : $(root)/bin : path-last ] ;
    
    if --debug-configuration in [ modules.peek : ARGV ]
    {
        ECHO "notice: Python include path is" $(includes) ;
        ECHO "notice: Python library path is" $(libraries) ;
        ECHO "notice: Python interpreter is" $(interpreter) ;        
    }
    
    flags python.capture-output PYTHON : $(interpreter) ;
    
    # On Linux, we don't want to link either Boost.Python or
    # Python extensions to libpython, so that when extensions
    # loaded in the interpreter, the symbols in the interpreter
    # are used. If we linked to libpython, we'd get duplicate
    # symbols. So declare two targets -- one for headers and another
    # for library.          
    alias python_for_extensions
                 : 
                 :
                 :
                 : <include>$(includes) 
                 ;
    
    alias python
                 : 
                 :
                 :
                 : <include>$(includes) 
                   <library-path>$(libraries)
                   <find-shared-library>python$(version)
                 ;
    
    # NOTES:
    # - V1 had logic to force intel to use gcc's runtime.
    #   Note sure why that was needed, with icc 8.0 extensions
    #   built with intel are loaded by python without problems.
    # - There was 'python-static-multithread' logic. Don't know
    #   what it affected, so can't test.
    
    # TODO: need to figure out when the following code is needed:
    # for builtin extensions only or in some other cases too.

    
    #    if [ modules.peek $(OS) ] = OSF
    #    {
    #        PYTHON_PROPERTIES += <*><*><linkflags>"-expect_unresolved 'Py*' -expect_unresolved '_Py*'" ;
    #    }
    #    else if [ modules.peek $(OS) ] = AIX
    #    {
    #        PYTHON_PROPERTIES 
    #          += <*><*><linkflags>"-Wl,-bI:$(PYTHON_LIB_PATH)/python.exp"
    #            <*><*><find-library>pthreads ;
    #    }
}

rule init-mac ( version : root : includes ? : libraries ? )
{
    if ! $(root)
    {
        if [ GLOB /System/Library/Frameworks : Python.framework ]
        {
            root = /System/Library/Frameworks/Python.framework/Versions/$(version) ;
        }
        else
        {
            root = /Library/Frameworks/Python.framework/Versions/$(version) ;
        }
    }   
    includes ?= $(PYTHON_ROOT)/include/python$(PYTHON_VERSION) ;
    # FIXME: not sure what PYTHON_FRAMEWORK variable is
    PYTHON_FRAMEWORK ?= $(root) ;
    while $(PYTHON_FRAMEWORK:D=) && $(PYTHON_FRAMEWORK:D=) != Python.framework
    {
        PYTHON_FRAMEWORK = $(PYTHON_FRAMEWORK:D) ;
    }
    PYTHON_FRAMEWORK = $(PYTHON_FRAMEWORK:D)/Python ;

    alias python
      : 
      :
      : 
      : <include>$(includes)
      ;  
    
    alias python
      :
      : <os>MACOSXX <toolset>darwin
      :
      : <framework>$(PYTHON_FRAMEWORK)
      ;  
}

.alias-defined = ;
rule init-nt ( version : root ? : includes ? : libraries ? : cygwin-condition ? )
{
#    PYTHON_PROPERTIES =
#      boost-python-disable-borland
#      select-nt-python-includes
#      <runtime-link>dynamic
#      <sysinclude>@boost
#      <$(gcc-compilers)><*><define>USE_DL_IMPORT
#      ;

    if ! $(cygwin-condition)
    {        
        root ?= c:/tools/python ;
        
        local PATH = [ modules.peek : PATH ] ;
        local PATH = [ modules.peek : Path ] ;        
        
        PYTHON_LIB_PATH ?= $(root)/libs [ GLOB $(root) : PCbuild ] ;
        
        PYTHON_INCLUDES ?= $(root)/include [ GLOB $(root) : PC ] ;
        
        PYTHON_DLL ?= [ GLOB $(PATH) $(Path) : python$(PYTHON_VERSION_NODOT).dll ] ;
        PYTHON_DEBUG_DLL ?= [ GLOB $(PATH) $(Path) : python$(PYTHON_VERSION_NODOT)_d.dll ] ;
        PYTHON_IMPORT_LIB ?= [ GLOB $(PYTHON_LIB_PATH) : libpython$(PYTHON_VERSION_NODOT).* ] ;
        PYTHON_DEBUG_IMPORT_LIB ?= [ GLOB $(PYTHON_LIB_PATH) : libpython$(PYTHON_VERSION_NODOT).* ] ;        
        
        
        # This is mingw-specific V1 code. I don't yet understand
        # why mingw must be specially-cased.
        #local lib = $(PYTHON_IMPORT_LIB) ;
        #if <define>BOOST_DEBUG_PYTHON in $(properties)
        #{
        #    lib = $(PYTHON_DEBUG_IMPORT_LIB) ;
        #}
        #lib ?= $(PYTHON_DLL) ;
        #if <define>BOOST_DEBUG_PYTHON in $(properties)
        #{
        #    lib ?= $(PYTHON_DEBUG_DLL) ;
        #}
        #properties += <library-file>$(lib) ;
        #}
        
        properties += <library-path>$(PYTHON_LIB_PATH) ;
            
        # msvc compilers auto-find the python library
        # declare two alternatives -- one for msvc and another
        # for the rest of the world
        alias python 
          :
          : <toolset>msvc 
          :
          : <library-path>$(PYTHON_LIB_PATH) 
            <include>$(PYTHON_INCLUDES)
          ;
                       
        local lib = python$(PYTHON_VERSION_NODOT) ;
        # TODO: don't support BOOST_DEBUG_PYTHON yet.        
        #    if <define>BOOST_DEBUG_PYTHON in $(properties)
        #    {
        #            lib = python$(PYTHON_VERSION_NODOT)_d ;
        #    }
        
        alias python
          :
          :
          :
          : <library-path>$(PYTHON_LIB_PATH)    
            <include>$(PYTHON_INCLUDES)
            <find-library>$(lib) ;                
    }
    else
    {        
        root ?= /usr ;  
        if $(root) = /usr
        {
            CYGWIN_PYTHON_DLL_PATH ?= /bin ;
        }
        else
        {
            CYGWIN_PYTHON_DLL_PATH ?= $(root)/bin ;
        }
        CYGWIN_PYTHON_LIB_PATH ?= $(CYGWIN_PYTHON_ROOT)/lib/python$(version)/config ;
      
        CYGWIN_PYTHON_DEBUG_VERSION ?= $(version) ;
        CYGWIN_PYTHON_DEBUG_ROOT ?= /usr/local/pydebug ;
        CYGWIN_PYTHON_DEBUG_DLL_PATH ?= $(CYGWIN_PYTHON_DEBUG_ROOT)/bin ;
        CYGWIN_PYTHON_DEBUG_LIB_PATH ?= $(CYGWIN_PYTHON_DEBUG_ROOT)/lib/python$(CYGWIN_PYTHON_DEBUG_VERSION)/config ;        
        
        local properties ;
        # TODO: don't support BOOST_DEBUG_PYTHON yet.                
        #if <define>BOOST_DEBUG_PYTHON in $(properties)
        #{
        #    properties += <library-path>$(CYGWIN_PYTHON_DEBUG_LIB_PATH) <find-library>python$(CYGWIN_PYTHON_DEBUG_VERSION).dll ;
        #}
        #else
        #{
        properties += <library-path>$(CYGWIN_PYTHON_LIB_PATH) 
                      <find-library>python$(CYGWIN_PYTHON_VERSION).dll ;
        
        properties += <include>$(root)/include/python$(version) ;          
          
        #}
        alias python
          :
          : $(cygwin-condition)
          :
          : $(properties)
          ;        
    }    
    
    if ! $(.alias-defined)
    {
        .alias-defined = true ;
        alias python_for_extensions : python ;
    }    
}


rule configured ( ) 
{
     return $(.configured) ;
}
        
type.register PYTHON_EXTENSION : : SHARED_LIB ;
# We can't give "dll" suffix to PYTHON_EXTENSION, because
# we would not know what "a.dll" is: python extenstion or
# ordinary library. Therefore, we specify only suffixes
# used for generation of targets.
type.set-generated-target-suffix PYTHON_EXTENSION : : so ;
type.set-generated-target-suffix PYTHON_EXTENSION : <os>NT : so ;
type.set-generated-target-suffix PYTHON_EXTENSION : <os>CYGWIN : dll ;

rule python-extension ( name : sources * : requirements * : default-build * : 
                        usage-requirements * )
{
    requirements += <use>/python//python_for_extensions ;
        
    # TODO: handle the following V1 code
    #if $(OS) = MACOSX && $(toolset) = darwin
    #{
    #    if <target-type>PYD in $(properties)
    #    {
    #        properties += <link-format>bundle ;
    #    }
    #    properties += <framework>$(PYTHON_FRAMEWORK) ;
    #}    
               
#        <metrowerks><*><cxxflags>"-inline deferred" 
#      <cwpro8><*><cxxflags>"-inline deferred"  # added for internal testing purposes
#        <cxx><*><sysinclude>@boost/boost/compatibility/cpp_c_headers
#         <define>BOOST_PYTHON_DYNAMIC_LIB
    
    
#    PYTHON_PROPERTIES += 
#        <sysinclude>@boost
#          <stlport-iostream>on
#            select-python-library
    
#      boost-python-disable-borland
#      select-nt-python-includes
#      <runtime-link>dynamic
#      <sysinclude>@boost
#      <$(gcc-compilers)><*><define>USE_DL_IMPORT
#          <sysinclude>$(PYTHON_INCLUDES)
            
    local project = [ project.current ] ;

    
    targets.main-target-alternative
      [ new typed-target $(name) : $(project) : PYTHON_EXTENSION
        : [ targets.main-target-sources $(sources) : $(name) ]
        : [ targets.main-target-requirements $(requirements) : $(project) ] 
        : [ targets.main-target-default-build $(default-build) : $(project) ] 
      ] ;
}                            

IMPORT python : python-extension : : python-extension ;

# Support for testing
type.register PY : py ;
type.register RUN_PYD_OUTPUT ;
#type.set-generated-target-suffix RUN_PYD : : run ;
type.register RUN_PYD : : TEST ;

class python-test-generator : generator
{
    import set ;
    
    rule __init__ ( * : * )
    {
        generator.__init__ $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
        self.composing = true ;
    }
        
    rule run ( project name ? : property-set : sources * : multiple ? )
    {       
        local python ;
        for local s in $(sources)
        {
            if [ $(s).type ] = PY
            {
                python = $(s) ;
            }
        }
        
        local extensions ;
        for local s in $(sources)
        {
            if [ $(s).type ] = PYTHON_EXTENSION
            {
                extensions += $(s) ;
            }
        }
                
        local libs ;
        for local s in $(sources)
        {
            if [ type.is-derived [ $(s).type ] LIB ] 
              && ! $(s) in $(extensions)
            {
                libs += $(s) ;
            }
        }
        
        local new-sources ;
        for local s in $(sources)
        {
            if [ type.is-derived [ $(s).type ] CPP ] 
            {
                local name = [ utility.basename [ $(s).name ] ] ;
                if $(name) = [ utility.basename [ $(python).name ] ]
                {
                    name = $(name)_ext ;
                }          
                local extension = [ generators.construct $(project) $(name) :
                  PYTHON_EXTENSION : $(property-set) : $(s) $(libs) ] ;
                # Ignore usage requirements. We're top-level generator and
                # nobody is going to use us.
                new-sources += $(extension[2-]) ;
            }
        }

            
        result = [ construct-result $(python) $(extensions) $(new-sources) 
          : $(project) $(name) : $(property-set) ] ;        
    }    
}

generators.register 
  [ new python-test-generator python.capture-output : : RUN_PYD_OUTPUT ] ;

generators.register-standard testing.expect-success 
  : RUN_PYD_OUTPUT : RUN_PYD ;


rule capture-output ( target : sources * : properties * )
{
    PYTHONPATH = [ on $(sources[2]) return $(LOCATE) ] ;
    testing.capture-output $(target) : $(sources[1]) : $(properties) ;
    LAUNCHER on $(target) = PYTHONPATH=$(PYTHONPATH) [ on $(target) return $(PYTHON) ] ;
}

rule bpl-test ( name : sources * : requirements * )
{        
    sources ?= $(name).py $(name).cpp ;
    return [ testing.make-test 
        run-pyd : $(sources) /boost/python//boost_python
          : $(requirements) : $(name) ] ;
}

IMPORT $(__name__) : bpl-test : : bpl-test ;
  
  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区色视频| 久久99精品久久久久久动态图| 日本在线不卡视频| av在线播放一区二区三区| 91精品视频网| 一区二区三区免费看视频| 国产九色精品成人porny| 欧美日韩一级片网站| 欧美极品少妇xxxxⅹ高跟鞋| 老司机午夜精品| 欧美视频一区二| 亚洲日本丝袜连裤袜办公室| 国产激情精品久久久第一区二区 | 日韩综合在线视频| 色综合欧美在线视频区| 国产日韩欧美高清| 韩国欧美国产一区| 日韩一区二区中文字幕| 日韩激情av在线| 欧美三日本三级三级在线播放| 中文字幕中文字幕一区| 国产91综合网| 国产精品一区二区你懂的| 亚洲午夜激情网站| 亚洲一区二区精品视频| 99国产精品国产精品久久| 欧美高清在线一区| 国产精品一区二区果冻传媒| 精品国精品国产| 国产一区二区不卡| 久久久国产精品午夜一区ai换脸| 国产一区二区三区免费观看| 精品国产髙清在线看国产毛片| 麻豆精品新av中文字幕| 欧美tk丨vk视频| 精品在线播放免费| 国产亚洲精品aa午夜观看| 国产一区在线不卡| 国产精品青草久久| 色视频成人在线观看免| 五月婷婷欧美视频| 欧美刺激午夜性久久久久久久| 精品亚洲成av人在线观看| 久久精品免费在线观看| 99在线视频精品| 一区二区免费视频| 欧美电影在哪看比较好| 精品一区二区久久| 国产精品女主播av| 欧美三级日韩在线| 麻豆精品视频在线观看| 国产日韩欧美一区二区三区乱码| 99视频有精品| 三级精品在线观看| 国产亚洲福利社区一区| 色欧美日韩亚洲| 精品亚洲porn| 亚洲欧美激情视频在线观看一区二区三区| 91在线视频免费观看| 天天综合色天天综合| 久久蜜桃av一区二区天堂 | 日韩精品亚洲一区| 久久久久青草大香线综合精品| av一区二区不卡| 视频一区二区三区中文字幕| 国产欧美日韩另类视频免费观看| 欧美色图天堂网| 国产成人自拍网| 亚洲成人动漫在线免费观看| 国产婷婷色一区二区三区四区| 欧洲日韩一区二区三区| 国产一区在线观看麻豆| 亚洲一区在线观看免费 | 精品毛片乱码1区2区3区| 成人久久久精品乱码一区二区三区| 亚洲美女精品一区| 久久嫩草精品久久久精品| 精品视频全国免费看| 成人午夜在线免费| 激情久久久久久久久久久久久久久久| 国产精品白丝在线| 久久日韩粉嫩一区二区三区| 欧美剧在线免费观看网站| 国产成人av一区| 日韩va欧美va亚洲va久久| 中文字幕欧美一区| 久久先锋影音av鲁色资源网| 欧美日韩二区三区| 日本黄色一区二区| 成年人国产精品| 国产麻豆精品久久一二三| 蜜桃一区二区三区在线观看| 亚洲大型综合色站| 亚洲日本乱码在线观看| 国产精品人人做人人爽人人添| 日韩女同互慰一区二区| 91精品国产91热久久久做人人| 在线观看精品一区| 色综合色综合色综合| 97se亚洲国产综合自在线| 国产精品一区二区三区网站| 韩国女主播一区| 极品销魂美女一区二区三区| 麻豆国产精品官网| 麻豆成人久久精品二区三区红| 日本不卡一区二区| 日本91福利区| 美女视频黄 久久| 精品中文字幕一区二区| 精品一区二区三区视频在线观看| 日本不卡一区二区| 另类综合日韩欧美亚洲| 久久99精品久久久久久| 国产乱子伦视频一区二区三区| 国产一区二区免费在线| 国产成人免费在线观看不卡| 成人在线综合网站| 97久久久精品综合88久久| 91在线国产福利| 在线观看日韩毛片| 在线不卡a资源高清| 制服丝袜激情欧洲亚洲| 日韩久久精品一区| 26uuu欧美日本| 国产精品久久综合| 亚洲制服丝袜在线| 日韩精品一级中文字幕精品视频免费观看 | 久久久久久久久一| 国产精品久久看| 一区二区三区四区五区视频在线观看| 亚洲图片欧美视频| 六月婷婷色综合| 成人av午夜影院| 在线日韩av片| 91精品国产综合久久小美女| 国产色婷婷亚洲99精品小说| 综合久久给合久久狠狠狠97色| 亚洲一区二区三区不卡国产欧美| 亚欧色一区w666天堂| 蜜臀久久久99精品久久久久久| 成人综合激情网| 欧美日韩中文国产| 久久在线免费观看| 一区精品在线播放| 日韩中文欧美在线| 国产风韵犹存在线视精品| 色激情天天射综合网| 欧美精品一区二区三区蜜臀| 国产精品国模大尺度视频| 天天综合天天综合色| 国产成人精品免费一区二区| 欧美在线一二三四区| 久久精品欧美一区二区三区不卡| 一区二区三区精密机械公司| 国产揄拍国内精品对白| 欧美三级视频在线| 中日韩免费视频中文字幕| 无码av免费一区二区三区试看 | 精品亚洲国产成人av制服丝袜 | 成人综合婷婷国产精品久久| 欧美日韩黄视频| 亚洲欧美影音先锋| 看国产成人h片视频| 欧美优质美女网站| 中文一区在线播放| 久草在线在线精品观看| 欧美性猛交xxxxxx富婆| 国产精品免费看片| 国产综合色产在线精品| 欧美麻豆精品久久久久久| 亚洲三级在线免费观看| 国产黄色精品视频| 欧美mv和日韩mv的网站| 亚洲午夜久久久久久久久电影院 | 欧美丰满少妇xxxxx高潮对白| 中文字幕av一区二区三区| 国产在线视频一区二区三区| 欧美久久久久久久久中文字幕| 亚洲免费av在线| 成人免费观看视频| 欧美激情一区二区| 国产一区二区三区视频在线播放| 91精品国产综合久久久久久久| 亚洲另类色综合网站| 97国产一区二区| 中文字幕制服丝袜一区二区三区 | 一区二区理论电影在线观看| gogogo免费视频观看亚洲一| 久久久精品黄色| 国产传媒日韩欧美成人| 久久久久久一二三区| 精品综合免费视频观看| 日韩视频一区二区三区在线播放| 日韩电影在线一区| 欧美群妇大交群的观看方式| 天堂成人国产精品一区| 91.麻豆视频| 蜜臀久久99精品久久久画质超高清| 在线播放中文一区| 蜜臀a∨国产成人精品|