Browse Source

correct libswscale detection (I hope), add libp3vision

rdb 16 years ago
parent
commit
30d06fc9cf
2 changed files with 57 additions and 36 deletions
  1. 50 33
      makepanda/makepanda.py
  2. 7 3
      makepanda/makepandacore.py

+ 50 - 33
makepanda/makepanda.py

@@ -82,12 +82,12 @@ def usage(problem):
     print "  --lzma            (use lzma compression when building installer)"
     print "  --lzma            (use lzma compression when building installer)"
     print "  --threads N       (use the multithreaded build system. see manual)"
     print "  --threads N       (use the multithreaded build system. see manual)"
     print "  --osxtarget N     (the OSX version number to build for (OSX only))"
     print "  --osxtarget N     (the OSX version number to build for (OSX only))"
+    print "  --override \"O=V\"  (override dtool_config/prc option value)"
     print ""
     print ""
     for pkg in PkgListGet():
     for pkg in PkgListGet():
         p = pkg.lower()
         p = pkg.lower()
         print "  --use-%-9s   --no-%-9s (enable/disable use of %s)"%(p, p, pkg)
         print "  --use-%-9s   --no-%-9s (enable/disable use of %s)"%(p, p, pkg)
     print ""
     print ""
-    print "  --override \"O=V\"  (override dtool_config/prc option value)"
     print "  --nothing         (disable every third-party lib)"
     print "  --nothing         (disable every third-party lib)"
     print "  --everything      (enable every third-party lib)"
     print "  --everything      (enable every third-party lib)"
     print ""
     print ""
@@ -417,43 +417,43 @@ if (COMPILER=="LINUX"):
 
 
     #         Name         pkg-config   libs, include(dir)s
     #         Name         pkg-config   libs, include(dir)s
     if (not RUNTIME):
     if (not RUNTIME):
-        PkgCheckEnable("ARTOOLKIT", "",          ("AR"), "AR/ar.h")
-        PkgCheckEnable("FCOLLADA",  "",          ChooseLib(*fcollada_libs), ("FCollada", "FCollada.h"))
-        PkgCheckEnable("FFMPEG",    ffmpeg_libs, ffmpeg_libs, ffmpeg_libs)
-        PkgCheckEnable("SWSCALE",   "libswscale", "libswscale", "libswscale")
-        PkgCheckEnable("FFTW",      "",          ("fftw", "rfftw"), ("fftw.h", "rfftw.h"))
-        PkgCheckEnable("FMODEX",    "",          ("fmodex"), ("fmodex", "fmodex/fmod.h"))
-        PkgCheckEnable("FREETYPE",  "freetype2", ("freetype"), ("freetype2", "freetype2/freetype/freetype.h"))
-        PkgCheckEnable("GLUT",      "gl",        ("GL"), ("GL/gl.h", "GL/glu.h"), framework = "OpenGL")
-        PkgCheckEnable("GTK2",      "gtk+-2.0")
-        PkgCheckEnable("NVIDIACG",  "",          ("Cg"), "Cg/cg.h", framework = "Cg")
-        PkgCheckEnable("ODE",       "",          ("ode"), "ode/ode.h")
-        PkgCheckEnable("OPENAL",    "openal",    ("openal"), "AL/al.h", framework = "OpenAL")
-        PkgCheckEnable("OPENCV",    "",          ("cv", "highgui", "cvaux", "ml", "cxcore"), ("opencv", "opencv/cv.h"))
-        PkgCheckEnable("SQUISH",    "",          ("squish"), "squish.h")
-        PkgCheckEnable("TIFF",      "",          ("tiff"), "tiff.h")
-        PkgCheckEnable("VRPN",      "",          ("vrpn", "quat"), ("vrpn", "quat.h", "vrpn/vrpn_Types.h"))
-    PkgCheckEnable("JPEG",      "",          ("jpeg"), "jpeglib.h")
-    PkgCheckEnable("OPENSSL",   "openssl",   ("ssl", "crypto"), ("openssl/ssl.h", "openssl/crypto.h"))
-    PkgCheckEnable("PNG",       "libpng",    ("png"), "png.h")
-    PkgCheckEnable("TINYXML",   "",          ("tinyxml"), "tinyxml.h")
-    PkgCheckEnable("ZLIB",      "",          ("z"), "zlib.h")
+        SmartPkgEnable("ARTOOLKIT", "",          ("AR"), "AR/ar.h")
+        SmartPkgEnable("FCOLLADA",  "",          ChooseLib(*fcollada_libs), ("FCollada", "FCollada.h"))
+        SmartPkgEnable("FFMPEG",    ffmpeg_libs, ffmpeg_libs, ffmpeg_libs)
+        SmartPkgEnable("SWSCALE",   "libswscale", "libswscale", ("libswscale", "libswscale/swscale.h"))
+        SmartPkgEnable("FFTW",      "",          ("fftw", "rfftw"), ("fftw.h", "rfftw.h"))
+        SmartPkgEnable("FMODEX",    "",          ("fmodex"), ("fmodex", "fmodex/fmod.h"))
+        SmartPkgEnable("FREETYPE",  "freetype2", ("freetype"), ("freetype2", "freetype2/freetype/freetype.h"))
+        SmartPkgEnable("GLUT",      "gl",        ("GL"), ("GL/gl.h", "GL/glu.h"), framework = "OpenGL")
+        SmartPkgEnable("GTK2",      "gtk+-2.0")
+        SmartPkgEnable("NVIDIACG",  "",          ("Cg"), "Cg/cg.h", framework = "Cg")
+        SmartPkgEnable("ODE",       "",          ("ode"), "ode/ode.h")
+        SmartPkgEnable("OPENAL",    "openal",    ("openal"), "AL/al.h", framework = "OpenAL")
+        SmartPkgEnable("OPENCV",    "",          ("cv", "highgui", "cvaux", "ml", "cxcore"), ("opencv", "opencv/cv.h"))
+        SmartPkgEnable("SQUISH",    "",          ("squish"), "squish.h")
+        SmartPkgEnable("TIFF",      "",          ("tiff"), "tiff.h")
+        SmartPkgEnable("VRPN",      "",          ("vrpn", "quat"), ("vrpn", "quat.h", "vrpn/vrpn_Types.h"))
+    SmartPkgEnable("JPEG",      "",          ("jpeg"), "jpeglib.h")
+    SmartPkgEnable("OPENSSL",   "openssl",   ("ssl", "crypto"), ("openssl/ssl.h", "openssl/crypto.h"))
+    SmartPkgEnable("PNG",       "libpng",    ("png"), "png.h")
+    SmartPkgEnable("TINYXML",   "",          ("tinyxml"), "tinyxml.h")
+    SmartPkgEnable("ZLIB",      "",          ("z"), "zlib.h")
     if (RTDIST and sys.platform == "darwin" and "PYTHONVERSION" in SDK):
     if (RTDIST and sys.platform == "darwin" and "PYTHONVERSION" in SDK):
         # Don't use the framework for the OSX rtdist build. I'm afraid it gives problems somewhere.
         # Don't use the framework for the OSX rtdist build. I'm afraid it gives problems somewhere.
-        PkgCheckEnable("PYTHON",    "", SDK["PYTHONVERSION"], (SDK["PYTHONVERSION"], SDK["PYTHONVERSION"] + "/Python.h"), tool = SDK["PYTHONVERSION"] + "-config")
+        SmartPkgEnable("PYTHON",    "", SDK["PYTHONVERSION"], (SDK["PYTHONVERSION"], SDK["PYTHONVERSION"] + "/Python.h"), tool = SDK["PYTHONVERSION"] + "-config")
     elif("PYTHONVERSION" in SDK and not RUNTIME):
     elif("PYTHONVERSION" in SDK and not RUNTIME):
-        PkgCheckEnable("PYTHON",    "", SDK["PYTHONVERSION"], (SDK["PYTHONVERSION"], SDK["PYTHONVERSION"] + "/Python.h"), tool = SDK["PYTHONVERSION"] + "-config", framework = "Python")
+        SmartPkgEnable("PYTHON",    "", SDK["PYTHONVERSION"], (SDK["PYTHONVERSION"], SDK["PYTHONVERSION"] + "/Python.h"), tool = SDK["PYTHONVERSION"] + "-config", framework = "Python")
     if (RTDIST):
     if (RTDIST):
-        PkgCheckEnable("WX",    tool = "wx-config")
+        SmartPkgEnable("WX",    tool = "wx-config")
     if (RUNTIME):
     if (RUNTIME):
-        PkgCheckEnable("NPAPI", "",          (), ("xulrunner-*/stable", "xulrunner-*/stable/npapi.h", "nspr*/prtypes.h", "nspr*"))
+        SmartPkgEnable("NPAPI", "",          (), ("xulrunner-*/stable", "xulrunner-*/stable/npapi.h", "nspr*/prtypes.h", "nspr*"))
     if (sys.platform != "darwin"):
     if (sys.platform != "darwin"):
         # CgGL is covered by the Cg framework, and we don't need X11 components on OSX
         # CgGL is covered by the Cg framework, and we don't need X11 components on OSX
         if (PkgSkip("NVIDIACG")==0 and not RUNTIME):
         if (PkgSkip("NVIDIACG")==0 and not RUNTIME):
-            PkgCheckEnable("CGGL",  "",      ("CgGL"), "Cg/cgGL.h")
-        PkgCheckEnable("X11",   "x11", "X11", ("X11", "X11/Xlib.h"))
+            SmartPkgEnable("CGGL",  "",      ("CgGL"), "Cg/cgGL.h")
+        SmartPkgEnable("X11",   "x11", "X11", ("X11", "X11/Xlib.h"))
         if (not RUNTIME):
         if (not RUNTIME):
-            PkgCheckEnable("XF86DGA", "xxf86dga", "Xxf86dga", "X11/extensions/xf86dga.h")
+            SmartPkgEnable("XF86DGA", "xxf86dga", "Xxf86dga", "X11/extensions/xf86dga.h")
 
 
     if (RUNTIME):
     if (RUNTIME):
         # For the runtime, all packages are required
         # For the runtime, all packages are required
@@ -1703,6 +1703,7 @@ CopyAllHeaders('panda/src/device')
 CopyAllHeaders('panda/src/pnmtext')
 CopyAllHeaders('panda/src/pnmtext')
 CopyAllHeaders('panda/src/text')
 CopyAllHeaders('panda/src/text')
 CopyAllHeaders('panda/src/grutil')
 CopyAllHeaders('panda/src/grutil')
+CopyAllHeaders('panda/src/vision')
 CopyAllHeaders('panda/src/tform')
 CopyAllHeaders('panda/src/tform')
 CopyAllHeaders('panda/src/collide')
 CopyAllHeaders('panda/src/collide')
 CopyAllHeaders('panda/src/parametrics')
 CopyAllHeaders('panda/src/parametrics')
@@ -2361,7 +2362,7 @@ if (not RUNTIME):
 #
 #
 
 
 if (not RUNTIME):
 if (not RUNTIME):
-  OPTS=['DIR:panda/src/movies', 'BUILDING:PANDA', 'FFMPEG', 'DX9', 'DIRECTCAM']
+  OPTS=['DIR:panda/src/movies', 'BUILDING:PANDA', 'FFMPEG']
   TargetAdd('movies_composite1.obj', opts=OPTS, input='movies_composite1.cxx')
   TargetAdd('movies_composite1.obj', opts=OPTS, input='movies_composite1.cxx')
   IGATEFILES=GetDirectoryContents('panda/src/movies', ["*.h", "*_composite.cxx"])
   IGATEFILES=GetDirectoryContents('panda/src/movies', ["*.h", "*_composite.cxx"])
   TargetAdd('libmovies.in', opts=OPTS, input=IGATEFILES)
   TargetAdd('libmovies.in', opts=OPTS, input=IGATEFILES)
@@ -2373,10 +2374,10 @@ if (not RUNTIME):
 #
 #
 
 
 if (not RUNTIME):
 if (not RUNTIME):
-  OPTS=['DIR:panda/src/grutil', 'BUILDING:PANDA',  'FFMPEG', 'ARTOOLKIT', 'OPENCV', 'BIGOBJ']
+  OPTS=['DIR:panda/src/grutil', 'BUILDING:PANDA', 'FFMPEG']
   TargetAdd('grutil_multitexReducer.obj', opts=OPTS, input='multitexReducer.cxx')
   TargetAdd('grutil_multitexReducer.obj', opts=OPTS, input='multitexReducer.cxx')
-  TargetAdd('grutil_composite1.obj', opts=OPTS+["BIGOBJ"], input='grutil_composite1.cxx')
-  TargetAdd('grutil_composite2.obj', opts=OPTS+["BIGOBJ"], input='grutil_composite2.cxx')
+  TargetAdd('grutil_composite1.obj', opts=OPTS, input='grutil_composite1.cxx')
+  TargetAdd('grutil_composite2.obj', opts=OPTS, input='grutil_composite2.cxx')
   IGATEFILES=GetDirectoryContents('panda/src/grutil', ["*.h", "*_composite.cxx"])
   IGATEFILES=GetDirectoryContents('panda/src/grutil', ["*.h", "*_composite.cxx"])
   TargetAdd('libgrutil.in', opts=OPTS, input=IGATEFILES)
   TargetAdd('libgrutil.in', opts=OPTS, input=IGATEFILES)
   TargetAdd('libgrutil.in', opts=['IMOD:panda', 'ILIB:libgrutil', 'SRCDIR:panda/src/grutil'])
   TargetAdd('libgrutil.in', opts=['IMOD:panda', 'ILIB:libgrutil', 'SRCDIR:panda/src/grutil'])
@@ -2595,6 +2596,22 @@ if (not RUNTIME):
   TargetAdd('libpanda.dll', dep='dtool_have_freetype.dat')
   TargetAdd('libpanda.dll', dep='dtool_have_freetype.dat')
   TargetAdd('libpanda.dll', opts=OPTS)
   TargetAdd('libpanda.dll', opts=OPTS)
 
 
+#
+# DIRECTORY: panda/src/vision/
+#
+
+if (not RUNTIME):
+  OPTS=['DIR:panda/src/vision', 'BUILDING:VISION', 'ARTOOLKIT', 'OPENCV', 'DX9', 'DIRECTCAM']
+  TargetAdd('vision_composite1.obj', opts=OPTS, input='vision_composite1.cxx')
+  IGATEFILES=GetDirectoryContents('panda/src/vision', ["*.h", "*_composite.cxx"])
+  TargetAdd('libvision.in', opts=OPTS, input=IGATEFILES)
+  TargetAdd('libvision.in', opts=['IMOD:p3vision', 'ILIB:libvision', 'SRCDIR:panda/src/vision'])
+  TargetAdd('libvision_igate.obj', input='libvision.in', opts=["DEPENDENCYONLY"])
+  TargetAdd('libp3vision.dll', input='vision_composite1.obj')
+  TargetAdd('libp3vision.dll', input='libvision_igate.obj')
+  TargetAdd('libp3vision.dll', input=COMMON_PANDA_LIBS)
+  TargetAdd('libp3vision.dll', opts=OPTS)
+
 #
 #
 # DIRECTORY: panda/src/skel
 # DIRECTORY: panda/src/skel
 #
 #

+ 7 - 3
makepanda/makepandacore.py

@@ -905,7 +905,8 @@ def PkgConfigHavePkg(pkgname, tool = "pkg-config"):
     else:
     else:
         return bool(LocateBinary(tool) != None)
         return bool(LocateBinary(tool) != None)
     result = handle.read().strip()
     result = handle.read().strip()
-    handle.close()
+    if handle.close() != 0:
+        return False
     return bool(len(result) > 0)
     return bool(len(result) > 0)
 
 
 def PkgConfigGetLibs(pkgname, tool = "pkg-config"):
 def PkgConfigGetLibs(pkgname, tool = "pkg-config"):
@@ -1036,7 +1037,7 @@ def ChooseLib(*libs):
     if (len(libs) > 0):
     if (len(libs) > 0):
         return libs[0]
         return libs[0]
 
 
-def PkgCheckEnable(pkg, pkgconfig = None, libs = None, incs = None, defs = None, framework = None, tool = "pkg-config"):
+def SmartPkgEnable(pkg, pkgconfig = None, libs = None, incs = None, defs = None, framework = None, tool = "pkg-config"):
     global PKG_LIST_ALL
     global PKG_LIST_ALL
     if (pkg in PkgListGet() and PkgSkip(pkg)):
     if (pkg in PkgListGet() and PkgSkip(pkg)):
         return
         return
@@ -1076,6 +1077,7 @@ def PkgCheckEnable(pkg, pkgconfig = None, libs = None, incs = None, defs = None,
             LibName(pkg, "-l" + libname)
             LibName(pkg, "-l" + libname)
         for d, v in defs.values():
         for d, v in defs.values():
             DefSymbol(pkg, d, v)
             DefSymbol(pkg, d, v)
+        return
     elif (sys.platform == "darwin" and framework != None):
     elif (sys.platform == "darwin" and framework != None):
         if (os.path.isdir("/Library/Frameworks/%s.framework" % framework) or
         if (os.path.isdir("/Library/Frameworks/%s.framework" % framework) or
             os.path.isdir("/System/Library/Frameworks/%s.framework" % framework) or
             os.path.isdir("/System/Library/Frameworks/%s.framework" % framework) or
@@ -1090,6 +1092,7 @@ def PkgCheckEnable(pkg, pkgconfig = None, libs = None, incs = None, defs = None,
         else:
         else:
             print "%sERROR:%s Could not locate framework %s, aborting build" % (GetColor("red"), GetColor(), framework)
             print "%sERROR:%s Could not locate framework %s, aborting build" % (GetColor("red"), GetColor(), framework)
             exit()
             exit()
+        return
     elif (LocateBinary(tool) != None and (tool != "pkg-config" or pkgconfig != None)):
     elif (LocateBinary(tool) != None and (tool != "pkg-config" or pkgconfig != None)):
         if (isinstance(pkgconfig, str) or tool != "pkg-config"):
         if (isinstance(pkgconfig, str) or tool != "pkg-config"):
             if (PkgConfigHavePkg(pkgconfig, tool)):
             if (PkgConfigHavePkg(pkgconfig, tool)):
@@ -1103,7 +1106,8 @@ def PkgCheckEnable(pkg, pkgconfig = None, libs = None, incs = None, defs = None,
                     have_all_pkgs = False
                     have_all_pkgs = False
             if (have_all_pkgs):
             if (have_all_pkgs):
                 return
                 return
-    elif (pkgconfig != None and libs == None):
+    
+    if (pkgconfig != None and libs == None):
         if (pkg in PkgListGet()):
         if (pkg in PkgListGet()):
             print "%sWARNING:%s Could not locate package %s, excluding from build" % (GetColor("red"), GetColor(), pkgconfig)
             print "%sWARNING:%s Could not locate package %s, excluding from build" % (GetColor("red"), GetColor(), pkgconfig)
             PkgDisable(pkg)
             PkgDisable(pkg)