Przeglądaj źródła

SCons: Pass env to modules can_build method

This allows to disable modules based on the environment,
in particular `env[tools]` which tells us if we are
building the editor or not.
Rémi Verschelde 7 lat temu
rodzic
commit
3334209a73

+ 11 - 1
SConstruct

@@ -396,7 +396,17 @@ if selected_platform in platform_list:
         sys.path.append(tmppath)
         env.current_module = x
         import config
-        if (config.can_build(selected_platform)):
+        # can_build changed number of arguments between 3.0 (1) and 3.1 (2),
+        # so try both to preserve compatibility for 3.0 modules
+        can_build = False
+        try:
+            can_build = config.can_build(env, selected_platform)
+        except TypeError:
+            print("Warning: module '%s' uses a deprecated `can_build` "
+                  "signature in its config.py file, it should be "
+                  "`can_build(env, platform)`." % x)
+            can_build = config.can_build(selected_platform)
+        if (can_build):
             config.configure(env)
             env.module_list.append(x)
             try:

+ 1 - 3
modules/bmp/config.py

@@ -1,7 +1,5 @@
-
-def can_build(platform):
+def can_build(env, platform):
     return True
 
-
 def configure(env):
     pass

+ 1 - 1
modules/bullet/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/csg/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/dds/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/enet/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 3 - 7
modules/etc/config.py

@@ -1,9 +1,5 @@
-def can_build(platform):
-    return True
+def can_build(env, platform):
+    return env['tools']
 
 def configure(env):
-    # Tools only, disabled for non-tools
-    # TODO: Find a cleaner way to achieve that
-    if not env['tools']:
-        env['module_etc_enabled'] = False
-        env.disabled_modules.append("etc")
+    pass

+ 1 - 1
modules/freetype/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/gdnative/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/gdscript/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/gridmap/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/hdr/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/jpg/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/mbedtls/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/mobile_vr/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     # should probably change this to only be true on iOS and Android
     return False
 

+ 1 - 1
modules/mono/config.py

@@ -19,7 +19,7 @@ def find_file_in_dir(directory, files, prefix='', extension=''):
     return ''
 
 
-def can_build(platform):
+def can_build(env, platform):
     if platform in ["javascript"]:
         return False # Not yet supported
     return True

+ 1 - 1
modules/ogg/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/opus/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/pvr/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 2 - 2
modules/recast/config.py

@@ -1,5 +1,5 @@
-def can_build(platform):
-    return platform != "android"
+def can_build(env, platform):
+    return env['tools']
 
 def configure(env):
     pass

+ 1 - 1
modules/regex/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 3 - 7
modules/squish/config.py

@@ -1,9 +1,5 @@
-def can_build(platform):
-    return True
+def can_build(env, platform):
+    return env['tools']
 
 def configure(env):
-    # Tools only, disabled for non-tools
-    # TODO: Find a cleaner way to achieve that
-    if not env['tools']:
-        env['module_squish_enabled'] = False
-        env.disabled_modules.append("squish")
+    pass

+ 1 - 1
modules/stb_vorbis/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/svg/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/tga/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 3 - 5
modules/thekla_unwrap/config.py

@@ -1,7 +1,5 @@
-def can_build(platform):
-    return platform != "android" and platform != "ios"
+def can_build(env, platform):
+    return (env['tools'] and platform not in ["android", "ios"])
 
 def configure(env):
-    if not env['tools']:
-        env['builtin_thekla_atlas'] = False
-        env.disabled_modules.append("thekla_unwrap")
+    pass

+ 1 - 1
modules/theora/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 3 - 7
modules/tinyexr/config.py

@@ -1,9 +1,5 @@
-def can_build(platform):
-    return True
+def can_build(env, platform):
+    return env['tools']
 
 def configure(env):
-    # Tools only, disabled for non-tools
-    # TODO: Find a cleaner way to achieve that
-    if not env['tools']:
-        env['module_tinyexr_enabled'] = False
-        env.disabled_modules.append("tinyexr")
+    pass

+ 1 - 1
modules/visual_script/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 1
modules/vorbis/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 2 - 2
modules/webm/config.py

@@ -1,5 +1,5 @@
-def can_build(platform):
-    return platform != 'iphone'
+def can_build(env, platform):
+    return platform not in ['iphone']
 
 def configure(env):
     pass

+ 1 - 1
modules/webp/config.py

@@ -1,4 +1,4 @@
-def can_build(platform):
+def can_build(env, platform):
     return True
 
 def configure(env):

+ 1 - 3
modules/websocket/config.py

@@ -1,8 +1,6 @@
-
-def can_build(platform):
+def can_build(env, platform):
     return True
 
-
 def configure(env):
     pass