[Bf-blender-cvs] [cb0a5ad] master: SCons: cleaner determination of 32-bit/64-bit builds

Lawrence D'Oliveiro noreply at git.blender.org
Tue Feb 4 19:10:17 CET 2014


Commit: cb0a5adc562b872c70675a032d85a30438e72192
Author: Lawrence D'Oliveiro
Date:   Tue Feb 4 18:55:32 2014 +0100
https://developer.blender.org/rBcb0a5adc562b872c70675a032d85a30438e72192

SCons: cleaner determination of 32-bit/64-bit builds

Try not to be x86-centric, remove unneeded blenderdeps variable.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D240

===================================================================

M	SConstruct
M	build_files/scons/config/Modules/FindPython.py
M	build_files/scons/tools/Blender.py

===================================================================

diff --git a/SConstruct b/SConstruct
index bff6d80..b0c7750 100644
--- a/SConstruct
+++ b/SConstruct
@@ -33,14 +33,6 @@
 # TODO: directory copy functions are far too complicated, see:
 #       http://wiki.blender.org/index.php/User:Ideasman42/SConsNotSimpleInstallingFiles
 
-import platform as pltfrm
-
-# Need a better way to do this. Automagical maybe is not the best thing, maybe it is.
-if pltfrm.architecture()[0] == '64bit':
-    bitness = 64
-else:
-    bitness = 32
-
 import sys
 import os
 import os.path
@@ -112,16 +104,10 @@ btools.print_targets(B.targets, B.bc)
 # handling cmd line arguments & config file
 
 # bitness stuff
-tempbitness = int(B.arguments.get('BF_BITNESS', bitness)) # default to bitness found as per starting python
-if tempbitness in (32, 64): # only set if 32 or 64 has been given
-    bitness = int(tempbitness)
-
-if bitness:
-    B.bitness = bitness
-else:
+tempbitness = int(B.arguments.get('BF_BITNESS', B.bitness)) # default to bitness found as per starting python
+if tempbitness in B.allowed_bitnesses.values() :
     B.bitness = tempbitness
 
-
 # first check cmdline for toolset and we create env to work on
 quickie = B.arguments.get('BF_QUICK', None)
 quickdebug = B.arguments.get('BF_QUICKDEBUG', None)
@@ -149,7 +135,7 @@ if toolset:
         if env:
             btools.SetupSpawn(env)
 else:
-    if bitness==64 and platform=='win32':
+    if B.bitness==64 and platform=='win32':
         env = BlenderEnvironment(ENV = os.environ, MSVS_ARCH='amd64', TARGET_ARCH='x86_64', MSVC_VERSION=vcver)
     else:
         env = BlenderEnvironment(ENV = os.environ, TARGET_ARCH='x86', MSVC_VERSION=vcver)
@@ -167,9 +153,9 @@ if cxx:
 
 if sys.platform=='win32':
     if env['CC'] in ['cl', 'cl.exe']:
-        platform = 'win64-vc' if bitness == 64 else 'win32-vc'
+        platform = 'win64-vc' if B.bitness == 64 else 'win32-vc'
     elif env['CC'] in ['gcc']:
-        platform = 'win64-mingw' if bitness == 64 else 'win32-mingw'
+        platform = 'win64-mingw' if B.bitness == 64 else 'win32-mingw'
 
 if 'mingw' in platform:
     print "Setting custom spawn function"
@@ -219,7 +205,7 @@ opts = btools.read_opts(env, optfiles, B.arguments)
 opts.Update(env)
 
 if sys.platform=='win32':
-    if bitness==64:
+    if B.bitness==64:
         env.Append(CPPFLAGS=['-DWIN64']) # -DWIN32 needed too, as it's used all over to target Windows generally
 
 if not env['BF_FANCY']:
@@ -1111,7 +1097,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'):
     # Since the thumb handler is loaded by Explorer, architecture is
     # strict: the x86 build fails on x64 Windows. We need to ship
     # both builds in x86 packages.
-    if bitness == 32:
+    if B.bitness == 32:
         dllsources.append('${LCGDIR}/thumbhandler/lib/BlendThumb.dll')
     dllsources.append('${LCGDIR}/thumbhandler/lib/BlendThumb64.dll')
 
diff --git a/build_files/scons/config/Modules/FindPython.py b/build_files/scons/config/Modules/FindPython.py
index 03c9d54..f7956e9 100644
--- a/build_files/scons/config/Modules/FindPython.py
+++ b/build_files/scons/config/Modules/FindPython.py
@@ -1,4 +1,5 @@
 import os
+import platform
 
 def FindPython():
     all_abi_flags = ['m', 'mu', '']
@@ -7,7 +8,7 @@ def FindPython():
     abi_flags = "m"  # Most common for linux distros
     version = "3.3"
 
-    _arch = "x86_64-linux-gnu"
+    _arch = platform.uname()[4] + "-linux-gnu"
 
     # Determine ABI flags used on this system
     include = os.path.join(python, "include")
diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py
index ec528c4..ac001b5 100644
--- a/build_files/scons/tools/Blender.py
+++ b/build_files/scons/tools/Blender.py
@@ -15,8 +15,8 @@ to kill any code duplication
 """
 
 import os
-import os.path
 import string
+import ctypes as ct
 import glob
 import time
 import sys
@@ -51,10 +51,8 @@ program_list = [] # A list holding Nodes to final binaries, used to create insta
 arguments = None
 targets = None
 resources = []
-bitness = 0
-
-#some internals
-blenderdeps = [] # don't manipulate this one outside this module!
+allowed_bitnesses = {4 : 32, 8 : 64} # only expecting 32-bit or 64-bit
+bitness = allowed_bitnesses[ct.sizeof(ct.c_void_p)]
 
 ##### LIB STUFF ##########




More information about the Bf-blender-cvs mailing list