⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cw.jam

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 JAM
字号:
# Copyright (C) Reece H Dunn 2004# 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)# based on the msvc.jam toolsetimport property ;import generators ;import os ;import type ;import toolset : flags ;import errors : error ;import feature : feature get-values ;import path ;import sequence : unique ;import common ;if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]{   .debug-configuration = true ;}feature.extend toolset : cw ;toolset.add-requirements <toolset>cw,<runtime-link>shared:<threading>multi ;nl = "" ;rule init ( version ? : command * : options * ){   # TODO: fix the $(command[1]) = $(compiler) issue        setup = [ get-values <setup> : $(options) ] ;    setup    ?= cwenv.bat ;    compiler = [ get-values <compiler> : $(options) ] ;    compiler ?= mwcc ;    linker = [ get-values <linker> : $(options) ] ;    linker   ?= mwld ;    local condition = [ common.check-init-parameters cw :        version $(version) ] ;    command = [ common.get-invocation-command cw : mwcc.exe : $(command) :        [ default-paths $(version) ] ] ;        common.handle-options cw : $(condition) : $(command) : $(options) ;    local root = [ feature.get-values <root> : $(options) ] ;        if $(command)    {        command = [ common.get-absolute-tool-path $(command[-1]) ] ;    }    local tool-root = $(command) ;    setup = $(tool-root)\\$(setup) ;   # map the batch file in setup so it can be executed    other-tools = $(tool-root:D) ;    root ?= $(other-tools:D) ;        flags cw.link RUN_PATH $(condition) :         "$(root)\\Win32-x86 Support\\Libraries\\Runtime"        "$(root)\\Win32-x86 Support\\Libraries\\Runtime\\Libs\\MSL_All-DLLs" ;              setup = "set \"CWFOLDER="$(root)"\" && call \""$(setup)"\" > nul " ;   if [ os.name ] = NT   {      setup = $(setup)"" ;   }   else   {      setup = "cmd /S /C "$(setup)" \"&&\" " ;   }   # bind the setup command to the tool so it can be executed before the   # command   local prefix = $(setup) ;   flags cw.compile .CC $(condition) : $(prefix)$(compiler) ;   flags cw.link .LD $(condition) : $(prefix)$(linker) ;   flags cw.archive .LD $(condition) : $(prefix)$(linker) ;    if [ MATCH ^([89]\\.) : $(version) ]       {        if [ os.name ] = NT        {        # The runtime libraries        flags cw.compile CFLAGS <runtime-link>static/<threading>single/<runtime-debugging>off : -runtime ss ;        flags cw.compile CFLAGS <runtime-link>static/<threading>single/<runtime-debugging>on : -runtime ssd ;                flags cw.compile CFLAGS <runtime-link>static/<threading>multi/<runtime-debugging>off : -runtime sm ;        flags cw.compile CFLAGS <runtime-link>static/<threading>multi/<runtime-debugging>on : -runtime smd ;                flags cw.compile CFLAGS <runtime-link>shared/<runtime-debugging>off : -runtime dm ;        flags cw.compile CFLAGS <runtime-link>shared/<runtime-debugging>on : -runtime dmd ;        }            }    }local rule default-paths ( version ? )  # FIXME{   local possible-paths ;   local ProgramFiles = [ common.get-program-files-dir ] ;   # TODO: add support for cw8 and cw9 detection   local version-6-path = $(ProgramFiles)"\\Metrowerks\\CodeWarrior" ;   possible-paths += $(version-6-path) ;   # perform post-processing   possible-paths      = $(possible-paths)"\\Other Metrowerks Tools\\Command Line Tools" ;   possible-paths += [ modules.peek : PATH Path path ] ;   return $(possible-paths) ;}## declare generatorsgenerators.register-c-compiler cw.compile.c++ : CPP : OBJ : <toolset>cw ;generators.register-c-compiler cw.compile.c : C : OBJ : <toolset>cw ;generators.register-linker cw.link   : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB   : EXE   : <toolset>cw   ;generators.register-linker cw.link.dll   : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB   : SHARED_LIB IMPORT_LIB   : <toolset>cw   ;generators.register-archiver cw.archive   : OBJ   : STATIC_LIB   : <toolset>cw   ;## compilation phaseflags cw WHATEVER <toolset-cw:version> ;flags cw.compile CFLAGS <debug-symbols>on : -g ;flags cw.compile CFLAGS <optimization>off : -O0 ;flags cw.compile CFLAGS <optimization>speed : -O4,p ;flags cw.compile CFLAGS <optimization>space : -O4,s ;flags cw.compile CFLAGS <inlining>off : -inline off ;flags cw.compile CFLAGS <inlining>on : -inline on ;flags cw.compile CFLAGS <inlining>full : -inline all ;flags cw.compile CFLAGS <exception-handling>off : -Cpp_exceptions off ;flags cw.compile CFLAGS <rtti>on : -RTTI on ;flags cw.compile CFLAGS <rtti>off : -RTTI off ;flags cw.compile CFLAGS <warnings>on : -w on ;flags cw.compile CFLAGS <warnings>off : -w off ;flags cw.compile CFLAGS <warnings>all : -w all ;flags cw.compile CFLAGS <warnings-as-errors>on : -w error ;flags cw.compile USER_CFLAGS <cflags> : ;flags cw.compile.c++ USER_CFLAGS <cxxflags> : ;flags cw.compile DEFINES <define> ;flags cw.compile UNDEFS <undef> ;flags cw.compile INCLUDES <include> ;actions compile.c{   $(.CC) -c -cwd include -lang c -U$(UNDEFS) $(CFLAGS) $(USER_CFLAGS) -I- -o "$(<)" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")"}actions compile.c++{   $(.CC) -c -cwd include -lang c++ -U$(UNDEFS) $(CFLAGS) $(USER_CFLAGS) -I- -o "$(<)" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")"}## linking phaseflags cw.link DEF_FILE <def-file> ;flags cw LINKFLAGS : -search ;flags cw LINKFLAGS <debug-symbols>on : -g ;flags cw LINKFLAGS <user-interface>console : -subsystem console ;flags cw LINKFLAGS <user-interface>gui : -subsystem windows ;flags cw LINKFLAGS <user-interface>wince : -subsystem wince ;flags cw LINKFLAGS <user-interface>native : -subsystem native ;flags cw LINKFLAGS <user-interface>auto : -subsystem auto ;flags cw LINKFLAGS <main-target-type>LIB/<link>static : -library ;flags cw.link USER_LINKFLAGS <linkflags> ;flags cw.link LINKPATH <library-path> ;flags cw.link FINDLIBS_ST <find-static-library> ;flags cw.link FINDLIBS_SA <find-shared-library> ;flags cw.link LIBRARY_OPTION <toolset>cw : "" : unchecked ;flags cw.link LIBRARIES_MENTIONED_BY_FILE : <library-file> ;rule link.dll ( targets + : sources * : properties * ){    DEPENDS $(<) : [ on $(<) return $(DEF_FILE) ] ;}if [ os.name ] in NT{   actions archive   {      if exist "$(<[1])" DEL "$(<[1])"      $(.LD) -library -o "$(<[1])" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"   }}else # cygwin{   actions archive   {      _bbv2_out_="$(<)"      if test -f "$_bbv2_out_" ; then         _bbv2_existing_="$(<:W)"      fi      $(.LD) -library -o "$(<:W)" $_bbv2_existing_ @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"   }}actions link bind DEF_FILE{   $(.LD) -o "$(<[1]:W)" -L"$(LINKPATH)" $(LINKFLAGS) $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"}actions link.dll bind DEF_FILE{   $(.LD) -shared -o "$(<[1]:W)" -implib "$(<[2]:W)" -L"$(LINKPATH)" $(LINKFLAGS) -f"$(DEF_FILE)" $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -