forked from boostorg/beast
59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
from __future__ import absolute_import, division, print_function, unicode_literals
|
|||
|
|
|
||
|
|
from beast.platform import Platform
|
||
|
|
from beast.util import Dict
|
||
|
|
from beast.env import Tags
|
||
|
|
|
||
|
|
_DEFAULTS = {
|
||
|
|
'': {
|
||
|
|
'BOOST_HOME': None,
|
||
|
|
'CC': 'gcc',
|
||
|
|
'CCFLAGS': None,
|
||
|
|
'CFLAGS': None,
|
||
|
|
'CXX': 'g++',
|
||
|
|
'CPPFLAGS': '-std=c++11 -frtti -fno-strict-aliasing',
|
||
|
|
'CPPPATH': [],
|
||
|
|
'LIBPATH': [],
|
||
|
|
'LIBS': [],
|
||
|
|
'LINKFLAGS': '',
|
||
|
|
},
|
||
|
|
|
||
|
|
'Darwin': {
|
||
|
|
'CC': 'clang',
|
||
|
|
'CXX': 'clang++',
|
||
|
|
'CPPFLAGS': '-x c++ -stdlib=libc++ -std=c++11 -frtti',
|
||
|
|
'LINKFLAGS': '-stdlib=libc++',
|
||
|
|
},
|
||
|
|
|
||
|
|
'FreeBSD': {
|
||
|
|
'CC': 'gcc46',
|
||
|
|
'CXX': 'g++46',
|
||
|
|
'CCFLAGS': '-Wl,-rpath=/usr/local/lib/gcc46',
|
||
|
|
'LINKFLAGS': '-Wl,-rpath=/usr/local/lib/gcc46',
|
||
|
|
'LIBS': ['kvm'],
|
||
|
|
},
|
||
|
|
|
||
|
|
# TODO: specific flags for Windows, Linux platforms.
|
||
|
|
}
|
||
|
|
|
||
|
|
TAGS = {
|
||
|
|
'debug': {
|
||
|
|
'CPPFLAGS': '-g -DDEBUG'
|
||
|
|
},
|
||
|
|
|
||
|
|
'optimize': {
|
||
|
|
'CPPFLAGS': '-O3',
|
||
|
|
},
|
||
|
|
|
||
|
|
'nooptimize': {
|
||
|
|
'CPPFLAGS': '-O0',
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
def get_environment(arguments):
|
||
|
|
tags = Tags.get_tags(arguments)
|
||
|
|
env = Dict.compose_prefix_dicts(Platform.PLATFORM, _DEFAULTS)
|
||
|
|
for tag in tags or []:
|
||
|
|
for k, v in TAGS.get(tag, {}).items():
|
||
|
|
env[k] = '%s %s' % (env[k], v)
|
||
|
|
return env
|