summaryrefslogtreecommitdiff
path: root/platform/ios
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2022-07-21 15:15:54 +0200
committerRémi Verschelde <rverschelde@gmail.com>2022-09-08 10:00:02 +0200
commitc2c659db326591519d451d368c4e33c78bb9c1fa (patch)
tree3c93bbc143612aa2d5487b9c0918b74629bdd714 /platform/ios
parent69233093d7e6479b5130bf2c39cbf464a6809c1b (diff)
SCons: Refactor LTO options with `lto=<none|thin|full>`
Adds support for LTO on macOS and Android. We don't have much experience with LTO on these platforms so for now we keep it disabled by default even when `production=yes` is set. Similarly for iOS where we ship object files for the user to link in Xcode so LTO makes builds extremely slow to link. `production=yes` defaults to full LTO. ThinLTO is much faster for LLVM-based compilers but seems to produce bigger binaries (at least for the Web platform).
Diffstat (limited to 'platform/ios')
-rw-r--r--platform/ios/detect.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/platform/ios/detect.py b/platform/ios/detect.py
index 1a8d24d12d..3cfb25cf61 100644
--- a/platform/ios/detect.py
+++ b/platform/ios/detect.py
@@ -39,6 +39,9 @@ def get_flags():
("arch", "arm64"), # Default for convenience.
("tools", False),
("use_volk", False),
+ # Disable by default even if production is set, as it makes linking in Xcode
+ # on exports very slow and that's not what most users expect.
+ ("lto", "none"),
]
@@ -70,9 +73,14 @@ def configure(env):
env.Append(CCFLAGS=["-gdwarf-2", "-O0"])
env.Append(CPPDEFINES=["_DEBUG", ("DEBUG", 1)])
- if env["use_lto"]:
- env.Append(CCFLAGS=["-flto"])
- env.Append(LINKFLAGS=["-flto"])
+ # LTO
+ if env["lto"] != "none":
+ if env["lto"] == "thin":
+ env.Append(CCFLAGS=["-flto=thin"])
+ env.Append(LINKFLAGS=["-flto=thin"])
+ else:
+ env.Append(CCFLAGS=["-flto"])
+ env.Append(LINKFLAGS=["-flto"])
## Compiler configuration