Added option to pass CPU features (e.g. vector extensions) to the compiler (GCC/Clang only for now).
This commit is contained in:
parent
202331ba60
commit
75c626c235
23
SConscript
23
SConscript
@ -18,6 +18,20 @@ import uuid
|
||||
|
||||
from SCons.Node import Node
|
||||
|
||||
_GCC_CPU_FEATURES_MAP = {
|
||||
'mmx': '-mmmx',
|
||||
'sse': '-msse',
|
||||
'sse2': '-msse2',
|
||||
'sse3': '-msse3',
|
||||
'ssse3': '-mssse3',
|
||||
'sse4': '-msse4',
|
||||
'sse4a': '-msse4a',
|
||||
'sse4.1': '-msse4.1',
|
||||
'sse4.2': '-msse4.2',
|
||||
'avx': '-mavx',
|
||||
'avx2': '-mavx2'
|
||||
}
|
||||
|
||||
class TargetType(enum.Enum):
|
||||
PROGRAM = 0
|
||||
STATIC_LIBRARY = 1
|
||||
@ -918,7 +932,6 @@ if not config.get('CXX_STANDARD'):
|
||||
config['CXX_STANDARD'] = 'c++23'
|
||||
if not config.get('CXX_NO_EXCEPTIONS'):
|
||||
config['CXX_NO_EXCEPTIONS'] = False
|
||||
|
||||
if not config.get('PREPROCESSOR_PREFIX'):
|
||||
config['PREPROCESSOR_PREFIX'] = config['PROJECT_NAME'].upper() # TODO: may be nicer?
|
||||
|
||||
@ -1144,6 +1157,7 @@ env['SPP_TARGET_DEPENDENCIES'] = []
|
||||
env['SPP_DEPENDENCIES'] = {}
|
||||
env['SPP_RECIPES'] = {}
|
||||
env['SPP_MODULES'] = {} # maps from folder to _Module
|
||||
env['SPP_CPU_FEATURES'] = config.get('USE_CPU_FEATURES', [])
|
||||
|
||||
env['OBJSUFFIX'] = f".{env['BUILD_TYPE']}{env['OBJSUFFIX']}"
|
||||
if variant:
|
||||
@ -1246,6 +1260,13 @@ if env['COMPILER_FAMILY'] == 'gcc' or env['COMPILER_FAMILY'] == 'clang':
|
||||
env.Append(DEPS_CXXFLAGS = ['-fsanitize=address', '-fno-omit-frame-pointer'])
|
||||
env.Append(DEPS_LINKFLAGS = ['-fsanitize=address'])
|
||||
|
||||
for feature in env['SPP_CPU_FEATURES']:
|
||||
flag = _GCC_CPU_FEATURES_MAP.get(feature)
|
||||
if flag is None:
|
||||
_warn(None, f'Unknown or unsupported cpu feature "{feature}" for GCC/Clang.')
|
||||
else:
|
||||
env.Append(CCFLAGS = [flag])
|
||||
|
||||
elif env['COMPILER_FAMILY'] == 'cl':
|
||||
cxx_version_name = {
|
||||
'c++14': 'c++14',
|
||||
|
Loading…
x
Reference in New Issue
Block a user