2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-17 01:32:12 +00:00
Files
build/src/tools/pgi.jam
K. Noel Belcourt 19089711ac Add pgi.hpp configuration file for the Portland Group.
Fixed problems with threading, pic code, missing math
library, etc. to get mipspro toolset working better.

Updated pgi toolset to fix various problems with the
link line.



[SVN r39531]
2007-09-25 20:34:36 +00:00

140 lines
5.0 KiB
Plaintext

# Copyright Noel Belcourt 2007.
# 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)
import property ;
import generators ;
import os ;
import toolset : flags ;
import feature ;
import fortran ;
import type ;
import common ;
feature.extend toolset : pgi ;
toolset.inherit pgi : unix ;
generators.override pgi.prebuilt : builtin.lib-generator ;
generators.override pgi.searched-lib-generator : searched-lib-generator ;
# Documentation and toolchain description located
# http://www.pgroup.com/resources/docs.htm
rule init ( version ? : command * : options * )
{
local condition = [ common.check-init-parameters pgi : version $(version) ] ;
local l_command = [ common.get-invocation-command pgi : pgCC : $(command) ] ;
common.handle-options pgi : $(condition) : $(l_command) : $(options) ;
command_c = $(command_c[1--2]) $(l_command[-1]:B=cc) ;
toolset.flags pgi CONFIG_C_COMMAND $(condition) : $(command_c) ;
flags pgi.compile DEFINES $(condition) :
[ feature.get-values <define> : $(options) ] : unchecked ;
# set link flags
flags pgi.link FINDLIBS-ST : [
feature.get-values <find-static-library> : $(options) ] : unchecked ;
flags pgi.link FINDLIBS-SA : [
feature.get-values <find-shared-library> : $(options) ] : unchecked ;
}
# Declare generators
generators.register-c-compiler pgi.compile.c : C : OBJ : <toolset>pgi ;
generators.register-c-compiler pgi.compile.c++ : CPP : OBJ : <toolset>pgi ;
generators.register-fortran-compiler pgi.compile.fortran : FORTRAN : OBJ : <toolset>pgi ;
# Declare flags and actions for compilation
flags pgi.compile OPTIONS <link>shared : -shared -fpic ;
flags pgi.compile OPTIONS <debug-symbols>on : -g ;
flags pgi.compile OPTIONS <profiling>on : -xprofile=tcov ;
flags pgi.compile OPTIONS <optimization>speed : -fast -Mx,8,0x10000000 ;
flags pgi.compile OPTIONS <optimization>space : -xO2 -xspace ;
# flags pgi.compile OPTIONS <threading>multi : -mt ;
flags pgi.compile OPTIONS <warnings>off : -Minform=severe ;
flags pgi.compile OPTIONS <warnings>on : -Minform=warn ;
flags pgi.compile.c++ OPTIONS <inlining>off : -INLINE:none ;
flags pgi.compile OPTIONS <cflags> ;
flags pgi.compile.c++ OPTIONS <cxxflags> ;
flags pgi.compile DEFINES <define> ;
flags pgi.compile INCLUDES <include> ;
flags pgi.compile.fortran OPTIONS <fflags> ;
actions compile.c
{
"$(CONFIG_C_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
}
actions compile.c++
{
"$(CONFIG_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
}
actions compile.fortran
{
"$(CONFIG_F_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
}
# Declare flags and actions for linking
flags pgi.link OPTIONS <debug-symbols>on : -g ;
# Strip the binary when no debugging is needed
flags pgi.link OPTIONS <debug-symbols>off : -s ;
flags pgi.link OPTIONS <profiling>on : -xprofile=tcov ;
flags pgi.link OPTIONS <linkflags> ;
flags pgi.link OPTIONS <link>shared : -fpic ;
flags pgi.link LINKPATH <library-path> ;
flags pgi.link FINDLIBS-ST <find-static-library> ;
flags pgi.link FINDLIBS-SA <find-shared-library> ;
flags pgi.link FINDLIBS-SA <threading>multi : pthread ;
flags pgi.link LIBRARIES <library-file> ;
flags pgi.link LINK-RUNTIME <runtime-link>static : static ;
flags pgi.link LINK-RUNTIME <runtime-link>shared : dynamic ;
flags pgi.link RPATH <dll-path> ;
# On gcc, there are separate options for dll path at runtime and
# link time. On Solaris, there's only one: -R, so we have to use
# it, even though it's bad idea.
flags pgi.link RPATH <xdll-path> ;
rule link ( targets * : sources * : properties * )
{
SPACE on $(targets) = " " ;
}
# reddish can only link statically and, somehow, the presence of -Bdynamic on the link line
# marks the executable as a dynamically linked exec even though no dynamic libraries are supplied.
# Yod on redstorm refuses to load an executable that is dynamically linked.
# removing the dynamic link options should get us where we need to be on redstorm.
# "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME)
actions link bind LIBRARIES
{
"$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Bstatic -l$(FINDLIBS-ST) -Bdynamic -l$(FINDLIBS-SA) -B$(LINK-RUNTIME)
}
# Slight mods for dlls
rule link.dll ( targets * : sources * : properties * )
{
SPACE on $(targets) = " " ;
}
# "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" -h$(<[1]:D=) -G "$(>)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME)
actions link.dll bind LIBRARIES
{
"$(CONFIG_COMMAND)" -shared -fpic $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME)
}
actions updated together piecemeal pgi.archive
{
ar -rc$(ARFLAGS:E=) "$(<)" "$(>)"
}