Added CXX_NO_EXCEPTIONS config to disable exceptions.
This commit is contained in:
parent
0e22057fc4
commit
42dada23c9
13
SConscript
13
SConscript
@ -632,6 +632,8 @@ if not config.get('PROJECT_NAME'):
|
||||
config['PROJECT_NAME'] = 'PROJECT'
|
||||
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?
|
||||
@ -781,6 +783,7 @@ env['DOWNLOAD_DIR'] = os.path.join(env['SYSTEM_CACHE_DIR'], 'downloaded')
|
||||
env['UPDATE_REPOSITORIES'] = update_repositories
|
||||
|
||||
env['CXX_STANDARD'] = config['CXX_STANDARD'] # make it available to everyone
|
||||
env['CXX_NO_EXCEPTIONS'] = config['CXX_NO_EXCEPTIONS']
|
||||
env['DEPS_CFLAGS'] = []
|
||||
env['DEPS_CXXFLAGS'] = []
|
||||
env['DEPS_LINKFLAGS'] = []
|
||||
@ -878,6 +881,8 @@ elif unity_mode == 'stress': # compile everything in one single file to stress t
|
||||
if env['COMPILER_FAMILY'] == 'gcc' or env['COMPILER_FAMILY'] == 'clang':
|
||||
env.Append(CCFLAGS = ['-Wall', '-Wextra', '-Werror', '-Wstrict-aliasing', '-pedantic'])
|
||||
env.Append(CXXFLAGS = [f'-std={config["CXX_STANDARD"]}'])
|
||||
if env['CXX_NO_EXCEPTIONS']:
|
||||
env.Append(CXXFLAGS = [f'-fno-exceptions'])
|
||||
if build_type != 'release':
|
||||
env.Append(LINKFLAGS = [f'-Wl,-rpath,{env["LIB_DIR"]}'])
|
||||
env['LINKCOM'] = env['LINKCOM'].replace('$_LIBFLAGS', '-Wl,--start-group $_LIBFLAGS -Wl,--end-group')
|
||||
@ -924,15 +929,19 @@ elif env['COMPILER_FAMILY'] == 'cl':
|
||||
'c++23': 'c++latest',
|
||||
'c++26': 'c++latest'
|
||||
}.get(env['CXX_STANDARD'], 'c++14') # default to C++14 for older versions
|
||||
if env['CXX_NO_EXCEPTIONS']:
|
||||
exception_option = ''
|
||||
else:
|
||||
exception_option = '/EHsc'
|
||||
# C4201: nonstandard extension used : nameless struct/union - I use it and want to continue using it
|
||||
# C4127: conditional expression is constant - some libs (CRC, format) don't compile with this enabled # TODO: fix?
|
||||
# C4702: unreachable code, issued after MIJIN_FATAL macro
|
||||
# C4251: missing dll-interface of some std types, yaml-cpp doesn't compile with this enabled
|
||||
# C4275: same as above
|
||||
env.Append(CCFLAGS = ['/W4', '/WX', '/wd4201', '/wd4127', '/wd4702', '/wd4251', '/wd4275', '/bigobj', '/vmg',
|
||||
f'/std:{cxx_version_name}', '/permissive-', '/EHsc', '/FS', '/Zc:char8_t', '/utf-8'])
|
||||
f'/std:{cxx_version_name}', '/permissive-', exception_option, '/FS', '/Zc:char8_t', '/utf-8'])
|
||||
env.Append(CPPDEFINES = ['_CRT_SECURE_NO_WARNINGS']) # I'd like to not use MSVC specific versions of functions because they are "safer" ...
|
||||
env.Append(DEPS_CXXFLAGS = ['/EHsc', '/Zc:char8_t', '/utf-8', '/vmg'])
|
||||
env.Append(DEPS_CXXFLAGS = [exception_option, '/Zc:char8_t', '/utf-8', '/vmg'])
|
||||
if env['SHOW_INCLUDES']:
|
||||
env.Append(CCFLAGS = ['/showIncludes'])
|
||||
if build_type == 'debug':
|
||||
|
Loading…
x
Reference in New Issue
Block a user