SCons: Keep exceptions and rtti on Android, iOS and HTML5 tools build

Those were disable to keep size small, and on Android avoid the dependency on the STL,
but for tools build (editor) this is not really a concern.

Note: as of today it's not possible to build tools=yes for those platforms, but this
change is one of the necessary steps to enable it.

Fixes #25262.
This commit is contained in:
Rémi Verschelde 2019-05-20 16:47:32 +02:00
parent 9643b2b6de
commit 4b20959d99
3 changed files with 15 additions and 10 deletions

View File

@ -214,13 +214,14 @@ def configure(env):
lib_sysroot = env["ANDROID_NDK_ROOT"] + "/platforms/" + env['ndk_platform'] + "/" + env['ARCH'] lib_sysroot = env["ANDROID_NDK_ROOT"] + "/platforms/" + env['ndk_platform'] + "/" + env['ARCH']
## Compile flags ## Compile flags
# Disable exceptions and rtti on non-tools (template) builds
if env['android_stl']: if env['tools'] or env['android_stl']:
env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/include"]) env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/include"])
env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++abi/include"]) env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++abi/include"])
env.Append(CXXFLAGS=['-frtti', "-std=gnu++14"]) env.Append(CXXFLAGS=['-frtti', "-std=gnu++14"])
else: else:
env.Append(CXXFLAGS=['-fno-rtti', '-fno-exceptions']) env.Append(CXXFLAGS=['-fno-rtti', '-fno-exceptions'])
# Don't use dynamic_cast, necessary with no-rtti.
env.Append(CPPFLAGS=['-DNO_SAFE_CAST']) env.Append(CPPFLAGS=['-DNO_SAFE_CAST'])
ndk_version = get_ndk_version(env["ANDROID_NDK_ROOT"]) ndk_version = get_ndk_version(env["ANDROID_NDK_ROOT"])

View File

@ -115,10 +115,12 @@ def configure(env):
env.Append(CPPFLAGS=['-DNEED_LONG_INT']) env.Append(CPPFLAGS=['-DNEED_LONG_INT'])
env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON']) env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
if env['ios_exceptions']: # Disable exceptions on non-tools (template) builds
env.Append(CCFLAGS=['-fexceptions']) if not env['tools']:
else: if env['ios_exceptions']:
env.Append(CCFLAGS=['-fno-exceptions']) env.Append(CCFLAGS=['-fexceptions'])
else:
env.Append(CCFLAGS=['-fno-exceptions'])
## Link flags ## Link flags

View File

@ -110,10 +110,12 @@ def configure(env):
# once feasible also consider memory buffer size issues. # once feasible also consider memory buffer size issues.
env.Append(CPPDEFINES=['NO_THREADS']) env.Append(CPPDEFINES=['NO_THREADS'])
# These flags help keep the file size down. # Disable exceptions and rtti on non-tools (template) builds
env.Append(CCFLAGS=['-fno-exceptions', '-fno-rtti']) if not env['tools']:
# Don't use dynamic_cast, necessary with no-rtti. # These flags help keep the file size down.
env.Append(CPPDEFINES=['NO_SAFE_CAST']) env.Append(CCFLAGS=['-fno-exceptions', '-fno-rtti'])
# Don't use dynamic_cast, necessary with no-rtti.
env.Append(CPPDEFINES=['NO_SAFE_CAST'])
if env['javascript_eval']: if env['javascript_eval']:
env.Append(CPPDEFINES=['JAVASCRIPT_EVAL_ENABLED']) env.Append(CPPDEFINES=['JAVASCRIPT_EVAL_ENABLED'])