2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-14 00:32:11 +00:00
Files
build/borland.jam
Dave Abrahams 4ee5b15a5d * expand.c - Implemented :W modifier for Cygwin->Windows path
translation.  Cleaned up indentation and idiomatic use of string.

* index.html - documented recent features including VARNAMES and
  DELETE_MODULE

* borland.jam, msvc.jam - use the new :W modifier to simplify
  code (but only somewhat)

* BoostBuild.py - ignore MSVC .ilk files under Cygwin and NT


[SVN r18434]
2003-05-19 06:30:44 +00:00

207 lines
6.3 KiB
Plaintext

# (C) Copyright David Abrahams 2001.
# (C) Copyright Vladimir Prus 2003.
# Permission to copy, use, modify, sell and distribute this software
# is granted provided this copyright notice appears in all copies. This
# software is provided "as is" without express or implied warranty, and
# with no claim as to its suitability for any purpose.
# Support for the Borland's command line compiler
import property ;
import generators ;
import os ;
import toolset : flags ;
import feature ;
import type ;
toolset.register borland ;
feature.subfeature toolset borland : version ;
# Installation root to use for versionless toolset
.root = "" ;
STDHDRS = "" ;
STDLIBPATH = "" ;
rule init ( version ? : root ? )
{
# If version is not provided, change the global variable
# It would probably be better to introduce 'unspecified' version
# and set flags on <toolset>borland-unspecified, but,
# default values are not applied to subfeatures.
if ! $(version)
{
if $(root)
{
.root = $(root)/bin/ ;
STDHDRS = $(root)/include/ ;
STDLIBPATH = $(root)/lib ;
}
}
else
{
feature.extend-subfeature toolset borland : version : $(version) ;
local condition = <toolset>borland-$(version) ;
toolset.flags borland.compile STDHDRS $(condition) : $(root)/include/ ;
toolset.flags borland.link STDLIBPATH $(condition) : $(root)/lib/ ;
root = $(root)/bin/ ;
root ?= "" ;
toolset.flags borland .root $(condition) : $(root) ;
}
}
# A borland-specific target type
type.register BORLAND.TDS : tds ;
# Declare generators
generators.register-linker borland.link "" : RSP : EXE : <toolset>borland ;
generators.register-linker borland.link "" : RSP : SHARED_LIB IMPORT_LIB : <toolset>borland ;
generators.register-composing borland.archive : OBJ : STATIC_LIB : <toolset>borland ;
generators.register-c-compiler borland.compile : CPP : OBJ : <toolset>borland ;
generators.register-c-compiler borland.compile : C : OBJ : <toolset>borland ;
# Declare flags
flags borland.compile OPTIONS <debug-symbols>on : -v ;
flags borland.link OPTIONS <debug-symbols>on : -v ;
flags borland.compile OPTIONS <optimization>off : -Od ;
flags borland.compile OPTIONS <optimization>speed : -O2 ;
flags borland.compile OPTIONS <optimization>space : -O1 ;
flags borland CFLAGS <inlining>off : -vi- ;
flags borland CFLAGS <inlining>on : -vi -w-inl ;
flags borland CFLAGS <inlining>full : -vi -w-inl ;
# Deal with various runtime configs...
# This should be not for DLL
flags borland OPTIONS <user-interface>console : -tWC ;
# -tWR sets -tW as well, so we turn it off here and then turn it
# on again later if we need it:
flags borland OPTIONS <link-runtime>shared : -tWR -tWC ;
flags borland OPTIONS <user-interface>gui : -tW ;
flags borland OPTIONS <main-target-type>LIB/<link>shared : -tWD ;
# Hmm.. not sure what's going on here.
flags borland OPTIONS : -WM- ;
flags borland OPTIONS <threading>multi : -tWM ;
flags borland.compile OPTIONS <cxxflags> ;
flags borland.compile DEFINES <define> ;
flags borland.compile INCLUDES <include> ;
flags borland.link OPTIONS <link>shared : -tWD ;
flags borland NEED_IMPLIB <main-target-type>LIB/<link>shared : "" ;
#
# for C++ compiles the following options are turned on by default:
#
# -j5 stops after 5 errors
# -g255 allow an unlimited number of warnings
# -q no banner
# -c compile to object
# -P C++ code regardless of file extention
# -w turns on all warnings
# -Ve zero sized empty base classes, this option is on in the IDE by default
# and effects binary compatibility.
# -Vx zero sized empty members, this option is on in the IDE by default
# and effects binary compatibility.
# -a8 8 byte alignment, this option is on in the IDE by default
# and effects binary compatibility.
#
# -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o"$(<)" "$(>)"
actions compile
{
"$(.root)bcc32" -j5 -g255 -q -c -P -w -Ve -Vx -a8 -b- $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -I"$(STDHDRS)" -o"$(<)" "$(>)"
}
# Declare flags and action for linking
toolset.flags borland.link OPTIONS <debug-symbols>on : -v ;
toolset.flags borland.link LINKPATH <library-path> ;
toolset.flags borland.link FINDLIBS-ST <find-static-library> ;
toolset.flags borland.link FINDLIBS-SA <find-shared-library> ;
toolset.flags borland.link LIBRARIES <library-file> ;
toolset.flags borland.link LIBRARIES <library> ;
flags builtin.response-file LIBRARY_PATH_OPTION <toolset>borland : -L : unchecked ;
flags builtin.response-file LIBRARY_OPTION <toolset>borland : -l : unchecked ;
# bcc32 needs to have ilink32 in the path in order to invoke it, so explicitly
# specifying $(BCC_TOOL_PATH)bcc32 doesn't help. You need to add
# $(BCC_TOOL_PATH) to the path
# The NEED_IMPLIB variable controls whether we need to invoke implib.
# Declare action for archives. We don't use response file
# since it's hard to get "+-" there.
# CONSIDER: don't know what 'together' is for...
actions updated together piecemeal archive
{
"$(.root)tlib" /P256 /u /a /C "$(<:W)" +-"$(>:W)"
}
if [ os.name ] = CYGWIN
{
rule link
{
if ! $(<[2])
{
NEED_IMPLIB on $(<) = ;
}
}
.set-path = "cmd /S /C set \"PATH=" ;
.old-path = ";%PATH%\" \"&&\"" ;
# Couldn't get TLIB to stop being confused about pathnames
# containing dashes (it seemed to treat them as option separators
# when passed through from bash), so we explicitly write the
# command into a .bat file and execute that. TLIB is also finicky
# about pathname style! Forward slashes, too, are treated as
# options.
actions updated together piecemeal archive
{
echo "\"$(.root)tlib\" /P256 /u /a /C \"$(<:W)\" +-\"$(>:W)\"" > $(<:D)/tlib.bat
chmod +x $(<:D)/tlib.bat && $(<:D)/tlib.bat && rm $(<:D)/tlib.bat ;
}
}
else if [ os.name ] = NT
{
.set-path = "set \"PATH=" ;
.old-path = ";%PATH%\"
" ;
}
else
{
.set-path = "PATH=\"" ;
.old-path = "\":$PATH
export PATH
" ;
}
actions link bind LIBRARIES
{
$(.set-path)$(.root:W)$(.old-path) "$(.root)bcc32" -v -q $(OPTIONS) -L"$(LIBPATH:W)" -L"$(STDLIBPATH:W)" -e"$(<[1]:W)" @"$(>:W)"
$(NEED_IMPLIB)"$(.root)implib" $(NEED_IMPLIB)"$(<[2]:W)" $(NEED_IMPLIB)"$(<[1]:W)"
}