summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2020-02-07 10:41:45 +0100
committerRémi Verschelde <rverschelde@gmail.com>2020-02-07 14:19:51 +0100
commit4e2dbb1bc0845c9458a47f3ba86b184996fb7444 (patch)
tree19d4c50fa5e31a8148533731177342d346fdbd02 /modules
parent7711e9f93bcb6bda690c03899b44762009e82547 (diff)
SCons: Split libmodules.a in folder-based libs
This removes the need for the hacky split_libmodules logic on Windows, since all libs are now of manageable size.
Diffstat (limited to 'modules')
-rw-r--r--modules/SCsub23
1 files changed, 16 insertions, 7 deletions
diff --git a/modules/SCsub b/modules/SCsub
index 75483fd637..5b39b18334 100644
--- a/modules/SCsub
+++ b/modules/SCsub
@@ -8,17 +8,26 @@ env_modules = env.Clone()
Export('env_modules')
+# Header with MODULE_*_ENABLED defines.
env.CommandNoCache("modules_enabled.gen.h", Value(env.module_list), modules_builders.generate_modules_enabled)
-env.modules_sources = []
-env_modules.add_source_files(env.modules_sources, "register_module_types.gen.cpp")
-
+# libmodule_<name>.a for each active module.
for module in env.module_list:
+ env.modules_sources = []
SConscript(module + "/SCsub")
-if env['split_libmodules']:
- env.split_lib("modules", env_lib = env_modules)
-else:
- lib = env_modules.add_library("modules", env.modules_sources)
+ # Some modules are not linked automatically but can be enabled optionally
+ # on iOS, so we handle those specially.
+ if env["platform"] == "iphone" and module in ["arkit", "camera"]:
+ continue
+ lib = env_modules.add_library("module_%s" % module, env.modules_sources)
env.Prepend(LIBS=[lib])
+
+# libmodules.a with only register_module_types.
+# Must be last so that all libmodule_<name>.a libraries are on the right side
+# in the linker command.
+env.modules_sources = []
+env_modules.add_source_files(env.modules_sources, "register_module_types.gen.cpp")
+lib = env_modules.add_library("modules", env.modules_sources)
+env.Prepend(LIBS=[lib])