mirror of
https://github.com/boostorg/build.git
synced 2026-02-15 13:02:11 +00:00
96 lines
3.6 KiB
Plaintext
96 lines
3.6 KiB
Plaintext
# Copyright 2017 Rene Rivera
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE.txt or copy at
|
|
# https://www.bfgroup.xyz/b2/LICENSE.txt)
|
|
|
|
import feature ;
|
|
import modules ;
|
|
import os ;
|
|
|
|
.os-names =
|
|
aix android appletv bsd cygwin darwin freebsd haiku hpux iphone linux
|
|
netbsd openbsd osf qnx qnxnto sgi solaris unix unixware windows vms vxworks
|
|
freertos
|
|
|
|
# Not actually an OS -- used for targeting bare metal where object
|
|
# format is ELF. This catches both -elf and -eabi gcc targets as well
|
|
# as other compilers targeting ELF. It is not clear how often we need
|
|
# the 'elf' key as opposed to other bare metal targets, but let us
|
|
# stick with gcc naming.
|
|
elf
|
|
;
|
|
|
|
# Feature used to determine which OS we're on. New <target-os> and <host-os>
|
|
# features should be used instead.
|
|
local os = [ modules.peek : OS ] ;
|
|
feature.feature os : $(os) : propagated link-incompatible ;
|
|
|
|
# Translates from bjam current OS to the os tags used in host-os and
|
|
# target-os, i.e. returns the running host-os.
|
|
#
|
|
local rule default-host-os ( )
|
|
{
|
|
local host-os ;
|
|
if [ os.name ] in $(.os-names:U)
|
|
{
|
|
host-os = [ os.name ] ;
|
|
}
|
|
else
|
|
{
|
|
switch [ os.name ]
|
|
{
|
|
case NT : host-os = windows ;
|
|
case AS400 : host-os = unix ;
|
|
case MINGW : host-os = windows ;
|
|
case BSDI : host-os = bsd ;
|
|
case COHERENT : host-os = unix ;
|
|
case DRAGONFLYBSD : host-os = bsd ;
|
|
case IRIX : host-os = sgi ;
|
|
case HAIKU : host-os = haiku ;
|
|
case MACOSX : host-os = darwin ;
|
|
case KFREEBSD : host-os = freebsd ;
|
|
case LINUX : host-os = linux ;
|
|
case VMS : host-os = vms ;
|
|
case SUNOS :
|
|
ECHO
|
|
"SunOS is not a supported operating system."
|
|
"We believe last version of SunOS was released in 1992, "
|
|
"so if you get this message, something is very wrong with "
|
|
"configuration logic. Please report this as a bug. " ;
|
|
EXIT ;
|
|
case * : host-os = unix ;
|
|
}
|
|
}
|
|
return $(host-os:L) ;
|
|
}
|
|
|
|
|
|
# The two OS features define a known set of abstract OS names. The host-os is
|
|
# the OS under which bjam is running. Even though this should really be a fixed
|
|
# property we need to list all the values to prevent unknown value errors. Both
|
|
# set the default value to the current OS to account for the default use case of
|
|
# building on the target OS.
|
|
feature.feature host-os : $(.os-names) ;
|
|
feature.set-default host-os : [ default-host-os ] ;
|
|
|
|
#| tag::doc[]
|
|
|
|
[[bbv2.builtin.features.target-os]]`target-os`::
|
|
*Allowed values:* `aix`, `android`, `appletv`, `bsd`, `cygwin`, `darwin`,
|
|
`freebsd`, `haiku`, `hpux`, `iphone`, `linux`, `netbsd`, `openbsd`, `osf`,
|
|
`qnx`, `qnxnto`, `sgi`, `solaris`, `unix`, `unixware`, `windows`, `vms`,
|
|
`vxworks`, `freertos`.
|
|
+
|
|
Specifies the operating system for which the code is to be generated. The
|
|
compiler you used should be the compiler for that operating system. This option
|
|
causes B2 to use naming conventions suitable for that operating
|
|
system, and adjust build process accordingly. For example, with gcc, it
|
|
controls if import libraries are produced for shared libraries or not.
|
|
+
|
|
See the section <<Cross-compilation>> for details of cross-compilation.
|
|
|
|
|# # end::doc[]
|
|
|
|
feature.feature target-os : $(.os-names) : propagated link-incompatible ;
|
|
feature.set-default target-os : [ default-host-os ] ;
|