2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-20 14:42:14 +00:00
Files
build/v1/tru64cxx65-tools.jam
Markus Schöpflin 3172511b4b Changed the compilation mode from ansi to strict ansi. This fixes the problem
with function template overload resolution but might introduce others where the
compiler now is too strict.


[SVN r29624]
2005-06-16 14:48:45 +00:00

149 lines
5.2 KiB
Plaintext

# Copyright 2001 David Abrahams.
# Copyright 2004, 2005 Markus Schoepflin.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
#
# Jam tools information for :
# Compaq Alpha CXX compiler
#
# Notes on this toolset:
#
# - Because of very subtle issues with the default ansi mode, strict_ansi mode
# is used for compilation. One example of things that don't work correctly in
# the default ansi mode is overload resolution of function templates when
# mixed with non-template functions.
#
# - For template instantiation "-timplicit_local" is used. Previously,
# "-tlocal" has been tried to avoid the need for a template repository
# but this doesn't work with manually instantiated templates. "-tweak"
# has not been used to avoid the stream of warning messages issued by
# ar or ld when creating a library or linking an application.
#
# - Debug symbols are generated with "-g3", as this works both in debug and
# release mode. When compiling C++ code without optimization, we additionally
# use "-gall", which generates full symbol table information for all classes,
# structs, and unions. As this turns off optimization, it can't be used when
# optimization is needed.
#
# No static linking as far as I can tell.
# flags cxx LINKFLAGS <runtime-link>static : -bstatic ;
flags tru64cxx65 CFLAGS <debug-symbols>on : -g3 ;
flags tru64cxx65 C++FLAGS <optimization>off/<debug-symbols>on : -gall ;
flags tru64cxx65 LINKFLAGS <debug-symbols>on : -g ;
flags tru64cxx65 LINKFLAGS <debug-symbols>off : -s ;
flags tru64cxx65 LINKFLAGS <target-type>$(SHARED_TYPES) : -shared -expect_unresolved 'Py*' -expect_unresolved '_Py*' ;
flags tru64cxx65 CFLAGS <optimization>off : -O0 ;
flags tru64cxx65 CFLAGS <optimization>speed/<inlining>on : -O2 ;
flags tru64cxx65 CFLAGS <optimization>speed : -O2 ;
# This (undocumented) macro needs to be defined to get all C function
# overloads required by the C++ standard.
flags tru64cxx65 C++FLAGS : -D__CNAME_OVERLOADS ;
# Added for threading support
flags tru64cxx65 CFLAGS <threading>multi : -pthread ;
flags tru64cxx65 LINKFLAGS <threading>multi : -pthread ;
flags tru64cxx65 CFLAGS <optimization>space/<inlining>on : <inlining>size ;
flags tru64cxx65 CFLAGS <optimization>space : -O1 ;
flags tru64cxx65 CFLAGS <inlining>off : -inline none ;
# The compiler versions tried (up to V6.5-040) hang when compiling Boost code
# with full inlining enabled. So leave it at the default level for now.
#
# flags tru64cxx65 CFLAGS <inlining>full : -inline all ;
flags tru64cxx65 CFLAGS <profiling>on : -pg ;
flags tru64cxx65 LINKFLAGS <profiling>on : -pg ;
# Selection of the object model. This flag is needed on both the C++ compiler
# and linker command line.
#
flags tru64cxx65 C++FLAGS <object-model>arm : -model arm ;
flags tru64cxx65 C++FLAGS <object-model>ansi : -model ansi ;
flags tru64cxx65 C++FLAGS <object-model>default : -model ansi ;
#
flags tru64cxx65 LINKFLAGS <object-model>arm : -model arm ;
flags tru64cxx65 LINKFLAGS <object-model>ansi : -model ansi ;
flags tru64cxx65 LINKFLAGS <object-model>default : -model ansi ;
#
flags tru64cxx65 CFLAGS <cflags> ;
flags tru64cxx65 C++FLAGS <cxxflags> ;
flags tru64cxx65 DEFINES <define> ;
flags tru64cxx65 UNDEFS <undef> ;
flags tru64cxx65 HDRS <include> ;
flags tru64cxx65 SYSHDRS <sysinclude> ;
flags tru64cxx65 LINKFLAGS <linkflags> ;
flags tru64cxx65 ARFLAGS <arflags> ;
if ! $(ARFLAGS)
{
flags tru64cxx65 ARFLAGS : "" ;
}
flags tru64cxx65 LIBPATH <library-path> ;
flags tru64cxx65 NEEDLIBS <library-file> ;
flags tru64cxx65 FINDLIBS <find-library> ;
#### Link ####
rule Link-action ( target : sources + : target-type )
{
tru64cxx65-Link-action $(target) : $(sources) ;
}
# for tru64cxx, we repeat all libraries so that dependencies are always resolved
actions tru64cxx65-Link-action bind NEEDLIBS
{
cxx -noimplicit_include $(LINKFLAGS) -o "$(<)" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) -lrt -lm
}
actions tru64cxx65-Link-shared bind NEEDLIBS
{
cxx -qrtti -noimplicit_include $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) -lm
}
#### Cc #####
rule Cc-action
{
tru64cxx65-Cc-action $(<) : $(>) ;
}
# Note: Relaxed ANSI mode (-std) is used for compilation because in strict ANSI
# C89 mode (-std1) the compiler doesn't accept C++ comments in C files. As -std
# is the default, no special flag is needed.
actions tru64cxx65-Cc-action
{
cc -msg_display_number -msg-disable 186,450,1115 -c -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -I"$(SYSHDRS)" -o "$(<)" "$(>)"
}
#### C++ ####
rule C++-action
{
tru64cxx65-C++-action $(<) : $(>) ;
}
# Note: DON'T disable warning 1133 -- the compiler is buggy and you
# really can't ignore this one!
actions tru64cxx65-C++-action
{
cxx -c -std strict_ansi -nopure_cname -noimplicit_include -timplicit_local -ptr "$(<[1]:D)/cxx_repository" -msg_display_number -msg_disable 186,450,1115 -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -I"$(SYSHDRS)" -o "$(<)" "$(>)"
}
#### Archive ####
rule Archive-action
{
tru64cxx65-Archive-action $(<) : $(>) ;
}
actions updated together piecemeal tru64cxx65-Archive-action
{
ar -ru$(ARFLAGS) $(<) $(>)
}