correct libswscale detection (I hope), add libp3vision

This commit is contained in:
rdb 2009-11-16 12:44:18 +00:00
parent d1cf678e74
commit 30d06fc9cf
2 changed files with 57 additions and 36 deletions

View File

@ -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") SmartPkgEnable("ARTOOLKIT", "", ("AR"), "AR/ar.h")
PkgCheckEnable("FCOLLADA", "", ChooseLib(*fcollada_libs), ("FCollada", "FCollada.h")) SmartPkgEnable("FCOLLADA", "", ChooseLib(*fcollada_libs), ("FCollada", "FCollada.h"))
PkgCheckEnable("FFMPEG", ffmpeg_libs, ffmpeg_libs, ffmpeg_libs) SmartPkgEnable("FFMPEG", ffmpeg_libs, ffmpeg_libs, ffmpeg_libs)
PkgCheckEnable("SWSCALE", "libswscale", "libswscale", "libswscale") SmartPkgEnable("SWSCALE", "libswscale", "libswscale", ("libswscale", "libswscale/swscale.h"))
PkgCheckEnable("FFTW", "", ("fftw", "rfftw"), ("fftw.h", "rfftw.h")) SmartPkgEnable("FFTW", "", ("fftw", "rfftw"), ("fftw.h", "rfftw.h"))
PkgCheckEnable("FMODEX", "", ("fmodex"), ("fmodex", "fmodex/fmod.h")) SmartPkgEnable("FMODEX", "", ("fmodex"), ("fmodex", "fmodex/fmod.h"))
PkgCheckEnable("FREETYPE", "freetype2", ("freetype"), ("freetype2", "freetype2/freetype/freetype.h")) SmartPkgEnable("FREETYPE", "freetype2", ("freetype"), ("freetype2", "freetype2/freetype/freetype.h"))
PkgCheckEnable("GLUT", "gl", ("GL"), ("GL/gl.h", "GL/glu.h"), framework = "OpenGL") SmartPkgEnable("GLUT", "gl", ("GL"), ("GL/gl.h", "GL/glu.h"), framework = "OpenGL")
PkgCheckEnable("GTK2", "gtk+-2.0") SmartPkgEnable("GTK2", "gtk+-2.0")
PkgCheckEnable("NVIDIACG", "", ("Cg"), "Cg/cg.h", framework = "Cg") SmartPkgEnable("NVIDIACG", "", ("Cg"), "Cg/cg.h", framework = "Cg")
PkgCheckEnable("ODE", "", ("ode"), "ode/ode.h") SmartPkgEnable("ODE", "", ("ode"), "ode/ode.h")
PkgCheckEnable("OPENAL", "openal", ("openal"), "AL/al.h", framework = "OpenAL") SmartPkgEnable("OPENAL", "openal", ("openal"), "AL/al.h", framework = "OpenAL")
PkgCheckEnable("OPENCV", "", ("cv", "highgui", "cvaux", "ml", "cxcore"), ("opencv", "opencv/cv.h")) SmartPkgEnable("OPENCV", "", ("cv", "highgui", "cvaux", "ml", "cxcore"), ("opencv", "opencv/cv.h"))
PkgCheckEnable("SQUISH", "", ("squish"), "squish.h") SmartPkgEnable("SQUISH", "", ("squish"), "squish.h")
PkgCheckEnable("TIFF", "", ("tiff"), "tiff.h") SmartPkgEnable("TIFF", "", ("tiff"), "tiff.h")
PkgCheckEnable("VRPN", "", ("vrpn", "quat"), ("vrpn", "quat.h", "vrpn/vrpn_Types.h")) SmartPkgEnable("VRPN", "", ("vrpn", "quat"), ("vrpn", "quat.h", "vrpn/vrpn_Types.h"))
PkgCheckEnable("JPEG", "", ("jpeg"), "jpeglib.h") SmartPkgEnable("JPEG", "", ("jpeg"), "jpeglib.h")
PkgCheckEnable("OPENSSL", "openssl", ("ssl", "crypto"), ("openssl/ssl.h", "openssl/crypto.h")) SmartPkgEnable("OPENSSL", "openssl", ("ssl", "crypto"), ("openssl/ssl.h", "openssl/crypto.h"))
PkgCheckEnable("PNG", "libpng", ("png"), "png.h") SmartPkgEnable("PNG", "libpng", ("png"), "png.h")
PkgCheckEnable("TINYXML", "", ("tinyxml"), "tinyxml.h") SmartPkgEnable("TINYXML", "", ("tinyxml"), "tinyxml.h")
PkgCheckEnable("ZLIB", "", ("z"), "zlib.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") SmartPkgEnable("CGGL", "", ("CgGL"), "Cg/cgGL.h")
PkgCheckEnable("X11", "x11", "X11", ("X11", "X11/Xlib.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_composite1.obj', opts=OPTS, input='grutil_composite1.cxx')
TargetAdd('grutil_composite2.obj', opts=OPTS+["BIGOBJ"], input='grutil_composite2.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
# #

View File

@ -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)