diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 50e83cdaac..d5040c9049 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -1638,12 +1638,7 @@ def CompileIgate(woutd,wsrc,opts): ConditionalWriteFile(woutd, "") return - if not CrossCompiling(): - # If we're compiling for this platform, we can use the one we've built. - cmd = os.path.join(GetOutputDir(), 'bin', 'interrogate') - else: - # Assume that interrogate is on the PATH somewhere. - cmd = 'interrogate' + cmd = GetInterrogate() if GetVerbose(): cmd += ' -v' @@ -1722,12 +1717,7 @@ def CompileImod(wobj, wsrc, opts): CompileCxx(wobj, woutc, opts) return - if not CrossCompiling(): - # If we're compiling for this platform, we can use the one we've built. - cmd = os.path.join(GetOutputDir(), 'bin', 'interrogate_module') - else: - # Assume that interrogate_module is on the PATH somewhere. - cmd = 'interrogate_module' + cmd = GetInterrogateModule() cmd += ' -oc ' + woutc + ' -module ' + module + ' -library ' + library + ' -python-native' importmod = GetValueOption(opts, "IMPORT:") @@ -3329,13 +3319,10 @@ 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"]) CopyAllHeaders('dtool/src/dconfig') CopyAllHeaders('dtool/src/interrogatedb') CopyAllHeaders('dtool/metalibs/dtoolconfig') -CopyAllHeaders('dtool/src/interrogate') -CopyAllHeaders('dtool/src/test_interrogate') CopyAllHeaders('panda/src/putil') CopyAllHeaders('panda/src/pandabase') CopyAllHeaders('panda/src/express') @@ -3573,20 +3560,6 @@ TargetAdd('libp3dtool.dll', input='p3dtoolbase_indent.obj') TargetAdd('libp3dtool.dll', input='p3dtoolbase_lookup3.obj') TargetAdd('libp3dtool.dll', opts=['ADVAPI','WINSHELL','WINKERNEL','MIMALLOC']) -# -# DIRECTORY: dtool/src/cppparser/ -# - -OPTS=['DIR:dtool/src/cppparser', 'BISONPREFIX_cppyy'] -CreateFile(GetOutputDir()+"/include/cppBison.h") -TargetAdd('p3cppParser_cppBison.obj', opts=OPTS, input='cppBison.yxx') -TargetAdd('cppBison.h', input='p3cppParser_cppBison.obj', opts=['DEPENDENCYONLY']) -TargetAdd('p3cppParser_composite1.obj', opts=OPTS, input='p3cppParser_composite1.cxx') -TargetAdd('p3cppParser_composite2.obj', opts=OPTS, input='p3cppParser_composite2.cxx') -TargetAdd('libp3cppParser.ilb', input='p3cppParser_composite1.obj') -TargetAdd('libp3cppParser.ilb', input='p3cppParser_composite2.obj') -TargetAdd('libp3cppParser.ilb', input='p3cppParser_cppBison.obj') - # # DIRECTORY: dtool/src/prc/ # @@ -3628,42 +3601,6 @@ PyTargetAdd('interrogatedb.pyd', input='libp3dtool.dll') PyTargetAdd('interrogatedb.pyd', input='libp3dtoolconfig.dll') PyTargetAdd('interrogatedb.pyd', input='libp3interrogatedb.dll') -# -# DIRECTORY: dtool/src/interrogate/ -# - -OPTS=['DIR:dtool/src/interrogate', 'DIR:dtool/src/cppparser', 'DIR:dtool/src/interrogatedb'] -TargetAdd('interrogate_composite1.obj', opts=OPTS, input='interrogate_composite1.cxx') -TargetAdd('interrogate_composite2.obj', opts=OPTS, input='interrogate_composite2.cxx') -TargetAdd('interrogate.exe', input='interrogate_composite1.obj') -TargetAdd('interrogate.exe', input='interrogate_composite2.obj') -TargetAdd('interrogate.exe', input='libp3cppParser.ilb') -TargetAdd('interrogate.exe', input=COMMON_DTOOL_LIBS) -TargetAdd('interrogate.exe', input='libp3interrogatedb.dll') -TargetAdd('interrogate.exe', opts=['ADVAPI', 'WINSHELL', 'WINGDI', 'WINUSER']) - -preamble = WriteEmbeddedStringFile('interrogate_preamble_python_native', inputs=[ - 'dtool/src/interrogatedb/py_panda.cxx', - 'dtool/src/interrogatedb/py_compat.cxx', - 'dtool/src/interrogatedb/py_wrappers.cxx', - 'dtool/src/interrogatedb/dtool_super_base.cxx', -]) -TargetAdd('interrogate_module_preamble_python_native.obj', opts=OPTS, input=preamble) -TargetAdd('interrogate_module_interrogate_module.obj', opts=OPTS, input='interrogate_module.cxx') -TargetAdd('interrogate_module.exe', input='interrogate_module_interrogate_module.obj') -TargetAdd('interrogate_module.exe', input='interrogate_module_preamble_python_native.obj') -TargetAdd('interrogate_module.exe', input='libp3cppParser.ilb') -TargetAdd('interrogate_module.exe', input=COMMON_DTOOL_LIBS) -TargetAdd('interrogate_module.exe', input='libp3interrogatedb.dll') -TargetAdd('interrogate_module.exe', opts=['ADVAPI', 'WINSHELL', 'WINGDI', 'WINUSER']) - -TargetAdd('parse_file_parse_file.obj', opts=OPTS, input='parse_file.cxx') -TargetAdd('parse_file.exe', input='parse_file_parse_file.obj') -TargetAdd('parse_file.exe', input='libp3cppParser.ilb') -TargetAdd('parse_file.exe', input=COMMON_DTOOL_LIBS) -TargetAdd('parse_file.exe', input='libp3interrogatedb.dll') -TargetAdd('parse_file.exe', opts=['ADVAPI', 'WINSHELL', 'WINGDI', 'WINUSER']) - # # DIRECTORY: dtool/src/prckeys/ # @@ -3675,17 +3612,6 @@ if not PkgSkip("OPENSSL"): TargetAdd('make-prc-key.exe', input=COMMON_DTOOL_LIBS) TargetAdd('make-prc-key.exe', opts=['ADVAPI', 'OPENSSL', 'WINSHELL', 'WINGDI', 'WINUSER']) -# -# DIRECTORY: dtool/src/test_interrogate/ -# - -OPTS=['DIR:dtool/src/test_interrogate'] -TargetAdd('test_interrogate_test_interrogate.obj', opts=OPTS, input='test_interrogate.cxx') -TargetAdd('test_interrogate.exe', input='test_interrogate_test_interrogate.obj') -TargetAdd('test_interrogate.exe', input='libp3interrogatedb.dll') -TargetAdd('test_interrogate.exe', input=COMMON_DTOOL_LIBS) -TargetAdd('test_interrogate.exe', opts=['ADVAPI', 'WINSHELL', 'WINGDI', 'WINUSER']) - # # DIRECTORY: dtool/src/dtoolbase/ # diff --git a/makepanda/makepandacore.py b/makepanda/makepandacore.py index 55cb8dfa2f..9b4ea7a068 100644 --- a/makepanda/makepandacore.py +++ b/makepanda/makepandacore.py @@ -612,6 +612,50 @@ def GetSevenZip(): def HasSevenZip(): return GetSevenZip() is not None + +######################################################################## +## +## GetInterrogate[Module] +## +## Installs and locates the interrogate tool. +## +######################################################################## + +INTERROGATE_DIR = None +INTERROGATE_LOCK = threading.Lock() + +def GetInterrogateDir(): + global INTERROGATE_DIR + + if INTERROGATE_DIR: + return INTERROGATE_DIR + + with INTERROGATE_LOCK: + if INTERROGATE_DIR: + return INTERROGATE_DIR + + dir = os.path.join(GetOutputDir(), "tmp", "interrogate") + if not os.path.isdir(os.path.join(dir, "panda3d_interrogate-0.1.0.dist-info")): + oscmd("\"%s\" -m pip install --force-reinstall -t \"%s\" panda3d-interrogate==0.1.0" % (sys.executable, dir)) + + INTERROGATE_DIR = dir + + return dir + + +def GetInterrogate(): + path = GetInterrogateDir() + '/interrogate/interrogate' + if sys.platform == "win32": + path += ".exe" + return path + + +def GetInterrogateModule(): + path = GetInterrogateDir() + '/interrogate_module/interrogate_module' + if sys.platform == "win32": + path += ".exe" + return path + ######################################################################## ## ## LocateBinary