mirror of
https://github.com/boostorg/build.git
synced 2026-02-15 00:52:16 +00:00
Add intel-vxworks.jam to support building VxWorks with the Intel ICC compiler shipped with VxWorks
This commit is contained in:
185
src/tools/intel-vxworks.jam
Normal file
185
src/tools/intel-vxworks.jam
Normal file
@@ -0,0 +1,185 @@
|
||||
# Copyright Wind River 2017.
|
||||
# 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 intel ;
|
||||
import feature : feature ;
|
||||
import os ;
|
||||
import toolset ;
|
||||
import toolset : flags ;
|
||||
import gcc ;
|
||||
import common ;
|
||||
import errors ;
|
||||
import generators ;
|
||||
|
||||
feature.extend-subfeature toolset intel : platform : vxworks ;
|
||||
|
||||
toolset.inherit-generators intel-vxworks
|
||||
<toolset>intel <toolset-intel:platform>vxworks
|
||||
: gcc
|
||||
# Don't inherit PCH generators. They were not tested, and probably
|
||||
# don't work for this compiler.
|
||||
: gcc.mingw.link gcc.mingw.link.dll gcc.compile.c.pch gcc.compile.c++.pch
|
||||
;
|
||||
|
||||
generators.override intel-vxworks.prebuilt : builtin.lib-generator ;
|
||||
generators.override intel-vxworks.prebuilt : builtin.prebuilt ;
|
||||
generators.override intel-vxworks.searched-lib-generator : searched-lib-generator ;
|
||||
|
||||
toolset.inherit-rules intel-vxworks : gcc ;
|
||||
toolset.inherit-flags intel-vxworks : gcc
|
||||
: <inlining>off <inlining>on <inlining>full <optimization>space
|
||||
<warnings>off <warnings>all <warnings>on
|
||||
<architecture>x86/<address-model>32
|
||||
<architecture>x86/<address-model>64
|
||||
;
|
||||
|
||||
if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
|
||||
{
|
||||
.debug-configuration = true ;
|
||||
}
|
||||
|
||||
# Initializes the intel-vxworks toolset
|
||||
# version in mandatory
|
||||
# name (default icc) is used to invoke the specified intel complier
|
||||
# compile and link options allow you to specify addition command line options for each version
|
||||
rule init ( version ? : command * : options * )
|
||||
{
|
||||
local condition = [ common.check-init-parameters intel-vxworks
|
||||
: version $(version) ] ;
|
||||
|
||||
command = [ common.get-invocation-command intel-vxworks : icc
|
||||
: $(command) : /opt/intel_cc_80/bin ] ;
|
||||
|
||||
common.handle-options intel-vxworks : $(condition) : $(command) : $(options) ;
|
||||
|
||||
gcc.init-link-flags intel-vxworks vxworks $(condition) ;
|
||||
|
||||
# handle <library-path>
|
||||
# local library-path = [ feature.get-values <library-path> : $(options) ] ;
|
||||
# flags intel-vxworks.link USER_OPTIONS $(condition) : [ feature.get-values <dll-path> : $(options) ] ;
|
||||
|
||||
local root = [ feature.get-values <root> : $(options) ] ;
|
||||
local bin ;
|
||||
if $(command) || $(root)
|
||||
{
|
||||
bin ?= [ common.get-absolute-tool-path $(command[-1]) ] ;
|
||||
root ?= $(bin:D) ;
|
||||
|
||||
if $(root)
|
||||
{
|
||||
# Libraries required to run the executable may be in either
|
||||
# $(root)/lib (10.1 and earlier)
|
||||
# or
|
||||
# $(root)/lib/architecture-name (11.0 and later:
|
||||
local lib_path = $(root)/lib $(root:P)/lib/$(bin:B) ;
|
||||
if $(.debug-configuration)
|
||||
{
|
||||
ECHO notice: using intel libraries :: $(condition) :: $(lib_path) ;
|
||||
}
|
||||
flags intel-vxworks.link RUN_PATH $(condition) : $(lib_path) ;
|
||||
}
|
||||
}
|
||||
|
||||
local m = [ MATCH (..).* : $(version) ] ;
|
||||
local n = [ MATCH (.)\\. : $(m) ] ;
|
||||
if $(n) {
|
||||
m = $(n) ;
|
||||
}
|
||||
|
||||
local major = $(m) ;
|
||||
|
||||
|
||||
flags intel-vxworks.compile OPTIONS $(condition)/<inlining>off : -inline-level=0 ;
|
||||
flags intel-vxworks.compile OPTIONS $(condition)/<inlining>on : -inline-level=1 ;
|
||||
flags intel-vxworks.compile OPTIONS $(condition)/<inlining>full : -inline-level=2 ;
|
||||
|
||||
flags intel-vxworks.link OPTIONS $(condition)/<runtime-link>static : [ os.environ LDFLAGS_STATIC ] ;
|
||||
flags intel-vxworks.link OPTIONS $(condition)/<runtime-link>shared : [ os.environ LDFLAGS_DYNAMIC ] ;
|
||||
flags intel-vxworks.compile OPTIONS $(condition)/<link>shared : -fPIC ;
|
||||
|
||||
local minor = [ MATCH ".*\\.(.).*" : $(version) ] ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
SPACE = " " ;
|
||||
|
||||
flags intel-vxworks.compile OPTIONS <cflags> ;
|
||||
flags intel-vxworks.compile.c++ OPTIONS <cxxflags> ;
|
||||
flags intel-vxworks.compile INCLUDES <include> ;
|
||||
|
||||
|
||||
.cpu-type-em64t = prescott nocona core2 corei7 corei7-avx core-avx-i
|
||||
conroe conroe-xe conroe-l allendale merom
|
||||
merom-xe kentsfield kentsfield-xe penryn wolfdale
|
||||
yorksfield nehalem sandy-bridge ivy-bridge haswell ;
|
||||
.cpu-type-amd64 = k8 opteron athlon64 athlon-fx k8-sse3 opteron-sse3
|
||||
athlon64-sse3 amdfam10 barcelona bdver1 bdver2 bdver3 btver1 btver2 ;
|
||||
.cpu-type-x86-64 = $(.cpu-type-em64t) $(.cpu-type-amd64) ;
|
||||
|
||||
#flags intel-vxworks.compile OPTIONS <instruction-set>$(.cpu-type-x86-64)/<address-model>32 : -m32 ; # -mcmodel=small ;
|
||||
#flags intel-vxworks.compile OPTIONS <instruction-set>$(.cpu-type-x86-64)/<address-model>64 : -m64 ; # -mcmodel=large ;
|
||||
|
||||
flags intel-vxworks.compile.c OPTIONS <warnings>off : -w0 ;
|
||||
flags intel-vxworks.compile.c OPTIONS <warnings>on : -w1 ;
|
||||
flags intel-vxworks.compile.c OPTIONS <warnings>all : -w2 ;
|
||||
|
||||
flags intel-vxworks.compile.c++ OPTIONS <warnings>off : -w0 ;
|
||||
flags intel-vxworks.compile.c++ OPTIONS <warnings>on : -w1 ;
|
||||
flags intel-vxworks.compile.c++ OPTIONS <warnings>all : -w2 ;
|
||||
|
||||
actions compile.c
|
||||
{
|
||||
"$(CONFIG_COMMAND)" -xc $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
|
||||
}
|
||||
|
||||
actions compile.c++
|
||||
{
|
||||
"$(CONFIG_COMMAND)" -xc++ $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
|
||||
}
|
||||
|
||||
flags intel-vxworks ARFLAGS <archiveflags> ;
|
||||
|
||||
.AR = ar ;
|
||||
|
||||
rule archive ( targets * : sources * : properties * )
|
||||
{
|
||||
# Always remove archive and start again.
|
||||
# of the archive.
|
||||
#
|
||||
local clean.a = $(targets[1])(clean) ;
|
||||
TEMPORARY $(clean.a) ;
|
||||
NOCARE $(clean.a) ;
|
||||
LOCATE on $(clean.a) = [ on $(targets[1]) return $(LOCATE) ] ;
|
||||
DEPENDS $(clean.a) : $(sources) ;
|
||||
DEPENDS $(targets) : $(clean.a) ;
|
||||
common.RmTemps $(clean.a) : $(targets) ;
|
||||
}
|
||||
|
||||
actions piecemeal archive
|
||||
{
|
||||
"$(.AR)" $(AROPTIONS) rc "$(<)" "$(>)"
|
||||
}
|
||||
|
||||
flags intel-vxworks.link USER_OPTIONS <linkflags> ;
|
||||
|
||||
# Declare actions for linking
|
||||
rule link ( targets * : sources * : properties * )
|
||||
{
|
||||
SPACE on $(targets) = " " ;
|
||||
# Serialize execution of the 'link' action, since
|
||||
# running N links in parallel is just slower.
|
||||
JAM_SEMAPHORE on $(targets) = <s>intel-vxworks-link-semaphore ;
|
||||
}
|
||||
|
||||
actions link bind LIBRARIES
|
||||
{
|
||||
"$(CONFIG_COMMAND)" $(USER_OPTIONS) -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(OPTIONS)
|
||||
}
|
||||
|
||||
actions link.dll bind LIBRARIES
|
||||
{
|
||||
"$(CONFIG_COMMAND)" $(USER_OPTIONS) -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(OPTIONS)
|
||||
}
|
||||
Reference in New Issue
Block a user