/usr/share/boost-build/tools/dmc.jam is in libboost1.49-dev 1.49.0-3.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | # Digital Mars C++
# (C) Copyright Christof Meerwald 2003.
# (C) Copyright Aleksey Gurtovoy 2004.
# (C) Copyright Arjan Knepper 2006.
#
# 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 following #// line will be used by the regression test table generation
# program as the column heading for HTML tables. Must not include version number.
#//<a href="http://www.digitalmars.com/">Digital<br>Mars C++</a>
import feature generators common ;
import toolset : flags ;
import sequence regex ;
feature.extend toolset : dmc ;
rule init ( version ? : command * : options * )
{
local condition = [ common.check-init-parameters dmc : version $(version) ] ;
local command = [ common.get-invocation-command dmc : dmc : $(command) ] ;
command ?= dmc ;
common.handle-options dmc : $(condition) : $(command) : $(options) ;
if $(command)
{
command = [ common.get-absolute-tool-path $(command[-1]) ] ;
}
root = $(command:D) ;
if $(root)
{
# DMC linker is sensitive the the direction of slashes, and
# won't link if forward slashes are used in command.
root = [ sequence.join [ regex.split $(root) "/" ] : "\\" ] ;
flags dmc .root $(condition) : $(root)\\bin\\ ;
}
else
{
flags dmc .root $(condition) : "" ;
}
}
# Declare generators
generators.register-linker dmc.link : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB : EXE : <toolset>dmc ;
generators.register-linker dmc.link.dll : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB : SHARED_LIB IMPORT_LIB : <toolset>dmc ;
generators.register-archiver dmc.archive : OBJ : STATIC_LIB : <toolset>dmc ;
generators.register-c-compiler dmc.compile.c++ : CPP : OBJ : <toolset>dmc ;
generators.register-c-compiler dmc.compile.c : C : OBJ : <toolset>dmc ;
# Declare flags
# dmc optlink has some limitation on the amount of debug-info included. Therefore only linenumbers are enabled in debug builds.
# flags dmc.compile OPTIONS <debug-symbols>on : -g ;
flags dmc.compile OPTIONS <debug-symbols>on : -gl ;
flags dmc.link OPTIONS <debug-symbols>on : /CO /NOPACKF /DEBUGLI ;
flags dmc.link OPTIONS <debug-symbols>off : /PACKF ;
flags dmc.compile OPTIONS <optimization>off : -S -o+none ;
flags dmc.compile OPTIONS <optimization>speed : -o+time ;
flags dmc.compile OPTIONS <optimization>space : -o+space ;
flags dmc.compile OPTIONS <exception-handling>on : -Ae ;
flags dmc.compile OPTIONS <rtti>on : -Ar ;
# FIXME:
# Compiling sources to be linked into a shared lib (dll) the -WD cflag should be used
# Compiling sources to be linked into a static lib (lib) or executable the -WA cflag should be used
# But for some reason the -WD cflag is always in use.
# flags dmc.compile OPTIONS <link>shared : -WD ;
# flags dmc.compile OPTIONS <link>static : -WA ;
# Note that these two options actually imply multithreading support on DMC
# because there is no single-threaded dynamic runtime library. Specifying
# <threading>multi would be a bad idea, though, because no option would be
# matched when the build uses the default settings of <runtime-link>dynamic
# and <threading>single.
flags dmc.compile OPTIONS <runtime-debugging>off/<runtime-link>shared : -ND ;
flags dmc.compile OPTIONS <runtime-debugging>on/<runtime-link>shared : -ND ;
flags dmc.compile OPTIONS <runtime-debugging>off/<runtime-link>static/<threading>single : ;
flags dmc.compile OPTIONS <runtime-debugging>on/<runtime-link>static/<threading>single : ;
flags dmc.compile OPTIONS <runtime-debugging>off/<runtime-link>static/<threading>multi : -D_MT ;
flags dmc.compile OPTIONS <runtime-debugging>on/<runtime-link>static/<threading>multi : -D_MT ;
flags dmc.compile OPTIONS : <cflags> ;
flags dmc.compile.c++ OPTIONS : <cxxflags> ;
flags dmc.compile DEFINES : <define> ;
flags dmc.compile INCLUDES : <include> ;
flags dmc.link <linkflags> ;
flags dmc.archive OPTIONS <arflags> ;
flags dmc LIBPATH <library-path> ;
flags dmc LIBRARIES <library-file> ;
flags dmc FINDLIBS <find-library-sa> ;
flags dmc FINDLIBS <find-library-st> ;
actions together link bind LIBRARIES
{
"$(.root)link" $(OPTIONS) /NOI /DE /XN "$(>)" , "$(<[1])" ,, $(LIBRARIES) user32.lib kernel32.lib "$(FINDLIBS:S=.lib)" , "$(<[2]:B).def"
}
actions together link.dll bind LIBRARIES
{
echo LIBRARY "$(<[1])" > $(<[2]:B).def
echo DESCRIPTION 'A Library' >> $(<[2]:B).def
echo EXETYPE NT >> $(<[2]:B).def
echo SUBSYSTEM WINDOWS >> $(<[2]:B).def
echo CODE EXECUTE READ >> $(<[2]:B).def
echo DATA READ WRITE >> $(<[2]:B).def
"$(.root)link" $(OPTIONS) /NOI /DE /XN /ENTRY:_DllMainCRTStartup /IMPLIB:"$(<[2])" "$(>)" $(LIBRARIES) , "$(<[1])" ,, user32.lib kernel32.lib "$(FINDLIBS:S=.lib)" , "$(<[2]:B).def"
}
actions compile.c
{
"$(.root)dmc" -c $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -o"$(<)" "$(>)"
}
actions compile.c++
{
"$(.root)dmc" -cpp -c -Ab $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -o"$(<)" "$(>)"
}
actions together piecemeal archive
{
"$(.root)lib" $(OPTIONS) -c -n -p256 "$(<)" "$(>)"
}
|