Browse Source

Support for Max 2010, and new "sdks" dir structure

rdb 16 years ago
parent
commit
1f381749ca
1 changed files with 49 additions and 29 deletions
  1. 49 29
      makepanda/makepandacore.py

+ 49 - 29
makepanda/makepandacore.py

@@ -756,10 +756,39 @@ def PkgConfigEnable(opt, pkgname):
 
 
 SDK = {}
 SDK = {}
 
 
+def GetSdkDir(sdkname, sdkkey = None):
+    # Returns the default SDK directory. If it exists,
+    # and sdkkey is not None, it is put in SDK[sdkkey].
+    # Note: return value may not be an existing path.
+    sdir = "sdks"
+    if (sys.platform.startswith("win")):
+        sdir += "/win"
+        sdir += platform.architecture()[0][:2]
+    elif (sys.platform.startswith("linux")):
+        sdir += "/linux"
+        sdir += platform.architecture()[0][:2]
+    elif (sys.platform == "darwin"):
+        sdir += "/macosx"
+    sdir += "/" + sdkname
+    
+    # If it does not exist, try the old location.
+    if (sdkkey and not os.path.isdir(sdir)):
+        sdir = "sdks/" + sdir
+        if (sys.platform.startswith("linux")):
+            sdir += "-linux"
+            sdir += platform.architecture()[0][:2]
+        elif (sys.platform == "darwin"):
+            sdir += "-osx"
+
+    if (os.path.isdir(sdir)):
+        SDK[sdkkey] = sdir
+    
+    return sdir
+
 def SdkLocateDirectX():
 def SdkLocateDirectX():
     if (sys.platform != "win32"): return
     if (sys.platform != "win32"): return
-    if (os.path.isdir("sdks/directx8")): SDK["DX8"]="sdks/directx8"
-    if (os.path.isdir("sdks/directx9")): SDK["DX9"]="sdks/directx9"
+    GetSdkDir("directx8", "DX8")
+    GetSdkDir("directx9", "DX9")
     if (SDK.has_key("DX9")==0):
     if (SDK.has_key("DX9")==0):
         ## Try to locate the key within the "new" March 2009 location in the registry (yecch):
         ## Try to locate the key within the "new" March 2009 location in the registry (yecch):
         dir = GetRegistryKey("SOFTWARE\\Microsoft\\DirectX\\Microsoft DirectX SDK (March 2009)", "InstallPath")
         dir = GetRegistryKey("SOFTWARE\\Microsoft\\DirectX\\Microsoft DirectX SDK (March 2009)", "InstallPath")
@@ -790,46 +819,37 @@ def SdkLocateDirectX():
 def SdkLocateMaya():
 def SdkLocateMaya():
     for (ver,key) in MAYAVERSIONINFO:
     for (ver,key) in MAYAVERSIONINFO:
         if (PkgSkip(ver)==0 and SDK.has_key(ver)==0):
         if (PkgSkip(ver)==0 and SDK.has_key(ver)==0):
-            if (sys.platform == "win32"):
-                ddir = "sdks/"+ver.lower().replace("x","")
-                if (os.path.isdir(ddir)):
-                    SDK[ver] = ddir
-                else:
+            GetSdkDir(ver.lower().replace("x",""), ver)
+            if (not SDK.has_key(ver)):
+                if (sys.platform == "win32"):
                     for dev in ["Alias|Wavefront","Alias","Autodesk"]:
                     for dev in ["Alias|Wavefront","Alias","Autodesk"]:
                         fullkey="SOFTWARE\\"+dev+"\\Maya\\"+key+"\\Setup\\InstallPath"
                         fullkey="SOFTWARE\\"+dev+"\\Maya\\"+key+"\\Setup\\InstallPath"
                         res = GetRegistryKey(fullkey, "MAYA_INSTALL_LOCATION")
                         res = GetRegistryKey(fullkey, "MAYA_INSTALL_LOCATION")
                         if (res != 0):
                         if (res != 0):
                             res = res.replace("\\", "/").rstrip("/")
                             res = res.replace("\\", "/").rstrip("/")
                             SDK[ver] = res
                             SDK[ver] = res
-            elif (sys.platform == "darwin"):
-                ddir1 = "sdks/"+ver.lower().replace("x","")+"-osx"
-                ddir2 = "/Applications/Autodesk/maya"+key+"/Maya.app/Contents"
-                
-                if (os.path.isdir(ddir1)):   SDK[ver] = ddir1
-                elif (os.path.isdir(ddir2)): SDK[ver] = ddir2
-            else:
-                ddir1 = "sdks/"+ver.lower().replace("x","")+"-linux"+platform.architecture()[0].replace("bit","")
-                if (platform.architecture()[0] == "64bit"):
-                    ddir2 = "/usr/autodesk/maya"+key+"-x64"
-                    ddir3 = "/usr/aw/maya"+key+"-x64"
+                elif (sys.platform == "darwin"):
+                    ddir = "/Applications/Autodesk/maya"+key+"/Maya.app/Contents"
+                    if (os.path.isdir(ddir)): SDK[ver] = ddir
                 else:
                 else:
-                    ddir2 = "/usr/autodesk/maya"+key
-                    ddir3 = "/usr/aw/maya"+key
-                
-                if (os.path.isdir(ddir1)):   SDK[ver] = ddir1
-                elif (os.path.isdir(ddir2)): SDK[ver] = ddir2
-                elif (os.path.isdir(ddir3)): SDK[ver] = ddir3
+                    if (platform.architecture()[0] == "64bit"):
+                        ddir1 = "/usr/autodesk/maya"+key+"-x64"
+                        ddir2 = "/usr/aw/maya"+key+"-x64"
+                    else:
+                        ddir1 = "/usr/autodesk/maya"+key
+                        ddir2 = "/usr/aw/maya"+key
+                    
+                    if (os.path.isdir(ddir1)):   SDK[ver] = ddir1
+                    elif (os.path.isdir(ddir2)): SDK[ver] = ddir2
 
 
 def SdkLocateMax():
 def SdkLocateMax():
     if (sys.platform != "win32"): return
     if (sys.platform != "win32"): return
     for version,key1,key2,subdir in MAXVERSIONINFO:
     for version,key1,key2,subdir in MAXVERSIONINFO:
         if (PkgSkip(version)==0):
         if (PkgSkip(version)==0):
             if (SDK.has_key(version)==0):
             if (SDK.has_key(version)==0):
-                ddir = "sdks/maxsdk"+version.lower()[3:]
-                if (os.path.isdir(ddir)):
-                    SDK[version] = ddir
-                    SDK[version+"CS"] = ddir
-                else:
+                GetSdkDir("maxsdk"+version.lower()[3:], version)
+                GetSdkDir("maxsdk"+version.lower()[3:], version+"CS")
+                if (not SDK.has_key(version)):
                     top = GetRegistryKey(key1,key2)
                     top = GetRegistryKey(key1,key2)
                     if (top != 0):
                     if (top != 0):
                         SDK[version] = top + "maxsdk"
                         SDK[version] = top + "maxsdk"