From 6532ebd987540b543a4e2b7cedc7770508a631a5 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 30 Aug 2009 14:27:03 +0000 Subject: [PATCH] New runtime building mechanism, packaging system, and python wrappers to TinyXML --- makepanda/makepanda.py | 335 ++++++++++++++++--------------------- makepanda/makepandacore.py | 4 +- 2 files changed, 148 insertions(+), 191 deletions(-) diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index fc6d487e3a..fbd1e9906b 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -33,18 +33,21 @@ COMPILER=0 THIRDPARTYLIBS=0 VC90CRTVERSION="" INSTALLER=0 -RUNTIME=0 GENMAN=0 VERBOSE=1 COMPRESSOR="zlib" THREADCOUNT=0 CFLAGS="" +RUNTIME=0 +RUNTIME_VERSION="dev" +RUNTIME_PLATFORM="other" +RUNTIME_DISTRIBUTOR="" PkgListSet(MAYAVERSIONS + MAXVERSIONS + DXVERSIONS + [ "PYTHON","ZLIB","PNG","JPEG","TIFF","VRPN","TINYXML", "FMODEX","OPENAL","NVIDIACG","OPENSSL","FREETYPE", "FFTW","ARTOOLKIT","SQUISH","ODE","DIRECTCAM","NPAPI", - "OPENCV","FFMPEG","FCOLLADA","PLUGIN","PANDATOOL" + "OPENCV","FFMPEG","FCOLLADA","PANDATOOL" ]) CheckPandaSourceTree() @@ -56,32 +59,6 @@ def keyboardInterruptHandler(x,y): signal.signal(signal.SIGINT, keyboardInterruptHandler) -######################################################################## -## -## Store version and platform for the runtime build. -## -######################################################################## - -RUNTIME_VERSION = "dev" -RUNTIME_PLATFORM = "other" -if (sys.platform.startswith("win")): - if (platform.architecture()[0] == "64bit"): - RUNTIME_PLATFORM = "win64" - else: - RUNTIME_PLATFORM = "win32" -elif (sys.platform.startswith("linux")): - if (platform.architecture()[0] == "64bit"): - RUNTIME_PLATFORM = "linux.amd64" - else: - RUNTIME_PLATFORM = "linux.i386" -elif (sys.platform == "darwin"): - RUNTIME_PLATFORM = "osx.fat" -elif (sys.platform.startswith("freebsd")): - if (platform.architecture()[0] == "64bit"): - RUNTIME_PLATFORM = "freebsd.amd64" - else: - RUNTIME_PLATFORM = "freebsd.i386" - ######################################################################## ## ## Command-line parser. @@ -119,14 +96,14 @@ def usage(problem): os._exit(0) def parseopts(args): - global INSTALLER,RUNTIME,GENMAN + global INSTALLER,RUNTIME,GENMAN,RUNTIME_DISTRIBUTOR global VERSION,COMPRESSOR,VERBOSE,THREADCOUNT longopts = [ - "help", + "help","distributor=", "optimize=","everything","nothing","installer","runtime", "version=","lzma","no-python","threads=","outputdir="] anything = 0 - optimize = "3" + optimize = "" for pkg in PkgListGet(): longopts.append("no-"+pkg.lower()) for pkg in PkgListGet(): longopts.append("use-"+pkg.lower()) try: @@ -135,6 +112,7 @@ def parseopts(args): if (option=="--help"): raise "usage" elif (option=="--optimize"): optimize=value elif (option=="--installer"): INSTALLER=1 + elif (option=="--distributor"): RUNTIME_DISTRIBUTOR=value elif (option=="--runtime"): RUNTIME=1 elif (option=="--genman"): GENMAN=1 elif (option=="--everything"): PkgEnableAll() @@ -157,6 +135,8 @@ def parseopts(args): anything = 1 except: usage(0) if (anything==0): usage(0) + if (optimize=="" and RUNTIME): optimize = "4" + elif (optimize==""): optimize = "3" try: SetOptimize(int(optimize)) assert GetOptimize() in [1, 2, 3, 4] @@ -172,12 +152,48 @@ parseopts(sys.argv[1:]) ######################################################################## if ("CFLAGS" in os.environ): - CFLAGS=os.environ["CFLAGS"] + CFLAGS = os.environ["CFLAGS"] if ("RPM_OPT_FLAGS" in os.environ): - CFLAGS+=os.environ["RPM_OPT_FLAGS"] + CFLAGS += " " + os.environ["RPM_OPT_FLAGS"] +CFLAGS = CFLAGS.strip() os.environ["MAKEPANDA"] = os.path.abspath(sys.argv[0]) +######################################################################## +## +## Store version and platform for the runtime build. +## +######################################################################## + +if (RUNTIME): + PkgDisable("PANDATOOL") + + if (RUNTIME_DISTRIBUTOR.strip() == ""): + exit("You must provide a valid distributor name when making a plugin runtime build!") + + if (not CUSTOM_OUTPUTDIR): + SetOutputDir("built_" + RUNTIME_DISTRIBUTOR.strip()) + + RUNTIME_VERSION = RUNTIME_DISTRIBUTOR.strip() + "_" + VERSION[:3] + +if (sys.platform.startswith("win")): + if (platform.architecture()[0] == "64bit"): + RUNTIME_PLATFORM = "win64" + else: + RUNTIME_PLATFORM = "win32" +elif (sys.platform.startswith("linux")): + if (platform.architecture()[0] == "64bit"): + RUNTIME_PLATFORM = "linux.amd64" + else: + RUNTIME_PLATFORM = "linux.i386" +elif (sys.platform == "darwin"): + RUNTIME_PLATFORM = "osx.fat" +elif (sys.platform.startswith("freebsd")): + if (platform.architecture()[0] == "64bit"): + RUNTIME_PLATFORM = "freebsd.amd64" + else: + RUNTIME_PLATFORM = "freebsd.i386" + ######################################################################## ## ## Load the dependency cache. @@ -229,6 +245,7 @@ if (sys.platform == "win32"): else: CheckLinkerLibraryPath() COMPILER="LINUX" + if (sys.platform == "darwin"): THIRDPARTYLIBS="thirdparty/darwin-libs-a/" elif (sys.platform.startswith("linux")): @@ -250,6 +267,7 @@ AddToPathEnv("PYTHONPATH", builtdir) if (sys.platform.startswith("win")): AddToPathEnv("PYTHONPATH", os.path.join(builtdir, "bin")) else: + AddToPathEnv("PATH", os.path.join(builtdir, "bin")) AddToPathEnv("PYTHONPATH", os.path.join(builtdir, "lib")) ########################################################################################## @@ -264,8 +282,8 @@ if (sys.platform.startswith("win")): if (INSTALLER) and (PkgSkip("PYTHON")): exit("Cannot build installer without python") -if (RUNTIME) and (PkgSkip("PLUGIN") or PkgSkip("TINYXML")): - exit("Cannot build runtime without plugin or tinyxml") +if (RUNTIME) and (PkgSkip("TINYXML")): + exit("Cannot build runtime without tinyxml") ######################################################################## ## @@ -1234,7 +1252,7 @@ def WriteConfigSettings(): if (sys.platform.startswith("win") and platform.architecture()[0] == "64bit"): dtool_config["SIMPLE_THREADS"] = 'UNDEF' - if (PkgSkip("PLUGIN")==0): + if (RUNTIME): plugin_config["PANDA_PACKAGE_HOST_URL"] = "http://runtime.panda3d.org/" #plugin_config["P3D_PLUGIN_LOG_DIRECTORY"] = "" #plugin_config["P3D_PLUGIN_LOG_BASENAME1"] = "" @@ -1260,7 +1278,7 @@ def WriteConfigSettings(): del dtool_config[key] ConditionalWriteFile(GetOutputDir() + '/include/dtool_config.h', conf) - if (PkgSkip("PLUGIN")==0): + if (RUNTIME): conf = "/* p3d_plugin_config.h. Generated automatically by makepanda.py */\n" for key in plugin_config.keys(): val = plugin_config[key] @@ -1301,8 +1319,6 @@ PANDAVERSION_H=""" #define PANDA_VERSION NVERSION #define PANDA_VERSION_STR "VERSION1.VERSION2.VERSION3" #define PANDA_DISTRIBUTOR "makepanda" -#define PANDA_PACKAGE_VERSION_STR "" -#define PANDA_PACKAGE_HOST_URL "http://runtime.panda3d.org/" """ CHECKPANDAVERSION_CXX=""" @@ -1331,6 +1347,9 @@ def CreatePandaVersionFiles(): pandaversion_h = pandaversion_h.replace("VERSION2",str(version2)) pandaversion_h = pandaversion_h.replace("VERSION3",str(version3)) pandaversion_h = pandaversion_h.replace("NVERSION",str(nversion)) + if (RUNTIME): + pandaversion_h += "\n#define PANDA_PACKAGE_VERSION_STR \"" + RUNTIME_VERSION + "\"" + pandaversion_h += "\n#define PANDA_PACKAGE_HOST_URL \"http://runtime.panda3d.org/\"" checkpandaversion_cxx = CHECKPANDAVERSION_CXX.replace("VERSION1",str(version1)) checkpandaversion_cxx = checkpandaversion_cxx.replace("VERSION2",str(version2)) @@ -1456,6 +1475,7 @@ DeleteCVS(GetOutputDir()+'/include/parser-inc') CopyAllHeaders('dtool/src/dtoolbase') CopyAllHeaders('dtool/src/dtoolutil', skip=["pandaVersion.h", "checkPandaVersion.h"]) +CopyFile(GetOutputDir()+'/include/','dtool/src/dtoolutil/vector_src.cxx') CopyAllHeaders('dtool/metalibs/dtool') CopyAllHeaders('dtool/src/cppparser') CopyAllHeaders('dtool/src/prc', skip=["prc_parameters.h"]) @@ -1550,53 +1570,54 @@ CopyAllHeaders('direct/src/showbase') CopyAllHeaders('direct/metalibs/direct') CopyAllHeaders('direct/src/dcparse') CopyAllHeaders('direct/src/heapq') -CopyAllHeaders('direct/src/plugin', skip=["p3d_plugin_config.h"]) -CopyAllHeaders('direct/src/plugin_npapi') -CopyAllHeaders('direct/src/plugin_standalone') +if (RUNTIME): + CopyAllHeaders('direct/src/plugin', skip=["p3d_plugin_config.h"]) + CopyAllHeaders('direct/src/plugin_npapi') + CopyAllHeaders('direct/src/plugin_standalone') -CopyAllHeaders('pandatool/src/pandatoolbase') -CopyAllHeaders('pandatool/src/converter') -CopyAllHeaders('pandatool/src/progbase') -CopyAllHeaders('pandatool/src/eggbase') -CopyAllHeaders('pandatool/src/bam') -CopyAllHeaders('pandatool/src/cvscopy') -CopyAllHeaders('pandatool/src/daeegg') -CopyAllHeaders('pandatool/src/daeprogs') -CopyAllHeaders('pandatool/src/dxf') -CopyAllHeaders('pandatool/src/dxfegg') -CopyAllHeaders('pandatool/src/dxfprogs') -CopyAllHeaders('pandatool/src/palettizer') -CopyAllHeaders('pandatool/src/egg-mkfont') -CopyAllHeaders('pandatool/src/eggcharbase') -CopyAllHeaders('pandatool/src/egg-optchar') -CopyAllHeaders('pandatool/src/egg-palettize') -CopyAllHeaders('pandatool/src/egg-qtess') -CopyAllHeaders('pandatool/src/eggprogs') -CopyAllHeaders('pandatool/src/flt') -CopyAllHeaders('pandatool/src/fltegg') -CopyAllHeaders('pandatool/src/fltprogs') -CopyAllHeaders('pandatool/src/imagebase') -CopyAllHeaders('pandatool/src/imageprogs') -CopyAllHeaders('pandatool/src/lwo') -CopyAllHeaders('pandatool/src/lwoegg') -CopyAllHeaders('pandatool/src/lwoprogs') -CopyAllHeaders('pandatool/src/maya') -CopyAllHeaders('pandatool/src/mayaegg') -CopyAllHeaders('pandatool/src/maxegg') -CopyAllHeaders('pandatool/src/maxprogs') -CopyAllHeaders('pandatool/src/vrml') -CopyAllHeaders('pandatool/src/vrmlegg') -CopyAllHeaders('pandatool/src/xfile') -CopyAllHeaders('pandatool/src/xfileegg') -CopyAllHeaders('pandatool/src/ptloader') -CopyAllHeaders('pandatool/src/miscprogs') -CopyAllHeaders('pandatool/src/pstatserver') -CopyAllHeaders('pandatool/src/softprogs') -CopyAllHeaders('pandatool/src/text-stats') -CopyAllHeaders('pandatool/src/vrmlprogs') -CopyAllHeaders('pandatool/src/win-stats') -CopyAllHeaders('pandatool/src/xfileprogs') -CopyFile(GetOutputDir()+'/include/','dtool/src/dtoolutil/vector_src.cxx') +if (PkgSkip("PANDATOOL")==0): + CopyAllHeaders('pandatool/src/pandatoolbase') + CopyAllHeaders('pandatool/src/converter') + CopyAllHeaders('pandatool/src/progbase') + CopyAllHeaders('pandatool/src/eggbase') + CopyAllHeaders('pandatool/src/bam') + CopyAllHeaders('pandatool/src/cvscopy') + CopyAllHeaders('pandatool/src/daeegg') + CopyAllHeaders('pandatool/src/daeprogs') + CopyAllHeaders('pandatool/src/dxf') + CopyAllHeaders('pandatool/src/dxfegg') + CopyAllHeaders('pandatool/src/dxfprogs') + CopyAllHeaders('pandatool/src/palettizer') + CopyAllHeaders('pandatool/src/egg-mkfont') + CopyAllHeaders('pandatool/src/eggcharbase') + CopyAllHeaders('pandatool/src/egg-optchar') + CopyAllHeaders('pandatool/src/egg-palettize') + CopyAllHeaders('pandatool/src/egg-qtess') + CopyAllHeaders('pandatool/src/eggprogs') + CopyAllHeaders('pandatool/src/flt') + CopyAllHeaders('pandatool/src/fltegg') + CopyAllHeaders('pandatool/src/fltprogs') + CopyAllHeaders('pandatool/src/imagebase') + CopyAllHeaders('pandatool/src/imageprogs') + CopyAllHeaders('pandatool/src/lwo') + CopyAllHeaders('pandatool/src/lwoegg') + CopyAllHeaders('pandatool/src/lwoprogs') + CopyAllHeaders('pandatool/src/maya') + CopyAllHeaders('pandatool/src/mayaegg') + CopyAllHeaders('pandatool/src/maxegg') + CopyAllHeaders('pandatool/src/maxprogs') + CopyAllHeaders('pandatool/src/vrml') + CopyAllHeaders('pandatool/src/vrmlegg') + CopyAllHeaders('pandatool/src/xfile') + CopyAllHeaders('pandatool/src/xfileegg') + CopyAllHeaders('pandatool/src/ptloader') + CopyAllHeaders('pandatool/src/miscprogs') + CopyAllHeaders('pandatool/src/pstatserver') + CopyAllHeaders('pandatool/src/softprogs') + CopyAllHeaders('pandatool/src/text-stats') + CopyAllHeaders('pandatool/src/vrmlprogs') + CopyAllHeaders('pandatool/src/win-stats') + CopyAllHeaders('pandatool/src/xfileprogs') ######################################################################## # @@ -1656,7 +1677,7 @@ TargetAdd('dtoolbase_composite2.obj', opts=OPTS, input='dtoolbase_composite2.cxx TargetAdd('dtoolbase_lookup3.obj', opts=OPTS, input='lookup3.c') TargetAdd('dtoolbase_indent.obj', opts=OPTS, input='indent.cxx') -if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (sys.platform.startswith("win") and RUNTIME): OPTS=['DIR:dtool/src/dtoolbase', 'LINK_ALL_STATIC'] TargetAdd('static_dtoolbase_composite1.obj', opts=OPTS, input='dtoolbase_composite1.cxx') TargetAdd('static_dtoolbase_composite2.obj', opts=OPTS, input='dtoolbase_composite2.cxx') @@ -1674,7 +1695,7 @@ TargetAdd('dtoolutil_composite.obj', opts=OPTS, input='dtoolutil_composite.cxx if (sys.platform == 'darwin'): TargetAdd('dtoolutil_filename_assist.obj', opts=OPTS, input='filename_assist.mm') -if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (sys.platform.startswith("win") and RUNTIME): OPTS=['DIR:dtool/src/dtoolutil', 'LINK_ALL_STATIC'] TargetAdd('static_dtoolutil_gnu_getopt.obj', opts=OPTS, input='gnu_getopt.c') TargetAdd('static_dtoolutil_gnu_getopt1.obj', opts=OPTS, input='gnu_getopt1.c') @@ -1698,7 +1719,7 @@ TargetAdd('libp3dtool.dll', input='dtoolbase_indent.obj') TargetAdd('libp3dtool.dll', input='dtoolbase_lookup3.obj') TargetAdd('libp3dtool.dll', opts=['ADVAPI','WINSHELL','WINKERNEL']) -if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (RUNTIME): pref = "" if (sys.platform.startswith("win")): pref = "static_" @@ -1736,7 +1757,7 @@ TargetAdd('libcppParser.ilb', input='cppParser_cppBison.obj') OPTS=['DIR:dtool/src/prc', 'BUILDING:DTOOLCONFIG', 'OPENSSL'] TargetAdd('prc_composite.obj', opts=OPTS, input='prc_composite.cxx') -if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (sys.platform.startswith("win") and RUNTIME): OPTS=['DIR:dtool/src/prc', 'LINK_ALL_STATIC', 'OPENSSL'] TargetAdd('static_prc_composite.obj', opts=OPTS, input='prc_composite.cxx') @@ -1747,7 +1768,7 @@ if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML OPTS=['DIR:dtool/src/dconfig', 'BUILDING:DTOOLCONFIG'] TargetAdd('dconfig_composite.obj', opts=OPTS, input='dconfig_composite.cxx') -if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (sys.platform.startswith("win") and RUNTIME): OPTS=['DIR:dtool/src/dconfig', 'LINK_ALL_STATIC'] TargetAdd('static_dconfig_composite.obj', opts=OPTS, input='dconfig_composite.cxx') @@ -1758,7 +1779,7 @@ if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML OPTS=['DIR:dtool/src/interrogatedb', 'BUILDING:DTOOLCONFIG'] TargetAdd('interrogatedb_composite.obj', opts=OPTS, input='interrogatedb_composite.cxx') -if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (sys.platform.startswith("win") and RUNTIME): OPTS=['DIR:dtool/src/interrogatedb', 'LINK_ALL_STATIC'] TargetAdd('static_interrogatedb_composite.obj', opts=OPTS, input='interrogatedb_composite.cxx') @@ -1781,13 +1802,12 @@ TargetAdd('libp3dtoolconfig.dll', input='prc_composite.obj') TargetAdd('libp3dtoolconfig.dll', input='libp3dtool.dll') TargetAdd('libp3dtoolconfig.dll', opts=['ADVAPI', 'OPENSSL']) -if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (RUNTIME): pref = "" if (sys.platform.startswith("win")): pref = "static_" TargetAdd('libp3dtoolconfig_s.ilb', input=pref+'interrogatedb_composite.obj') TargetAdd('libp3dtoolconfig_s.ilb', input=pref+'dconfig_composite.obj') TargetAdd('libp3dtoolconfig_s.ilb', input=pref+'prc_composite.obj') - TargetAdd('libp3dtoolconfig_s.ilb', input='libp3dtool_s.ilb') TargetAdd('libp3dtoolconfig_s.ilb', opts=['ADVAPI', 'OPENSSL']) # @@ -1863,7 +1883,7 @@ TargetAdd('libexpress.in', opts=OPTS, input=IGATEFILES) TargetAdd('libexpress.in', opts=['IMOD:pandaexpress', 'ILIB:libexpress', 'SRCDIR:panda/src/express']) TargetAdd('libexpress_igate.obj', input='libexpress.in', opts=["DEPENDENCYONLY"]) -if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (sys.platform.startswith("win") and RUNTIME): OPTS=['DIR:panda/src/express', 'LINK_ALL_STATIC', 'OPENSSL', 'ZLIB'] TargetAdd('static_express_composite1.obj', opts=OPTS, input='express_composite1.cxx') TargetAdd('static_express_composite2.obj', opts=OPTS, input='express_composite2.cxx') @@ -1883,7 +1903,7 @@ TargetAdd('libdownloader.in', opts=OPTS, input=IGATEFILES) TargetAdd('libdownloader.in', opts=['IMOD:pandaexpress', 'ILIB:libdownloader', 'SRCDIR:panda/src/downloader']) TargetAdd('libdownloader_igate.obj', input='libdownloader.in', opts=["DEPENDENCYONLY"]) -if (sys.platform.startswith("win") and PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (sys.platform.startswith("win") and RUNTIME): OPTS=['DIR:panda/src/downloader', 'LINK_ALL_STATIC', 'OPENSSL', 'ZLIB'] TargetAdd('static_downloader_composite.obj', opts=OPTS, input='downloader_composite.cxx') @@ -1909,7 +1929,7 @@ TargetAdd('libpandaexpress.dll', input='pandabase_pandabase.obj') TargetAdd('libpandaexpress.dll', input=COMMON_DTOOL_LIBS) TargetAdd('libpandaexpress.dll', opts=['ADVAPI', 'WINSOCK2', 'OPENSSL', 'ZLIB']) -if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (RUNTIME): pref = "" if (sys.platform.startswith("win")): pref = "static_" @@ -1917,7 +1937,6 @@ if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): TargetAdd('libpandaexpress_s.ilb', input=pref+'express_composite1.obj') TargetAdd('libpandaexpress_s.ilb', input=pref+'express_composite2.obj') TargetAdd('libpandaexpress_s.ilb', input=pref+'libexpress_igate.obj') - TargetAdd('libpandaexpress_s.ilb', input='libp3dtoolconfig_s.ilb') TargetAdd('libpandaexpress_s.ilb', opts=['ADVAPI', 'WINSOCK2', 'OPENSSL', 'ZLIB']) # @@ -2057,6 +2076,7 @@ OPTS=['DIR:panda/src/gobj', 'BUILDING:PANDA', 'NVIDIACG', 'ZLIB', 'SQUISH', "BI TargetAdd('gobj_composite1.obj', opts=OPTS, input='gobj_composite1.cxx') TargetAdd('gobj_composite2.obj', opts=OPTS, input='gobj_composite2.cxx') IGATEFILES=GetDirectoryContents('panda/src/gobj', ["*.h", "*_composite.cxx"]) +if ("cgfx_states.h" in IGATEFILES): IGATEFILES.remove("cgfx_states.h") TargetAdd('libgobj.in', opts=OPTS, input=IGATEFILES) TargetAdd('libgobj.in', opts=['IMOD:panda', 'ILIB:libgobj', 'SRCDIR:panda/src/gobj']) TargetAdd('libgobj_igate.obj', input='libgobj.in', opts=["DEPENDENCYONLY"]) @@ -2988,6 +3008,18 @@ if (PkgSkip("PYTHON")==0): TargetAdd('libshowbase.in', opts=['IMOD:p3direct', 'ILIB:libshowbase', 'SRCDIR:direct/src/showbase']) TargetAdd('libshowbase_igate.obj', input='libshowbase.in', opts=["DEPENDENCYONLY"]) +# +# DIRECTORY: direct/src/dxml/ +# + +if (PkgSkip("PYTHON")==0 and PkgSkip("TINYXML")==0): + OPTS=['DIR:direct/src/dxml', 'BUILDING:DIRECT', 'TINYXML'] + TargetAdd('dxml_config_dxml.obj', opts=OPTS, input='config_dxml.cxx') + IGATEFILES=GetDirectoryContents('direct/src/dxml', ["*.h", "config_dxml.cxx"]) + TargetAdd('libdxml.in', opts=OPTS, input=IGATEFILES) + TargetAdd('libdxml.in', opts=['IMOD:p3direct', 'ILIB:libdxml', 'SRCDIR:direct/src/dxml']) + TargetAdd('libdxml_igate.obj', input='libdxml.in', opts=["DEPENDENCYONLY"]) + # # DIRECTORY: direct/metalibs/direct/ # @@ -3001,6 +3033,8 @@ if (PkgSkip("PYTHON")==0): TargetAdd('libp3direct_module.obj', input='libdeadrec.in') TargetAdd('libp3direct_module.obj', input='libinterval.in') TargetAdd('libp3direct_module.obj', input='libdistributed.in') + if (PkgSkip("TINYXML")==0): + TargetAdd('libp3direct_module.obj', input='libdxml.in') TargetAdd('libp3direct_module.obj', opts=OPTS) TargetAdd('libp3direct_module.obj', opts=['IMOD:p3direct', 'ILIB:libp3direct']) @@ -3021,8 +3055,11 @@ if (PkgSkip("PYTHON")==0): TargetAdd('libp3direct.dll', input='distributed_cConnectionRepository.obj') TargetAdd('libp3direct.dll', input='distributed_cDistributedSmoothNodeBase.obj') TargetAdd('libp3direct.dll', input='libdistributed_igate.obj') + if (PkgSkip("TINYXML")==0): + TargetAdd('libp3direct.dll', input='dxml_config_dxml.obj') + TargetAdd('libp3direct.dll', input='libdxml_igate.obj') TargetAdd('libp3direct.dll', input=COMMON_PANDA_LIBS) - TargetAdd('libp3direct.dll', opts=['ADVAPI', 'OPENSSL', 'WINUSER']) + TargetAdd('libp3direct.dll', opts=['ADVAPI', 'OPENSSL', 'WINUSER', 'TINYXML']) # # DIRECTORY: direct/src/dcparse/ @@ -3052,7 +3089,7 @@ if (PkgSkip("PYTHON")==0): # DIRECTORY: direct/src/plugin/ # -if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (RUNTIME): # Explicitly define this as we don't include dtool_config.h here. if (sys.platform != "darwin" and not sys.platform.startswith("win")): DefSymbol("PLUGIN", "HAVE_X11", "1") @@ -3092,7 +3129,7 @@ if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): # DIRECTORY: direct/src/plugin_npapi/ # -if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0 and PkgSkip("NPAPI")==0): +if (RUNTIME and PkgSkip("NPAPI")==0): OPTS=['DIR:direct/src/plugin_npapi', 'PLUGIN'] if (sys.platform.startswith("win")): TargetAdd('nppanda3d.res', opts=OPTS, input='nppanda3d.rc') @@ -3120,12 +3157,14 @@ if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0 and PkgSkip("NPAPI")==0): # DIRECTORY: direct/src/plugin_standalone/ # -if (PkgSkip("PLUGIN")==0 and PkgSkip("TINYXML")==0): +if (RUNTIME): OPTS=['DIR:direct/src/plugin_standalone', 'PLUGIN', 'LINK_ALL_STATIC', 'TINYXML', 'OPENSSL'] TargetAdd('plugin_standalone_panda3d.obj', opts=OPTS, input='panda3d.cxx') TargetAdd('panda3d.exe', input='plugin_standalone_panda3d.obj') TargetAdd('panda3d.exe', input='plugin_common.obj') TargetAdd('panda3d.exe', input='libpandaexpress_s.ilb') + TargetAdd('panda3d.exe', input='libp3dtoolconfig_s.ilb') + TargetAdd('panda3d.exe', input='libp3dtool_s.ilb') TargetAdd('panda3d.exe', opts=['PYTHON', 'TINYXML', 'OPENSSL', 'ZLIB', 'WINGDI', 'WINUSER', 'WINSHELL', 'ADVAPI', 'WINSOCK2']) # @@ -3937,17 +3976,8 @@ if (PkgSkip("PYTHON")==0): # if (PkgSkip("PYTHON")==0): - if (sys.platform == "darwin" or sys.platform.startswith("win") or ("PYTHONVERSION" in SDK and SDK["PYTHONVERSION"] == "python2.6")): - TargetAdd('runp3d.exe', input='direct/src/showutil/runp3d.py') - TargetAdd('packp3d.exe', input='direct/src/showutil/packp3d.py') TargetAdd('packpanda.exe', input='direct/src/directscripts/packpanda.py') TargetAdd('eggcacher.exe', input='direct/src/directscripts/eggcacher.py') - - TargetAdd('runp3d_frozen.pyd', input='direct/src/showutil/runp3d.py') - TargetAdd('runp3d_frozen.pyd', input='direct/src/directbase/DirectStart.py') - TargetAdd('runp3d_frozen.pyd', input='direct/src/actor/Actor.py') - TargetAdd('runp3d_frozen.pyd', input='direct/src/fsm/FSM.py') - TargetAdd('runp3d_frozen.pyd', input='direct/src/directutil/Mopath.py') # # Generate the models directory and samples directory @@ -4092,89 +4122,14 @@ except: # ########################################################################################## -RUNTIME_OMIT = ["libp3mayaloader*.*", "libp3ptloader.*", "libpandaskel.*","libpandaegg.*", - "libpanda*stripped.*", "codec_*.*", "output_*.*", "dsp_*.*"] - def MakeRuntime(): - # Delete the current. - if (os.path.exists(GetOutputDir()+"/stage")): - shutil.rmtree(GetOutputDir()+"/stage") - if (os.path.exists(GetOutputDir()+"/rlib")): - shutil.rmtree(GetOutputDir()+"/rlib") - - # Create a couple of directories. - coreapidir = GetOutputDir()+"/stage/coreapi/"+RUNTIME_PLATFORM+"/"+RUNTIME_VERSION+"/" - plugindir = GetOutputDir()+"/stage/plugin/"+RUNTIME_PLATFORM+"/"+RUNTIME_VERSION+"/" - MakeDirectory(GetOutputDir()+"/rlib") - MakeDirectory(GetOutputDir()+"/stage") - MakeDirectory(GetOutputDir()+"/stage/coreapi") - MakeDirectory(GetOutputDir()+"/stage/coreapi/"+RUNTIME_PLATFORM) - MakeDirectory(GetOutputDir()+"/stage/plugin") - MakeDirectory(GetOutputDir()+"/stage/plugin/"+RUNTIME_PLATFORM) - MakeDirectory(coreapidir); MakeDirectory(plugindir) - - # Copy the p3d_plugin file to coreapi dir and the plugin to the plugin dir. - plugfile = CalcLocation("p3d_plugin.dll", None) - CopyFile(coreapidir + os.path.basename(plugfile), plugfile) - if (sys.platform == "darwin"): - plugfile = CalcLocation("nppanda3d.plugin", None) - if (os.path.isdir(GetOutputDir()+"/tmp/bundle")): - oscmd("rm -rf %s" % BracketNameWithQuotes(GetOutputDir()+"/tmp/bundle")) - MakeDirectory(GetOutputDir()+"/tmp/bundle") - CopyTree(GetOutputDir()+"/tmp/bundle/nppanda3d.plugin", plugfile) - if (os.path.exists(GetOutputDir()+"/plugins/nppanda3d.dmg")): - oscmd("rm -rf " + BracketNameWithQuotes(GetOutputDir()+"/plugins/nppanda3d.dmg")) - oscmd("hdiutil create -fs HFS+ -srcfolder %s -volname nppanda3d %s" % (GetOutputDir()+"/tmp/bundle", GetOutputDir()+"/plugins/nppanda3d.dmg")) - CopyFile(plugindir + "nppanda3d.dmg", GetOutputDir()+"/plugins/nppanda3d.dmg") - oscmd("rm -rf " + BracketNameWithQuotes(GetOutputDir()+"/tmp/bundle")) - else: - plugfile = CalcLocation("nppanda3d.dll", None) - CopyFile(plugindir + os.path.basename(plugfile), plugfile) - - # Copy the important libraries to built/rlib/. - CopyFile(GetOutputDir()+"/rlib/Config.prc", GetOutputDir()+"/etc/Config.prc") - plugfile = CalcLocation("p3dpython.exe", None) - CopyFile(GetOutputDir()+"/rlib/"+os.path.basename(plugfile), plugfile) - plugfile = CalcLocation("runp3d_frozen.pyd", None) - CopyFile(GetOutputDir()+"/rlib/"+os.path.basename(plugfile), plugfile) - if (sys.platform.startswith("win")): - for base in os.listdir(GetOutputDir()+"/bin"): - if (base.endswith(".dll")): - omit = False - for romit in RUNTIME_OMIT: - if fnmatch.fnmatch(base, romit): - omit = True - if omit: continue - CopyFile(GetOutputDir()+"/rlib/"+base, GetOutputDir()+"/bin/"+base) - else: - for base in os.listdir(GetOutputDir()+"/lib"): - if (base.startswith("lib")) and (base.endswith(".so") or base.endswith(".dylib")): - omit = False - for romit in RUNTIME_OMIT: - if fnmatch.fnmatch(base, romit): - omit = True - if omit: continue - CopyFile(GetOutputDir()+"/rlib/"+base, GetOutputDir()+"/lib/"+base) - if (sys.platform == "darwin"): - oscmd("strip "+GetOutputDir()+"/rlib/"+base) - else: - oscmd("strip --strip-all "+GetOutputDir()+"/rlib/"+base) - - # Invoke the make_package and make_contents scripts. - command = SDK["PYTHONEXEC"] + " direct/src/plugin/make_package.py" - command += " -d \"" + GetOutputDir() + "/stage\"" - command += " -s \"" + GetOutputDir() + "/rlib\"" - command += " -p panda3d_%s_%s" % (RUNTIME_PLATFORM, RUNTIME_VERSION) - oscmd(command) - command = SDK["PYTHONEXEC"] + " direct/src/plugin/make_contents.py" - command += " -d \"" + GetOutputDir() + "/stage\"" + # Invoke the ppackage script. + command = SDK["PYTHONEXEC"] + " direct/src/p3d/ppackage.py" + command += " -i \"" + GetOutputDir() + "/stage\"" + command += " direct/src/p3d/panda3d.pdef" oscmd(command) - # Tar the whole thing. - if (not sys.platform.startswith("win")): - if (os.path.exists("runtime_%s_%s.tar.bz2" % (RUNTIME_PLATFORM, RUNTIME_VERSION))): - os.remove("runtime_%s_%s.tar.bz2" % (RUNTIME_PLATFORM, RUNTIME_VERSION)) - oscmd("cd " + GetOutputDir() + "/stage/ && tar -cjvf " + os.getcwd() + ("/runtime_%s_%s.tar.bz2 coreapi panda3d plugin" % (RUNTIME_PLATFORM, RUNTIME_VERSION))) + print "Runtime output stored in \"" + GetOutputDir() + "/stage\"." if (RUNTIME != 0): MakeRuntime() diff --git a/makepanda/makepandacore.py b/makepanda/makepandacore.py index f6f9df90d3..3e722d40e1 100644 --- a/makepanda/makepandacore.py +++ b/makepanda/makepandacore.py @@ -18,6 +18,7 @@ SUFFIX_LIB=[".lib",".ilb"] STARTTIME=time.time() MAINTHREAD=threading.currentThread() OUTPUTDIR="built" +CUSTOM_OUTPUTDIR=False OPTIMIZE="3" ######################################################################## @@ -645,8 +646,9 @@ def GetOutputDir(): return OUTPUTDIR def SetOutputDir(outputdir): - global OUTPUTDIR + global OUTPUTDIR, CUSTOM_OUTPUTDIR OUTPUTDIR=outputdir + CUSTOM_OUTPUTDIR=True def GetOptimize(): return int(OPTIMIZE)