mirror of
https://github.com/boostorg/build.git
synced 2026-02-14 12:42:11 +00:00
137 lines
4.3 KiB
Plaintext
137 lines
4.3 KiB
Plaintext
# Copyright Vladimir Prus 2004.
|
|
# Copyright Toon Knapen 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)
|
|
|
|
#
|
|
# Boost.Build V2 toolset for the IBM XL C++ compiler
|
|
#
|
|
|
|
import toolset : flags ;
|
|
import feature ;
|
|
import common ;
|
|
import generators ;
|
|
import os ;
|
|
|
|
feature.extend toolset : vacpp ;
|
|
toolset.inherit vacpp : unix ;
|
|
generators.override vacpp.prebuilt : builtin.lib-generator ;
|
|
generators.override vacpp.searched-lib-generator : searched-lib-generator ;
|
|
|
|
# Configure the vacpp toolset
|
|
rule init ( version ? : command * : options * )
|
|
{
|
|
local condition = [
|
|
common.check-init-parameters vacpp : version $(version) ] ;
|
|
|
|
command = [ common.get-invocation-command vacpp : xlC
|
|
: $(command) : "/usr/vacpp/bin/xlC" ] ;
|
|
|
|
common.handle-options vacpp : $(condition) : $(command) : $(options) ;
|
|
}
|
|
|
|
# Declare generators
|
|
generators.register-c-compiler vacpp.compile.c : C : OBJ : <toolset>vacpp ;
|
|
generators.register-c-compiler vacpp.compile.c++ : CPP : OBJ : <toolset>vacpp ;
|
|
|
|
# Allow C++ style comments in C files
|
|
flags vacpp CFLAGS : -qcpluscmt ;
|
|
|
|
# Declare flags
|
|
flags vacpp CFLAGS <optimization>off : -qNOOPTimize ;
|
|
flags vacpp CFLAGS <optimization>speed : -O3 -qstrict ;
|
|
flags vacpp CFLAGS <optimization>space : -O2 -qcompact ;
|
|
|
|
# Discretionary inlining (not recommended)
|
|
flags vacpp CFLAGS <inlining>off : -qnoinline ;
|
|
flags vacpp CFLAGS <inlining>on : -qinline ;
|
|
#flags vacpp CFLAGS <inlining>full : -qinline ;
|
|
flags vacpp CFLAGS <inlining>full : ;
|
|
|
|
# Exception handling
|
|
flags vacpp C++FLAGS <exception-handling>off : -qnoeh ;
|
|
flags vacpp C++FLAGS <exception-handling>on : -qeh ;
|
|
|
|
# Run-time Type Identification
|
|
flags vacpp C++FLAGS <rtti>off : -qnortti ;
|
|
flags vacpp C++FLAGS <rtti>on : -qrtti ;
|
|
|
|
# Enable 64-bit memory addressing model
|
|
flags vacpp CFLAGS <address-model>64 : -q64 ;
|
|
flags vacpp LINKFLAGS <address-model>64 : -q64 ;
|
|
flags vacpp ARFLAGS <address-model>64 : -X 64 ;
|
|
|
|
# Use absolute path when generating debug information
|
|
flags vacpp CFLAGS <debug-symbols>on : -g -qfullpath ;
|
|
flags vacpp LINKFLAGS <debug-symbols>on : -g -qfullpath ;
|
|
flags vacpp LINKFLAGS <debug-symbols>off : -s ;
|
|
|
|
if [ os.name ] = AIX
|
|
{
|
|
# Tell the linker to discard unneeded object files from archive libraries.
|
|
# Please note that the static constructors contained by the discarded object
|
|
# files will not be invoked.
|
|
flags vacpp.compile C++FLAGS : -qfuncsect ;
|
|
flags vacpp.link LINKFLAGS <link>static : -qtwolink ;
|
|
|
|
# Run-time linking
|
|
flags vacpp.link EXE-LINKFLAGS <link>shared : -brtl -qtwolink ;
|
|
}
|
|
else
|
|
{
|
|
# Linux PPC
|
|
flags vacpp.compile CFLAGS <link>shared : -qpic ;
|
|
flags vacpp FINDLIBS : rt ;
|
|
}
|
|
|
|
# Profiling
|
|
flags vacpp CFLAGS <profiling>on : -pg ;
|
|
flags vacpp LINKFLAGS <profiling>on : -pg ;
|
|
|
|
flags vacpp CFLAGS <cflags> ;
|
|
flags vacpp C++FLAGS <cxxflags> ;
|
|
flags vacpp DEFINES <define> ;
|
|
flags vacpp UNDEFS <undef> ;
|
|
flags vacpp HDRS <include> ;
|
|
flags vacpp STDHDRS <sysinclude> ;
|
|
flags vacpp LINKFLAGS <linkflags> ;
|
|
flags vacpp ARFLAGS <arflags> ;
|
|
|
|
flags vacpp LIBPATH <library-path> ;
|
|
flags vacpp NEEDLIBS <library-file> ;
|
|
flags vacpp FINDLIBS <find-shared-library> ;
|
|
flags vacpp FINDLIBS <find-static-library> ;
|
|
|
|
# Select the compiler name according to the threading model.
|
|
flags vacpp VA_C_COMPILER <threading>single : xlc ;
|
|
flags vacpp VA_C_COMPILER <threading>multi : xlc_r ;
|
|
flags vacpp VA_CXX_COMPILER <threading>single : xlC ;
|
|
flags vacpp VA_CXX_COMPILER <threading>multi : xlC_r ;
|
|
|
|
|
|
actions vacpp.link bind NEEDLIBS
|
|
{
|
|
$(VA_CXX_COMPILER) $(EXE-LINKFLAGS) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS)
|
|
}
|
|
|
|
actions vacpp.link.dll bind NEEDLIBS
|
|
{
|
|
xlC_r -G $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS)
|
|
}
|
|
|
|
actions vacpp.compile.c
|
|
{
|
|
$(VA_C_COMPILER) -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)"
|
|
}
|
|
|
|
actions vacpp.compile.c++
|
|
{
|
|
$(VA_CXX_COMPILER) -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)"
|
|
}
|
|
|
|
actions updated together piecemeal vacpp.archive
|
|
{
|
|
ar ru$(ARFLAGS:E="") "$(<)" "$(>)"
|
|
}
|