|
|
@@ -103,6 +103,7 @@ PkgListSet(["PYTHON", "DIRECT", # Python support
|
|
|
"PANDAPARTICLESYSTEM", # Built in particle system
|
|
|
"CONTRIB", # Experimental
|
|
|
"SSE2", "NEON", # Compiler features
|
|
|
+ "MIMALLOC", # Memory allocators
|
|
|
])
|
|
|
|
|
|
CheckPandaSourceTree()
|
|
|
@@ -633,6 +634,7 @@ if (COMPILER == "MSVC"):
|
|
|
if (PkgSkip("DIRECTCAM")==0): LibName("DIRECTCAM", "quartz.lib")
|
|
|
if (PkgSkip("DIRECTCAM")==0): LibName("DIRECTCAM", "odbc32.lib")
|
|
|
if (PkgSkip("DIRECTCAM")==0): LibName("DIRECTCAM", "odbccp32.lib")
|
|
|
+ if (PkgSkip("MIMALLOC")==0): LibName("MIMALLOC", GetThirdpartyDir() + "mimalloc/lib/mimalloc-static.lib")
|
|
|
if (PkgSkip("OPENSSL")==0):
|
|
|
if os.path.isfile(GetThirdpartyDir() + "openssl/lib/libpandassl.lib"):
|
|
|
LibName("OPENSSL", GetThirdpartyDir() + "openssl/lib/libpandassl.lib")
|
|
|
@@ -778,6 +780,8 @@ if (COMPILER == "MSVC"):
|
|
|
LibName("BULLET", GetThirdpartyDir() + "bullet/lib/BulletSoftBody" + suffix)
|
|
|
|
|
|
if (COMPILER=="GCC"):
|
|
|
+ PkgDisable("MIMALLOC") # no discernable benefit over glibc
|
|
|
+
|
|
|
if GetTarget() != "darwin":
|
|
|
PkgDisable("COCOA")
|
|
|
|
|
|
@@ -2288,6 +2292,7 @@ DTOOL_CONFIG=[
|
|
|
("REPORT_OPENSSL_ERRORS", '1', '1'),
|
|
|
("USE_PANDAFILESTREAM", '1', '1'),
|
|
|
("USE_DELETED_CHAIN", '1', '1'),
|
|
|
+ ("HAVE_MIMALLOC", 'UNDEF', 'UNDEF'),
|
|
|
("HAVE_WGL", '1', 'UNDEF'),
|
|
|
("HAVE_DX9", 'UNDEF', 'UNDEF'),
|
|
|
("HAVE_THREADS", '1', '1'),
|
|
|
@@ -2433,6 +2438,20 @@ def WriteConfigSettings():
|
|
|
|
|
|
dtool_config["HAVE_NET"] = '1'
|
|
|
|
|
|
+ if GetTarget() == 'windows':
|
|
|
+ if not PkgSkip("MIMALLOC"):
|
|
|
+ # This is faster than both DeletedBufferChain and malloc,
|
|
|
+ # especially in the multi-threaded case.
|
|
|
+ dtool_config["USE_MEMORY_MIMALLOC"] = '1'
|
|
|
+ dtool_config["USE_DELETED_CHAIN"] = 'UNDEF'
|
|
|
+ else:
|
|
|
+ # If we don't have mimalloc, use DeletedBufferChain as fallback,
|
|
|
+ # which is still more efficient than malloc.
|
|
|
+ dtool_config["USE_DELETED_CHAIN"] = '1'
|
|
|
+ else:
|
|
|
+ # On other systems, the default malloc seems to be fine.
|
|
|
+ dtool_config["USE_DELETED_CHAIN"] = 'UNDEF'
|
|
|
+
|
|
|
if (PkgSkip("NVIDIACG")==0):
|
|
|
dtool_config["HAVE_CG"] = '1'
|
|
|
dtool_config["HAVE_CGGL"] = '1'
|
|
|
@@ -3340,7 +3359,7 @@ if GetTarget() == 'windows':
|
|
|
# DIRECTORY: dtool/src/dtoolbase/
|
|
|
#
|
|
|
|
|
|
-OPTS=['DIR:dtool/src/dtoolbase', 'BUILDING:DTOOL']
|
|
|
+OPTS=['DIR:dtool/src/dtoolbase', 'BUILDING:DTOOL', 'MIMALLOC']
|
|
|
TargetAdd('p3dtoolbase_composite1.obj', opts=OPTS, input='p3dtoolbase_composite1.cxx')
|
|
|
TargetAdd('p3dtoolbase_composite2.obj', opts=OPTS, input='p3dtoolbase_composite2.cxx')
|
|
|
TargetAdd('p3dtoolbase_lookup3.obj', opts=OPTS, input='lookup3.c')
|
|
|
@@ -3371,7 +3390,7 @@ TargetAdd('libp3dtool.dll', input='p3dtoolbase_composite1.obj')
|
|
|
TargetAdd('libp3dtool.dll', input='p3dtoolbase_composite2.obj')
|
|
|
TargetAdd('libp3dtool.dll', input='p3dtoolbase_indent.obj')
|
|
|
TargetAdd('libp3dtool.dll', input='p3dtoolbase_lookup3.obj')
|
|
|
-TargetAdd('libp3dtool.dll', opts=['ADVAPI','WINSHELL','WINKERNEL'])
|
|
|
+TargetAdd('libp3dtool.dll', opts=['ADVAPI','WINSHELL','WINKERNEL','MIMALLOC'])
|
|
|
|
|
|
#
|
|
|
# DIRECTORY: dtool/src/cppparser/
|