SCons: Format buildsystem files with psf/black
Configured for a max line length of 120 characters. psf/black is very opinionated and purposely doesn't leave much room for configuration. The output is mostly OK so that should be fine for us, but some things worth noting: - Manually wrapped strings will be reflowed, so by using a line length of 120 for the sake of preserving readability for our long command calls, it also means that some manually wrapped strings are back on the same line and should be manually merged again. - Code generators using string concatenation extensively look awful, since black puts each operand on a single line. We need to refactor these generators to use more pythonic string formatting, for which many options are available (`%`, `format` or f-strings). - CI checks and a pre-commit hook will be added to ensure that future buildsystem changes are well-formatted.
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import("env")
|
||||
|
||||
import modules_builders
|
||||
|
||||
env_modules = env.Clone()
|
||||
|
||||
Export('env_modules')
|
||||
Export("env_modules")
|
||||
|
||||
# Header with MODULE_*_ENABLED defines.
|
||||
env.CommandNoCache("modules_enabled.gen.h", Value(env.module_list), modules_builders.generate_modules_enabled)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_arkit = env_modules.Clone()
|
||||
|
||||
@@ -9,4 +9,4 @@ env_arkit = env_modules.Clone()
|
||||
modules_sources = []
|
||||
env_arkit.add_source_files(modules_sources, "*.cpp")
|
||||
env_arkit.add_source_files(modules_sources, "*.mm")
|
||||
mod_lib = env_modules.add_library('#bin/libgodot_arkit_module' + env['LIBSUFFIX'], modules_sources)
|
||||
mod_lib = env_modules.add_library("#bin/libgodot_arkit_module" + env["LIBSUFFIX"], modules_sources)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return platform == 'iphone'
|
||||
return platform == "iphone"
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_assimp = env_modules.Clone()
|
||||
|
||||
@@ -10,85 +10,85 @@ env_assimp = env_modules.Clone()
|
||||
if True: # env['builtin_assimp']:
|
||||
thirdparty_dir = "#thirdparty/assimp"
|
||||
|
||||
env_assimp.Prepend(CPPPATH=['#thirdparty/assimp'])
|
||||
env_assimp.Prepend(CPPPATH=['#thirdparty/assimp/code'])
|
||||
env_assimp.Prepend(CPPPATH=['#thirdparty/assimp/include'])
|
||||
env_assimp.Prepend(CPPPATH=["#thirdparty/assimp"])
|
||||
env_assimp.Prepend(CPPPATH=["#thirdparty/assimp/code"])
|
||||
env_assimp.Prepend(CPPPATH=["#thirdparty/assimp/include"])
|
||||
|
||||
#env_assimp.Append(CPPDEFINES=['ASSIMP_DOUBLE_PRECISION']) # TODO default to what godot is compiled with for future double support
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_SINGLETHREADED'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_BOOST_WORKAROUND'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_OWN_ZLIB'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_EXPORT'])
|
||||
# env_assimp.Append(CPPDEFINES=['ASSIMP_DOUBLE_PRECISION']) # TODO default to what godot is compiled with for future double support
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_SINGLETHREADED"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_BOOST_WORKAROUND"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_OWN_ZLIB"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_EXPORT"])
|
||||
|
||||
# Importers we don't need
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_3D_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_3DS_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_3MF_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_AC_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_AMF_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_ASE_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_ASSBIN_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_B3D_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_BLEND_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_BVH_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_C4D_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_COB_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_COLLADA_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_CSM_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_DXF_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_GLTF2_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_GLTF_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_HMP_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_IFC_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_IRR_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_IRRMESH_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_LWO_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_LWS_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_M3D_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MD2_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MD3_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MD5_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MD5_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MDC_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MDL_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MMD_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_MS3D_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_NDO_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_NFF_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_OBJ_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_OFF_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_OGRE_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_OPENGEX_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_PLY_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_Q3BSP_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_Q3D_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_RAW_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_SIB_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_SMD_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_STEP_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_STL_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_TERRAGEN_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_X3D_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_XGL_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=['ASSIMP_BUILD_NO_X_IMPORTER'])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_3D_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_3DS_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_3MF_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_AC_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_AMF_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_ASE_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_ASSBIN_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_B3D_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_BLEND_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_BVH_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_C4D_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_COB_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_COLLADA_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_CSM_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_DXF_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_GLTF2_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_GLTF_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_HMP_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_IFC_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_IRR_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_IRRMESH_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_LWO_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_LWS_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_M3D_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MD2_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MD3_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MD5_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MD5_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MDC_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MDL_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MMD_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_MS3D_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_NDO_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_NFF_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_OBJ_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_OFF_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_OGRE_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_OPENGEX_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_PLY_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_Q3BSP_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_Q3D_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_RAW_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_SIB_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_SMD_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_STEP_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_STL_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_TERRAGEN_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_X3D_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_XGL_IMPORTER"])
|
||||
env_assimp.Append(CPPDEFINES=["ASSIMP_BUILD_NO_X_IMPORTER"])
|
||||
|
||||
if env["platform"] == "windows":
|
||||
env_assimp.Append(CPPDEFINES=["PLATFORM_WINDOWS"])
|
||||
env_assimp.Append(CPPDEFINES=[("PLATFORM", "WINDOWS")])
|
||||
elif env["platform"] == "linuxbsd":
|
||||
env_assimp.Append(CPPDEFINES=["PLATFORM_LINUX"])
|
||||
env_assimp.Append(CPPDEFINES=[("PLATFORM", "LINUX")])
|
||||
elif env["platform"] == "osx":
|
||||
env_assimp.Append(CPPDEFINES=["PLATFORM_DARWIN"])
|
||||
env_assimp.Append(CPPDEFINES=[("PLATFORM", "DARWIN")])
|
||||
|
||||
if(env['platform'] == 'windows'):
|
||||
env_assimp.Append(CPPDEFINES=['PLATFORM_WINDOWS'])
|
||||
env_assimp.Append(CPPDEFINES=[('PLATFORM', 'WINDOWS')])
|
||||
elif(env['platform'] == 'linuxbsd'):
|
||||
env_assimp.Append(CPPDEFINES=['PLATFORM_LINUX'])
|
||||
env_assimp.Append(CPPDEFINES=[('PLATFORM', 'LINUX')])
|
||||
elif(env['platform'] == 'osx'):
|
||||
env_assimp.Append(CPPDEFINES=['PLATFORM_DARWIN'])
|
||||
env_assimp.Append(CPPDEFINES=[('PLATFORM', 'DARWIN')])
|
||||
|
||||
env_thirdparty = env_assimp.Clone()
|
||||
env_thirdparty.disable_warnings()
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob('#thirdparty/assimp/code/CApi/*.cpp'))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob('#thirdparty/assimp/code/Common/*.cpp'))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob('#thirdparty/assimp/code/PostProcessing/*.cpp'))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob('#thirdparty/assimp/code/Material/*.cpp'))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob('#thirdparty/assimp/code/FBX/*.cpp'))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob("#thirdparty/assimp/code/CApi/*.cpp"))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob("#thirdparty/assimp/code/Common/*.cpp"))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob("#thirdparty/assimp/code/PostProcessing/*.cpp"))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob("#thirdparty/assimp/code/Material/*.cpp"))
|
||||
env_thirdparty.add_source_files(env.modules_sources, Glob("#thirdparty/assimp/code/FBX/*.cpp"))
|
||||
|
||||
# Godot's own source files
|
||||
env_assimp.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return env['tools']
|
||||
return env["tools"]
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_basisu = env_modules.Clone()
|
||||
|
||||
@@ -9,36 +9,38 @@ env_basisu = env_modules.Clone()
|
||||
# Not unbundled so far since not widespread as shared library
|
||||
thirdparty_dir = "#thirdparty/basis_universal/"
|
||||
tool_sources = [
|
||||
"basisu_astc_decomp.cpp",
|
||||
"basisu_backend.cpp",
|
||||
"basisu_basis_file.cpp",
|
||||
"basisu_comp.cpp",
|
||||
"basisu_enc.cpp",
|
||||
"basisu_etc.cpp",
|
||||
"basisu_frontend.cpp",
|
||||
"basisu_global_selector_palette_helpers.cpp",
|
||||
"basisu_gpu_texture.cpp",
|
||||
"basisu_pvrtc1_4.cpp",
|
||||
"basisu_resample_filters.cpp",
|
||||
"basisu_resampler.cpp",
|
||||
"basisu_ssim.cpp",
|
||||
"lodepng.cpp",
|
||||
"basisu_astc_decomp.cpp",
|
||||
"basisu_backend.cpp",
|
||||
"basisu_basis_file.cpp",
|
||||
"basisu_comp.cpp",
|
||||
"basisu_enc.cpp",
|
||||
"basisu_etc.cpp",
|
||||
"basisu_frontend.cpp",
|
||||
"basisu_global_selector_palette_helpers.cpp",
|
||||
"basisu_gpu_texture.cpp",
|
||||
"basisu_pvrtc1_4.cpp",
|
||||
"basisu_resample_filters.cpp",
|
||||
"basisu_resampler.cpp",
|
||||
"basisu_ssim.cpp",
|
||||
"lodepng.cpp",
|
||||
]
|
||||
tool_sources = [thirdparty_dir + file for file in tool_sources]
|
||||
transcoder_sources = [thirdparty_dir + "transcoder/basisu_transcoder.cpp"]
|
||||
|
||||
# Treat Basis headers as system headers to avoid raising warnings. Not supported on MSVC.
|
||||
if not env.msvc:
|
||||
env_basisu.Append(CPPFLAGS=['-isystem', Dir(thirdparty_dir).path, '-isystem', Dir(thirdparty_dir + "transcoder").path])
|
||||
env_basisu.Append(
|
||||
CPPFLAGS=["-isystem", Dir(thirdparty_dir).path, "-isystem", Dir(thirdparty_dir + "transcoder").path]
|
||||
)
|
||||
else:
|
||||
env_basisu.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "transcoder"])
|
||||
|
||||
if env['target'] == "debug":
|
||||
env_basisu.Append(CPPFLAGS=["-DBASISU_DEVEL_MESSAGES=1", "-DBASISD_ENABLE_DEBUG_FLAGS=1"])
|
||||
if env["target"] == "debug":
|
||||
env_basisu.Append(CPPFLAGS=["-DBASISU_DEVEL_MESSAGES=1", "-DBASISD_ENABLE_DEBUG_FLAGS=1"])
|
||||
|
||||
env_thirdparty = env_basisu.Clone()
|
||||
env_thirdparty.disable_warnings()
|
||||
if env['tools']:
|
||||
if env["tools"]:
|
||||
env_thirdparty.add_source_files(env.modules_sources, tool_sources)
|
||||
env_thirdparty.add_source_files(env.modules_sources, transcoder_sources)
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_bmp = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,208 +1,203 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_bullet = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
|
||||
if env['builtin_bullet']:
|
||||
if env["builtin_bullet"]:
|
||||
# Build only version 2 for now (as of 2.89)
|
||||
# Sync file list with relevant upstream CMakeLists.txt for each folder.
|
||||
thirdparty_dir = "#thirdparty/bullet/"
|
||||
|
||||
bullet2_src = [
|
||||
# BulletCollision
|
||||
"BulletCollision/BroadphaseCollision/btAxisSweep3.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btDbvt.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btDispatcher.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp"
|
||||
, "BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btCollisionObject.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btCollisionWorld.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btGhostObject.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btManifoldResult.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/CollisionDispatch/btUnionFind.cpp"
|
||||
, "BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp"
|
||||
, "BulletCollision/CollisionShapes/btBoxShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btBox2dShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btCapsuleShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btCollisionShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btCompoundShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConcaveShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConeShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConvexHullShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConvexInternalShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConvexPolyhedron.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConvexShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConvex2dShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btCylinderShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btEmptyShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btMiniSDF.cpp"
|
||||
, "BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btMultiSphereShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btOptimizedBvh.cpp"
|
||||
, "BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btSdfCollisionShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btShapeHull.cpp"
|
||||
, "BulletCollision/CollisionShapes/btSphereShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btStaticPlaneShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btStridingMeshInterface.cpp"
|
||||
, "BulletCollision/CollisionShapes/btTetrahedronShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btTriangleBuffer.cpp"
|
||||
, "BulletCollision/CollisionShapes/btTriangleCallback.cpp"
|
||||
, "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp"
|
||||
, "BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp"
|
||||
, "BulletCollision/CollisionShapes/btTriangleMesh.cpp"
|
||||
, "BulletCollision/CollisionShapes/btTriangleMeshShape.cpp"
|
||||
, "BulletCollision/CollisionShapes/btUniformScalingShape.cpp"
|
||||
, "BulletCollision/Gimpact/btContactProcessing.cpp"
|
||||
, "BulletCollision/Gimpact/btGenericPoolAllocator.cpp"
|
||||
, "BulletCollision/Gimpact/btGImpactBvh.cpp"
|
||||
, "BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp"
|
||||
, "BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp"
|
||||
, "BulletCollision/Gimpact/btGImpactShape.cpp"
|
||||
, "BulletCollision/Gimpact/btTriangleShapeEx.cpp"
|
||||
, "BulletCollision/Gimpact/gim_box_set.cpp"
|
||||
, "BulletCollision/Gimpact/gim_contact.cpp"
|
||||
, "BulletCollision/Gimpact/gim_memory.cpp"
|
||||
, "BulletCollision/Gimpact/gim_tri_collision.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btConvexCast.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp"
|
||||
, "BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp"
|
||||
|
||||
"BulletCollision/BroadphaseCollision/btAxisSweep3.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btDbvt.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btDispatcher.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp",
|
||||
"BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp",
|
||||
"BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp",
|
||||
"BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp",
|
||||
"BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp",
|
||||
"BulletCollision/CollisionDispatch/btCollisionObject.cpp",
|
||||
"BulletCollision/CollisionDispatch/btCollisionWorld.cpp",
|
||||
"BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp",
|
||||
"BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp",
|
||||
"BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btGhostObject.cpp",
|
||||
"BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp",
|
||||
"BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp",
|
||||
"BulletCollision/CollisionDispatch/btManifoldResult.cpp",
|
||||
"BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp",
|
||||
"BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp",
|
||||
"BulletCollision/CollisionDispatch/btUnionFind.cpp",
|
||||
"BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp",
|
||||
"BulletCollision/CollisionShapes/btBoxShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btBox2dShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btCapsuleShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btCollisionShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btCompoundShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConcaveShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConeShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConvexHullShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConvexInternalShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConvexPolyhedron.cpp",
|
||||
"BulletCollision/CollisionShapes/btConvexShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConvex2dShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btCylinderShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btEmptyShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btMiniSDF.cpp",
|
||||
"BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btMultiSphereShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btOptimizedBvh.cpp",
|
||||
"BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btSdfCollisionShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btShapeHull.cpp",
|
||||
"BulletCollision/CollisionShapes/btSphereShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btStaticPlaneShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btStridingMeshInterface.cpp",
|
||||
"BulletCollision/CollisionShapes/btTetrahedronShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btTriangleBuffer.cpp",
|
||||
"BulletCollision/CollisionShapes/btTriangleCallback.cpp",
|
||||
"BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp",
|
||||
"BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp",
|
||||
"BulletCollision/CollisionShapes/btTriangleMesh.cpp",
|
||||
"BulletCollision/CollisionShapes/btTriangleMeshShape.cpp",
|
||||
"BulletCollision/CollisionShapes/btUniformScalingShape.cpp",
|
||||
"BulletCollision/Gimpact/btContactProcessing.cpp",
|
||||
"BulletCollision/Gimpact/btGenericPoolAllocator.cpp",
|
||||
"BulletCollision/Gimpact/btGImpactBvh.cpp",
|
||||
"BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp",
|
||||
"BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp",
|
||||
"BulletCollision/Gimpact/btGImpactShape.cpp",
|
||||
"BulletCollision/Gimpact/btTriangleShapeEx.cpp",
|
||||
"BulletCollision/Gimpact/gim_box_set.cpp",
|
||||
"BulletCollision/Gimpact/gim_contact.cpp",
|
||||
"BulletCollision/Gimpact/gim_memory.cpp",
|
||||
"BulletCollision/Gimpact/gim_tri_collision.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btConvexCast.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp",
|
||||
"BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp",
|
||||
# BulletDynamics
|
||||
, "BulletDynamics/Character/btKinematicCharacterController.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btContactConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btFixedConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btGearConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btHingeConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btSliderConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btTypedConstraint.cpp"
|
||||
, "BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp"
|
||||
, "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp"
|
||||
, "BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp"
|
||||
, "BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp"
|
||||
, "BulletDynamics/Dynamics/btRigidBody.cpp"
|
||||
, "BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp"
|
||||
#, "BulletDynamics/Dynamics/Bullet-C-API.cpp"
|
||||
, "BulletDynamics/Vehicle/btRaycastVehicle.cpp"
|
||||
, "BulletDynamics/Vehicle/btWheelInfo.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBody.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyConstraint.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyMLCPConstraintSolver.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp"
|
||||
, "BulletDynamics/Featherstone/btMultiBodySphericalJointMotor.cpp"
|
||||
, "BulletDynamics/MLCPSolvers/btDantzigLCP.cpp"
|
||||
, "BulletDynamics/MLCPSolvers/btMLCPSolver.cpp"
|
||||
, "BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp"
|
||||
|
||||
"BulletDynamics/Character/btKinematicCharacterController.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btContactConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btFixedConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btGearConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btHingeConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btSliderConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btTypedConstraint.cpp",
|
||||
"BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp",
|
||||
"BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp",
|
||||
"BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp",
|
||||
"BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp",
|
||||
"BulletDynamics/Dynamics/btRigidBody.cpp",
|
||||
"BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp",
|
||||
# "BulletDynamics/Dynamics/Bullet-C-API.cpp",
|
||||
"BulletDynamics/Vehicle/btRaycastVehicle.cpp",
|
||||
"BulletDynamics/Vehicle/btWheelInfo.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBody.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyConstraint.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyMLCPConstraintSolver.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp",
|
||||
"BulletDynamics/Featherstone/btMultiBodySphericalJointMotor.cpp",
|
||||
"BulletDynamics/MLCPSolvers/btDantzigLCP.cpp",
|
||||
"BulletDynamics/MLCPSolvers/btMLCPSolver.cpp",
|
||||
"BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp",
|
||||
# BulletInverseDynamics
|
||||
, "BulletInverseDynamics/IDMath.cpp"
|
||||
, "BulletInverseDynamics/MultiBodyTree.cpp"
|
||||
, "BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp"
|
||||
, "BulletInverseDynamics/details/MultiBodyTreeImpl.cpp"
|
||||
|
||||
"BulletInverseDynamics/IDMath.cpp",
|
||||
"BulletInverseDynamics/MultiBodyTree.cpp",
|
||||
"BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp",
|
||||
"BulletInverseDynamics/details/MultiBodyTreeImpl.cpp",
|
||||
# BulletSoftBody
|
||||
, "BulletSoftBody/btSoftBody.cpp"
|
||||
, "BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp"
|
||||
, "BulletSoftBody/btSoftBodyHelpers.cpp"
|
||||
, "BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp"
|
||||
, "BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp"
|
||||
, "BulletSoftBody/btSoftRigidDynamicsWorld.cpp"
|
||||
, "BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp"
|
||||
, "BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp"
|
||||
, "BulletSoftBody/btDefaultSoftBodySolver.cpp"
|
||||
, "BulletSoftBody/btDeformableBackwardEulerObjective.cpp"
|
||||
, "BulletSoftBody/btDeformableBodySolver.cpp"
|
||||
, "BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp"
|
||||
, "BulletSoftBody/btDeformableContactProjection.cpp"
|
||||
, "BulletSoftBody/btDeformableMultiBodyDynamicsWorld.cpp"
|
||||
, "BulletSoftBody/btDeformableContactConstraint.cpp"
|
||||
|
||||
"BulletSoftBody/btSoftBody.cpp",
|
||||
"BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp",
|
||||
"BulletSoftBody/btSoftBodyHelpers.cpp",
|
||||
"BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp",
|
||||
"BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp",
|
||||
"BulletSoftBody/btSoftRigidDynamicsWorld.cpp",
|
||||
"BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp",
|
||||
"BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp",
|
||||
"BulletSoftBody/btDefaultSoftBodySolver.cpp",
|
||||
"BulletSoftBody/btDeformableBackwardEulerObjective.cpp",
|
||||
"BulletSoftBody/btDeformableBodySolver.cpp",
|
||||
"BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp",
|
||||
"BulletSoftBody/btDeformableContactProjection.cpp",
|
||||
"BulletSoftBody/btDeformableMultiBodyDynamicsWorld.cpp",
|
||||
"BulletSoftBody/btDeformableContactConstraint.cpp",
|
||||
# clew
|
||||
, "clew/clew.c"
|
||||
|
||||
"clew/clew.c",
|
||||
# LinearMath
|
||||
, "LinearMath/btAlignedAllocator.cpp"
|
||||
, "LinearMath/btConvexHull.cpp"
|
||||
, "LinearMath/btConvexHullComputer.cpp"
|
||||
, "LinearMath/btGeometryUtil.cpp"
|
||||
, "LinearMath/btPolarDecomposition.cpp"
|
||||
, "LinearMath/btQuickprof.cpp"
|
||||
, "LinearMath/btSerializer.cpp"
|
||||
, "LinearMath/btSerializer64.cpp"
|
||||
, "LinearMath/btThreads.cpp"
|
||||
, "LinearMath/btVector3.cpp"
|
||||
, "LinearMath/TaskScheduler/btTaskScheduler.cpp"
|
||||
, "LinearMath/TaskScheduler/btThreadSupportPosix.cpp"
|
||||
, "LinearMath/TaskScheduler/btThreadSupportWin32.cpp"
|
||||
"LinearMath/btAlignedAllocator.cpp",
|
||||
"LinearMath/btConvexHull.cpp",
|
||||
"LinearMath/btConvexHullComputer.cpp",
|
||||
"LinearMath/btGeometryUtil.cpp",
|
||||
"LinearMath/btPolarDecomposition.cpp",
|
||||
"LinearMath/btQuickprof.cpp",
|
||||
"LinearMath/btSerializer.cpp",
|
||||
"LinearMath/btSerializer64.cpp",
|
||||
"LinearMath/btThreads.cpp",
|
||||
"LinearMath/btVector3.cpp",
|
||||
"LinearMath/TaskScheduler/btTaskScheduler.cpp",
|
||||
"LinearMath/TaskScheduler/btThreadSupportPosix.cpp",
|
||||
"LinearMath/TaskScheduler/btThreadSupportWin32.cpp",
|
||||
]
|
||||
|
||||
thirdparty_sources = [thirdparty_dir + file for file in bullet2_src]
|
||||
|
||||
# Treat Bullet headers as system headers to avoid raising warnings. Not supported on MSVC.
|
||||
if not env.msvc:
|
||||
env_bullet.Append(CPPFLAGS=['-isystem', Dir(thirdparty_dir).path])
|
||||
env_bullet.Append(CPPFLAGS=["-isystem", Dir(thirdparty_dir).path])
|
||||
else:
|
||||
env_bullet.Prepend(CPPPATH=[thirdparty_dir])
|
||||
# if env['target'] == "debug" or env['target'] == "release_debug":
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"BulletPhysicsDirectBodyState",
|
||||
"BulletPhysicsServer",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_camera = env_modules.Clone()
|
||||
|
||||
@@ -10,7 +10,7 @@ if env["platform"] == "iphone":
|
||||
modules_sources = []
|
||||
env_camera.add_source_files(modules_sources, "register_types.cpp")
|
||||
env_camera.add_source_files(modules_sources, "camera_ios.mm")
|
||||
mod_lib = env_modules.add_library('#bin/libgodot_camera_module' + env['LIBSUFFIX'], modules_sources)
|
||||
mod_lib = env_modules.add_library("#bin/libgodot_camera_module" + env["LIBSUFFIX"], modules_sources)
|
||||
|
||||
elif env["platform"] == "windows":
|
||||
env_camera.add_source_files(env.modules_sources, "register_types.cpp")
|
||||
@@ -19,4 +19,3 @@ elif env["platform"] == "windows":
|
||||
elif env["platform"] == "osx":
|
||||
env_camera.add_source_files(env.modules_sources, "register_types.cpp")
|
||||
env_camera.add_source_files(env.modules_sources, "camera_osx.mm")
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return platform == 'iphone' or platform == 'osx' or platform == 'windows'
|
||||
return platform == "iphone" or platform == "osx" or platform == "windows"
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_csg = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"CSGBox",
|
||||
@@ -17,5 +19,6 @@ def get_doc_classes():
|
||||
"CSGTorus",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_cvtt = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
thirdparty_dir = "#thirdparty/cvtt/"
|
||||
thirdparty_sources = [
|
||||
"ConvectionKernels.cpp"
|
||||
"ConvectionKernels.cpp",
|
||||
]
|
||||
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return env['tools']
|
||||
return env["tools"]
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_dds = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_enet = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
|
||||
if env['builtin_enet']:
|
||||
if env["builtin_enet"]:
|
||||
thirdparty_dir = "#thirdparty/enet/"
|
||||
thirdparty_sources = [
|
||||
"godot.cpp",
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"NetworkedMultiplayerENet",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_etc = env_modules.Clone()
|
||||
|
||||
@@ -9,21 +9,21 @@ env_etc = env_modules.Clone()
|
||||
# Not unbundled so far since not widespread as shared library
|
||||
thirdparty_dir = "#thirdparty/etc2comp/"
|
||||
thirdparty_sources = [
|
||||
"EtcBlock4x4.cpp",
|
||||
"EtcBlock4x4Encoding.cpp",
|
||||
"EtcBlock4x4Encoding_ETC1.cpp",
|
||||
"EtcBlock4x4Encoding_R11.cpp",
|
||||
"EtcBlock4x4Encoding_RG11.cpp",
|
||||
"EtcBlock4x4Encoding_RGB8A1.cpp",
|
||||
"EtcBlock4x4Encoding_RGB8.cpp",
|
||||
"EtcBlock4x4Encoding_RGBA8.cpp",
|
||||
"Etc.cpp",
|
||||
"EtcDifferentialTrys.cpp",
|
||||
"EtcFilter.cpp",
|
||||
"EtcImage.cpp",
|
||||
"EtcIndividualTrys.cpp",
|
||||
"EtcMath.cpp",
|
||||
"EtcSortedBlockList.cpp",
|
||||
"EtcBlock4x4.cpp",
|
||||
"EtcBlock4x4Encoding.cpp",
|
||||
"EtcBlock4x4Encoding_ETC1.cpp",
|
||||
"EtcBlock4x4Encoding_R11.cpp",
|
||||
"EtcBlock4x4Encoding_RG11.cpp",
|
||||
"EtcBlock4x4Encoding_RGB8A1.cpp",
|
||||
"EtcBlock4x4Encoding_RGB8.cpp",
|
||||
"EtcBlock4x4Encoding_RGBA8.cpp",
|
||||
"Etc.cpp",
|
||||
"EtcDifferentialTrys.cpp",
|
||||
"EtcFilter.cpp",
|
||||
"EtcImage.cpp",
|
||||
"EtcIndividualTrys.cpp",
|
||||
"EtcMath.cpp",
|
||||
"EtcSortedBlockList.cpp",
|
||||
]
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return env['tools']
|
||||
return env["tools"]
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_freetype = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_freetype']:
|
||||
if env["builtin_freetype"]:
|
||||
thirdparty_dir = "#thirdparty/freetype/"
|
||||
thirdparty_sources = [
|
||||
"src/autofit/autofit.c",
|
||||
@@ -53,31 +53,31 @@ if env['builtin_freetype']:
|
||||
]
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
if env['platform'] == 'uwp':
|
||||
if env["platform"] == "uwp":
|
||||
# Include header for UWP to fix build issues
|
||||
env_freetype.Append(CCFLAGS=['/FI', '"modules/freetype/uwpdef.h"'])
|
||||
env_freetype.Append(CCFLAGS=["/FI", '"modules/freetype/uwpdef.h"'])
|
||||
# Globally too, as freetype is used in scene (see bottom)
|
||||
env.Append(CCFLAGS=['/FI', '"modules/freetype/uwpdef.h"'])
|
||||
env.Append(CCFLAGS=["/FI", '"modules/freetype/uwpdef.h"'])
|
||||
|
||||
env_freetype.Prepend(CPPPATH=[thirdparty_dir + "/include"])
|
||||
# Also needed in main env for scene/
|
||||
env.Prepend(CPPPATH=[thirdparty_dir + "/include"])
|
||||
|
||||
env_freetype.Append(CPPDEFINES=['FT2_BUILD_LIBRARY', 'FT_CONFIG_OPTION_USE_PNG'])
|
||||
if (env['target'] == 'debug'):
|
||||
env_freetype.Append(CPPDEFINES=['ZLIB_DEBUG'])
|
||||
env_freetype.Append(CPPDEFINES=["FT2_BUILD_LIBRARY", "FT_CONFIG_OPTION_USE_PNG"])
|
||||
if env["target"] == "debug":
|
||||
env_freetype.Append(CPPDEFINES=["ZLIB_DEBUG"])
|
||||
|
||||
# Also requires libpng headers
|
||||
if env['builtin_libpng']:
|
||||
if env["builtin_libpng"]:
|
||||
env_freetype.Prepend(CPPPATH=["#thirdparty/libpng"])
|
||||
|
||||
sfnt = thirdparty_dir + 'src/sfnt/sfnt.c'
|
||||
sfnt = thirdparty_dir + "src/sfnt/sfnt.c"
|
||||
# Must be done after all CPPDEFINES are being set so we can copy them.
|
||||
if env['platform'] == 'javascript':
|
||||
if env["platform"] == "javascript":
|
||||
# Forcibly undefine this macro so SIMD is not used in this file,
|
||||
# since currently unsupported in WASM
|
||||
tmp_env = env_freetype.Clone()
|
||||
tmp_env.Append(CPPFLAGS=['-U__OPTIMIZE__'])
|
||||
tmp_env.Append(CPPFLAGS=["-U__OPTIMIZE__"])
|
||||
sfnt = tmp_env.Object(sfnt)
|
||||
thirdparty_sources += [sfnt]
|
||||
|
||||
@@ -91,7 +91,7 @@ if env['builtin_freetype']:
|
||||
# and then plain strings for system library. We insert between the two.
|
||||
inserted = False
|
||||
for idx, linklib in enumerate(env["LIBS"]):
|
||||
if isinstance(linklib, (str, bytes)): # first system lib such as "X11", otherwise SCons lib object
|
||||
if isinstance(linklib, (str, bytes)): # first system lib such as "X11", otherwise SCons lib object
|
||||
env["LIBS"].insert(idx, lib)
|
||||
inserted = True
|
||||
break
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_gdnative = env_modules.Clone()
|
||||
env_gdnative.add_source_files(env.modules_sources, "gdnative.cpp")
|
||||
@@ -12,9 +12,9 @@ env_gdnative.add_source_files(env.modules_sources, "nativescript/*.cpp")
|
||||
env_gdnative.add_source_files(env.modules_sources, "gdnative_library_singleton_editor.cpp")
|
||||
env_gdnative.add_source_files(env.modules_sources, "gdnative_library_editor_plugin.cpp")
|
||||
|
||||
env_gdnative.Prepend(CPPPATH=['#modules/gdnative/include/'])
|
||||
env_gdnative.Prepend(CPPPATH=["#modules/gdnative/include/"])
|
||||
|
||||
Export('env_gdnative')
|
||||
Export("env_gdnative")
|
||||
|
||||
SConscript("net/SCsub")
|
||||
SConscript("arvr/SCsub")
|
||||
@@ -25,8 +25,11 @@ SConscript("videodecoder/SCsub")
|
||||
from platform_methods import run_in_subprocess
|
||||
import gdnative_builders
|
||||
|
||||
_, gensource = env_gdnative.CommandNoCache(['include/gdnative_api_struct.gen.h', 'gdnative_api_struct.gen.cpp'],
|
||||
'gdnative_api.json', run_in_subprocess(gdnative_builders.build_gdnative_api_struct))
|
||||
_, gensource = env_gdnative.CommandNoCache(
|
||||
["include/gdnative_api_struct.gen.h", "gdnative_api_struct.gen.cpp"],
|
||||
"gdnative_api.json",
|
||||
run_in_subprocess(gdnative_builders.build_gdnative_api_struct),
|
||||
)
|
||||
env_gdnative.add_source_files(env.modules_sources, [gensource])
|
||||
|
||||
env.use_ptrcall = True
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_gdnative')
|
||||
Import("env")
|
||||
Import("env_gdnative")
|
||||
|
||||
env_gdnative.add_source_files(env.modules_sources, '*.cpp')
|
||||
env_gdnative.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
env.use_ptrcall = True
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"@NativeScript",
|
||||
@@ -20,5 +22,6 @@ def get_doc_classes():
|
||||
"WebRTCDataChannelGDNative",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -8,209 +8,249 @@ from platform_methods import subprocess_main
|
||||
|
||||
|
||||
def _spaced(e):
|
||||
return e if e[-1] == '*' else e + ' '
|
||||
return e if e[-1] == "*" else e + " "
|
||||
|
||||
|
||||
def _build_gdnative_api_struct_header(api):
|
||||
out = [
|
||||
'/* THIS FILE IS GENERATED DO NOT EDIT */',
|
||||
'#ifndef GODOT_GDNATIVE_API_STRUCT_H',
|
||||
'#define GODOT_GDNATIVE_API_STRUCT_H',
|
||||
'',
|
||||
'#include <gdnative/gdnative.h>',
|
||||
'#include <android/godot_android.h>',
|
||||
'#include <arvr/godot_arvr.h>',
|
||||
'#include <nativescript/godot_nativescript.h>',
|
||||
'#include <net/godot_net.h>',
|
||||
'#include <pluginscript/godot_pluginscript.h>',
|
||||
'#include <videodecoder/godot_videodecoder.h>',
|
||||
'',
|
||||
'#ifdef __cplusplus',
|
||||
"/* THIS FILE IS GENERATED DO NOT EDIT */",
|
||||
"#ifndef GODOT_GDNATIVE_API_STRUCT_H",
|
||||
"#define GODOT_GDNATIVE_API_STRUCT_H",
|
||||
"",
|
||||
"#include <gdnative/gdnative.h>",
|
||||
"#include <android/godot_android.h>",
|
||||
"#include <arvr/godot_arvr.h>",
|
||||
"#include <nativescript/godot_nativescript.h>",
|
||||
"#include <net/godot_net.h>",
|
||||
"#include <pluginscript/godot_pluginscript.h>",
|
||||
"#include <videodecoder/godot_videodecoder.h>",
|
||||
"",
|
||||
"#ifdef __cplusplus",
|
||||
'extern "C" {',
|
||||
'#endif',
|
||||
'',
|
||||
'enum GDNATIVE_API_TYPES {',
|
||||
'\tGDNATIVE_' + api['core']['type'] + ','
|
||||
"#endif",
|
||||
"",
|
||||
"enum GDNATIVE_API_TYPES {",
|
||||
"\tGDNATIVE_" + api["core"]["type"] + ",",
|
||||
]
|
||||
|
||||
for ext in api['extensions']:
|
||||
out += ['\tGDNATIVE_EXT_' + ext['type'] + ',']
|
||||
for ext in api["extensions"]:
|
||||
out += ["\tGDNATIVE_EXT_" + ext["type"] + ","]
|
||||
|
||||
out += ['};', '']
|
||||
out += ["};", ""]
|
||||
|
||||
def generate_extension_struct(name, ext, include_version=True):
|
||||
ret_val = []
|
||||
if ext['next']:
|
||||
ret_val += generate_extension_struct(name, ext['next'])
|
||||
if ext["next"]:
|
||||
ret_val += generate_extension_struct(name, ext["next"])
|
||||
|
||||
ret_val += [
|
||||
'typedef struct godot_gdnative_ext_' + name + ('' if not include_version else ('_{0}_{1}'.format(ext['version']['major'], ext['version']['minor']))) + '_api_struct {',
|
||||
'\tunsigned int type;',
|
||||
'\tgodot_gdnative_api_version version;',
|
||||
'\tconst godot_gdnative_api_struct *next;'
|
||||
"typedef struct godot_gdnative_ext_"
|
||||
+ name
|
||||
+ ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"])))
|
||||
+ "_api_struct {",
|
||||
"\tunsigned int type;",
|
||||
"\tgodot_gdnative_api_version version;",
|
||||
"\tconst godot_gdnative_api_struct *next;",
|
||||
]
|
||||
|
||||
for funcdef in ext['api']:
|
||||
args = ', '.join(['%s%s' % (_spaced(t), n) for t, n in funcdef['arguments']])
|
||||
ret_val.append('\t%s(*%s)(%s);' % (_spaced(funcdef['return_type']), funcdef['name'], args))
|
||||
for funcdef in ext["api"]:
|
||||
args = ", ".join(["%s%s" % (_spaced(t), n) for t, n in funcdef["arguments"]])
|
||||
ret_val.append("\t%s(*%s)(%s);" % (_spaced(funcdef["return_type"]), funcdef["name"], args))
|
||||
|
||||
ret_val += ['} godot_gdnative_ext_' + name + ('' if not include_version else ('_{0}_{1}'.format(ext['version']['major'], ext['version']['minor']))) + '_api_struct;', '']
|
||||
ret_val += [
|
||||
"} godot_gdnative_ext_"
|
||||
+ name
|
||||
+ ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"])))
|
||||
+ "_api_struct;",
|
||||
"",
|
||||
]
|
||||
|
||||
return ret_val
|
||||
|
||||
|
||||
def generate_core_extension_struct(core):
|
||||
ret_val = []
|
||||
if core['next']:
|
||||
ret_val += generate_core_extension_struct(core['next'])
|
||||
if core["next"]:
|
||||
ret_val += generate_core_extension_struct(core["next"])
|
||||
|
||||
ret_val += [
|
||||
'typedef struct godot_gdnative_core_' + ('{0}_{1}'.format(core['version']['major'], core['version']['minor'])) + '_api_struct {',
|
||||
'\tunsigned int type;',
|
||||
'\tgodot_gdnative_api_version version;',
|
||||
'\tconst godot_gdnative_api_struct *next;',
|
||||
"typedef struct godot_gdnative_core_"
|
||||
+ ("{0}_{1}".format(core["version"]["major"], core["version"]["minor"]))
|
||||
+ "_api_struct {",
|
||||
"\tunsigned int type;",
|
||||
"\tgodot_gdnative_api_version version;",
|
||||
"\tconst godot_gdnative_api_struct *next;",
|
||||
]
|
||||
|
||||
for funcdef in core['api']:
|
||||
args = ', '.join(['%s%s' % (_spaced(t), n) for t, n in funcdef['arguments']])
|
||||
ret_val.append('\t%s(*%s)(%s);' % (_spaced(funcdef['return_type']), funcdef['name'], args))
|
||||
for funcdef in core["api"]:
|
||||
args = ", ".join(["%s%s" % (_spaced(t), n) for t, n in funcdef["arguments"]])
|
||||
ret_val.append("\t%s(*%s)(%s);" % (_spaced(funcdef["return_type"]), funcdef["name"], args))
|
||||
|
||||
ret_val += ['} godot_gdnative_core_' + '{0}_{1}'.format(core['version']['major'], core['version']['minor']) + '_api_struct;', '']
|
||||
ret_val += [
|
||||
"} godot_gdnative_core_"
|
||||
+ "{0}_{1}".format(core["version"]["major"], core["version"]["minor"])
|
||||
+ "_api_struct;",
|
||||
"",
|
||||
]
|
||||
|
||||
return ret_val
|
||||
|
||||
|
||||
for ext in api['extensions']:
|
||||
name = ext['name']
|
||||
for ext in api["extensions"]:
|
||||
name = ext["name"]
|
||||
out += generate_extension_struct(name, ext, False)
|
||||
|
||||
if api['core']['next']:
|
||||
out += generate_core_extension_struct(api['core']['next'])
|
||||
if api["core"]["next"]:
|
||||
out += generate_core_extension_struct(api["core"]["next"])
|
||||
|
||||
out += [
|
||||
'typedef struct godot_gdnative_core_api_struct {',
|
||||
'\tunsigned int type;',
|
||||
'\tgodot_gdnative_api_version version;',
|
||||
'\tconst godot_gdnative_api_struct *next;',
|
||||
'\tunsigned int num_extensions;',
|
||||
'\tconst godot_gdnative_api_struct **extensions;',
|
||||
"typedef struct godot_gdnative_core_api_struct {",
|
||||
"\tunsigned int type;",
|
||||
"\tgodot_gdnative_api_version version;",
|
||||
"\tconst godot_gdnative_api_struct *next;",
|
||||
"\tunsigned int num_extensions;",
|
||||
"\tconst godot_gdnative_api_struct **extensions;",
|
||||
]
|
||||
|
||||
for funcdef in api['core']['api']:
|
||||
args = ', '.join(['%s%s' % (_spaced(t), n) for t, n in funcdef['arguments']])
|
||||
out.append('\t%s(*%s)(%s);' % (_spaced(funcdef['return_type']), funcdef['name'], args))
|
||||
for funcdef in api["core"]["api"]:
|
||||
args = ", ".join(["%s%s" % (_spaced(t), n) for t, n in funcdef["arguments"]])
|
||||
out.append("\t%s(*%s)(%s);" % (_spaced(funcdef["return_type"]), funcdef["name"], args))
|
||||
|
||||
out += [
|
||||
'} godot_gdnative_core_api_struct;',
|
||||
'',
|
||||
'#ifdef __cplusplus',
|
||||
'}',
|
||||
'#endif',
|
||||
'',
|
||||
'#endif // GODOT_GDNATIVE_API_STRUCT_H',
|
||||
''
|
||||
"} godot_gdnative_core_api_struct;",
|
||||
"",
|
||||
"#ifdef __cplusplus",
|
||||
"}",
|
||||
"#endif",
|
||||
"",
|
||||
"#endif // GODOT_GDNATIVE_API_STRUCT_H",
|
||||
"",
|
||||
]
|
||||
return '\n'.join(out)
|
||||
return "\n".join(out)
|
||||
|
||||
|
||||
def _build_gdnative_api_struct_source(api):
|
||||
out = [
|
||||
'/* THIS FILE IS GENERATED DO NOT EDIT */',
|
||||
'',
|
||||
'#include <gdnative_api_struct.gen.h>',
|
||||
''
|
||||
]
|
||||
out = ["/* THIS FILE IS GENERATED DO NOT EDIT */", "", "#include <gdnative_api_struct.gen.h>", ""]
|
||||
|
||||
def get_extension_struct_name(name, ext, include_version=True):
|
||||
return 'godot_gdnative_ext_' + name + ('' if not include_version else ('_{0}_{1}'.format(ext['version']['major'], ext['version']['minor']))) + '_api_struct'
|
||||
return (
|
||||
"godot_gdnative_ext_"
|
||||
+ name
|
||||
+ ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"])))
|
||||
+ "_api_struct"
|
||||
)
|
||||
|
||||
def get_extension_struct_instance_name(name, ext, include_version=True):
|
||||
return 'api_extension_' + name + ('' if not include_version else ('_{0}_{1}'.format(ext['version']['major'], ext['version']['minor']))) + '_struct'
|
||||
return (
|
||||
"api_extension_"
|
||||
+ name
|
||||
+ ("" if not include_version else ("_{0}_{1}".format(ext["version"]["major"], ext["version"]["minor"])))
|
||||
+ "_struct"
|
||||
)
|
||||
|
||||
def get_extension_struct_definition(name, ext, include_version=True):
|
||||
|
||||
ret_val = []
|
||||
|
||||
if ext['next']:
|
||||
ret_val += get_extension_struct_definition(name, ext['next'])
|
||||
if ext["next"]:
|
||||
ret_val += get_extension_struct_definition(name, ext["next"])
|
||||
|
||||
ret_val += [
|
||||
'extern const ' + get_extension_struct_name(name, ext, include_version) + ' ' + get_extension_struct_instance_name(name, ext, include_version) + ' = {',
|
||||
'\tGDNATIVE_EXT_' + ext['type'] + ',',
|
||||
'\t{' + str(ext['version']['major']) + ', ' + str(ext['version']['minor']) + '},',
|
||||
'\t' + ('NULL' if not ext['next'] else ('(const godot_gdnative_api_struct *)&' + get_extension_struct_instance_name(name, ext['next']))) + ','
|
||||
"extern const "
|
||||
+ get_extension_struct_name(name, ext, include_version)
|
||||
+ " "
|
||||
+ get_extension_struct_instance_name(name, ext, include_version)
|
||||
+ " = {",
|
||||
"\tGDNATIVE_EXT_" + ext["type"] + ",",
|
||||
"\t{" + str(ext["version"]["major"]) + ", " + str(ext["version"]["minor"]) + "},",
|
||||
"\t"
|
||||
+ (
|
||||
"NULL"
|
||||
if not ext["next"]
|
||||
else ("(const godot_gdnative_api_struct *)&" + get_extension_struct_instance_name(name, ext["next"]))
|
||||
)
|
||||
+ ",",
|
||||
]
|
||||
|
||||
for funcdef in ext['api']:
|
||||
ret_val.append('\t%s,' % funcdef['name'])
|
||||
for funcdef in ext["api"]:
|
||||
ret_val.append("\t%s," % funcdef["name"])
|
||||
|
||||
ret_val += ['};\n']
|
||||
ret_val += ["};\n"]
|
||||
|
||||
return ret_val
|
||||
|
||||
|
||||
def get_core_struct_definition(core):
|
||||
ret_val = []
|
||||
|
||||
if core['next']:
|
||||
ret_val += get_core_struct_definition(core['next'])
|
||||
if core["next"]:
|
||||
ret_val += get_core_struct_definition(core["next"])
|
||||
|
||||
ret_val += [
|
||||
'extern const godot_gdnative_core_' + ('{0}_{1}_api_struct api_{0}_{1}'.format(core['version']['major'], core['version']['minor'])) + ' = {',
|
||||
'\tGDNATIVE_' + core['type'] + ',',
|
||||
'\t{' + str(core['version']['major']) + ', ' + str(core['version']['minor']) + '},',
|
||||
'\t' + ('NULL' if not core['next'] else ('(const godot_gdnative_api_struct *)& api_{0}_{1}'.format(core['next']['version']['major'], core['next']['version']['minor']))) + ','
|
||||
"extern const godot_gdnative_core_"
|
||||
+ ("{0}_{1}_api_struct api_{0}_{1}".format(core["version"]["major"], core["version"]["minor"]))
|
||||
+ " = {",
|
||||
"\tGDNATIVE_" + core["type"] + ",",
|
||||
"\t{" + str(core["version"]["major"]) + ", " + str(core["version"]["minor"]) + "},",
|
||||
"\t"
|
||||
+ (
|
||||
"NULL"
|
||||
if not core["next"]
|
||||
else (
|
||||
"(const godot_gdnative_api_struct *)& api_{0}_{1}".format(
|
||||
core["next"]["version"]["major"], core["next"]["version"]["minor"]
|
||||
)
|
||||
)
|
||||
)
|
||||
+ ",",
|
||||
]
|
||||
|
||||
for funcdef in core['api']:
|
||||
ret_val.append('\t%s,' % funcdef['name'])
|
||||
for funcdef in core["api"]:
|
||||
ret_val.append("\t%s," % funcdef["name"])
|
||||
|
||||
ret_val += ['};\n']
|
||||
ret_val += ["};\n"]
|
||||
|
||||
return ret_val
|
||||
|
||||
for ext in api['extensions']:
|
||||
name = ext['name']
|
||||
for ext in api["extensions"]:
|
||||
name = ext["name"]
|
||||
out += get_extension_struct_definition(name, ext, False)
|
||||
|
||||
out += ['', 'const godot_gdnative_api_struct *gdnative_extensions_pointers[] = {']
|
||||
out += ["", "const godot_gdnative_api_struct *gdnative_extensions_pointers[] = {"]
|
||||
|
||||
for ext in api['extensions']:
|
||||
name = ext['name']
|
||||
out += ['\t(godot_gdnative_api_struct *)&api_extension_' + name + '_struct,']
|
||||
for ext in api["extensions"]:
|
||||
name = ext["name"]
|
||||
out += ["\t(godot_gdnative_api_struct *)&api_extension_" + name + "_struct,"]
|
||||
|
||||
out += ['};\n']
|
||||
out += ["};\n"]
|
||||
|
||||
if api['core']['next']:
|
||||
out += get_core_struct_definition(api['core']['next'])
|
||||
if api["core"]["next"]:
|
||||
out += get_core_struct_definition(api["core"]["next"])
|
||||
|
||||
out += [
|
||||
'extern const godot_gdnative_core_api_struct api_struct = {',
|
||||
'\tGDNATIVE_' + api['core']['type'] + ',',
|
||||
'\t{' + str(api['core']['version']['major']) + ', ' + str(api['core']['version']['minor']) + '},',
|
||||
'\t(const godot_gdnative_api_struct *)&api_1_1,',
|
||||
'\t' + str(len(api['extensions'])) + ',',
|
||||
'\tgdnative_extensions_pointers,',
|
||||
"extern const godot_gdnative_core_api_struct api_struct = {",
|
||||
"\tGDNATIVE_" + api["core"]["type"] + ",",
|
||||
"\t{" + str(api["core"]["version"]["major"]) + ", " + str(api["core"]["version"]["minor"]) + "},",
|
||||
"\t(const godot_gdnative_api_struct *)&api_1_1,",
|
||||
"\t" + str(len(api["extensions"])) + ",",
|
||||
"\tgdnative_extensions_pointers,",
|
||||
]
|
||||
|
||||
for funcdef in api['core']['api']:
|
||||
out.append('\t%s,' % funcdef['name'])
|
||||
out.append('};\n')
|
||||
for funcdef in api["core"]["api"]:
|
||||
out.append("\t%s," % funcdef["name"])
|
||||
out.append("};\n")
|
||||
|
||||
return '\n'.join(out)
|
||||
return "\n".join(out)
|
||||
|
||||
|
||||
def build_gdnative_api_struct(target, source, env):
|
||||
|
||||
with open(source[0], 'r') as fd:
|
||||
with open(source[0], "r") as fd:
|
||||
api = json.load(fd)
|
||||
|
||||
header, source = target
|
||||
with open(header, 'w') as fd:
|
||||
with open(header, "w") as fd:
|
||||
fd.write(_build_gdnative_api_struct_header(api))
|
||||
with open(source, 'w') as fd:
|
||||
with open(source, "w") as fd:
|
||||
fd.write(_build_gdnative_api_struct_source(api))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
subprocess_main(globals())
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_gdnative')
|
||||
Import("env")
|
||||
Import("env_gdnative")
|
||||
|
||||
env_gdnative.add_source_files(env.modules_sources, '*.cpp')
|
||||
env_gdnative.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
if "platform" in env and env["platform"] in ["linuxbsd", "iphone"]:
|
||||
env.Append(LINKFLAGS=["-rdynamic"])
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_gdnative')
|
||||
Import("env")
|
||||
Import("env_gdnative")
|
||||
|
||||
env_net = env_gdnative.Clone()
|
||||
|
||||
has_webrtc = env_net["module_webrtc_enabled"]
|
||||
if has_webrtc:
|
||||
env_net.Append(CPPDEFINES=['WEBRTC_GDNATIVE_ENABLED'])
|
||||
|
||||
env_net.add_source_files(env.modules_sources, '*.cpp')
|
||||
env_net.Append(CPPDEFINES=["WEBRTC_GDNATIVE_ENABLED"])
|
||||
|
||||
env_net.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_gdnative')
|
||||
Import("env")
|
||||
Import("env_gdnative")
|
||||
|
||||
env_gdnative.add_source_files(env.modules_sources, '*.cpp')
|
||||
env_gdnative.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_vsdecoder_gdnative = env_modules.Clone()
|
||||
|
||||
env_vsdecoder_gdnative.Prepend(CPPPATH=['#modules/gdnative/include/'])
|
||||
env_vsdecoder_gdnative.add_source_files(env.modules_sources, '*.cpp')
|
||||
env_vsdecoder_gdnative.Prepend(CPPPATH=["#modules/gdnative/include/"])
|
||||
env_vsdecoder_gdnative.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_navigation = env_modules.Clone()
|
||||
|
||||
# Recast Thirdparty source files
|
||||
if env['builtin_recast']:
|
||||
if env["builtin_recast"]:
|
||||
thirdparty_dir = "#thirdparty/recastnavigation/Recast/"
|
||||
thirdparty_sources = [
|
||||
"Source/Recast.cpp",
|
||||
"Source/RecastAlloc.cpp",
|
||||
"Source/RecastArea.cpp",
|
||||
"Source/RecastAssert.cpp",
|
||||
"Source/RecastContour.cpp",
|
||||
"Source/RecastFilter.cpp",
|
||||
"Source/RecastLayers.cpp",
|
||||
"Source/RecastMesh.cpp",
|
||||
"Source/RecastMeshDetail.cpp",
|
||||
"Source/RecastRasterization.cpp",
|
||||
"Source/RecastRegion.cpp",
|
||||
"Source/Recast.cpp",
|
||||
"Source/RecastAlloc.cpp",
|
||||
"Source/RecastArea.cpp",
|
||||
"Source/RecastAssert.cpp",
|
||||
"Source/RecastContour.cpp",
|
||||
"Source/RecastFilter.cpp",
|
||||
"Source/RecastLayers.cpp",
|
||||
"Source/RecastMesh.cpp",
|
||||
"Source/RecastMeshDetail.cpp",
|
||||
"Source/RecastRasterization.cpp",
|
||||
"Source/RecastRegion.cpp",
|
||||
]
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
@@ -31,11 +31,11 @@ if env['builtin_recast']:
|
||||
|
||||
|
||||
# RVO Thirdparty source files
|
||||
if env['builtin_rvo2']:
|
||||
if env["builtin_rvo2"]:
|
||||
thirdparty_dir = "#thirdparty/rvo2"
|
||||
thirdparty_sources = [
|
||||
"/src/Agent.cpp",
|
||||
"/src/KdTree.cpp",
|
||||
"/src/Agent.cpp",
|
||||
"/src/KdTree.cpp",
|
||||
]
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_gdscript = env_modules.Clone()
|
||||
|
||||
env_gdscript.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
if env['tools']:
|
||||
if env["tools"]:
|
||||
env_gdscript.add_source_files(env.modules_sources, "./editor/*.cpp")
|
||||
|
||||
# Those two modules are required for the language server protocol
|
||||
if env['module_jsonrpc_enabled'] and env['module_websocket_enabled']:
|
||||
if env["module_jsonrpc_enabled"] and env["module_websocket_enabled"]:
|
||||
env_gdscript.add_source_files(env.modules_sources, "./language_server/*.cpp")
|
||||
else:
|
||||
# Using a define in the disabled case, to avoid having an extra define
|
||||
# in regular builds where all modules are enabled.
|
||||
env_gdscript.Append(CPPDEFINES=['GDSCRIPT_NO_LSP'])
|
||||
env_gdscript.Append(CPPDEFINES=["GDSCRIPT_NO_LSP"])
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"@GDScript",
|
||||
@@ -12,5 +14,6 @@ def get_doc_classes():
|
||||
"GDScriptNativeClass",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_glslang = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_glslang']:
|
||||
if env["builtin_glslang"]:
|
||||
thirdparty_dir = "#thirdparty/glslang/"
|
||||
thirdparty_sources = [
|
||||
"glslang/MachineIndependent/RemoveTree.cpp",
|
||||
@@ -48,10 +48,10 @@ if env['builtin_glslang']:
|
||||
"SPIRV/doc.cpp",
|
||||
"SPIRV/SPVRemapper.cpp",
|
||||
"SPIRV/SpvPostProcess.cpp",
|
||||
"SPIRV/Logger.cpp"
|
||||
"SPIRV/Logger.cpp",
|
||||
]
|
||||
|
||||
if (env["platform"]=="windows"):
|
||||
if env["platform"] == "windows":
|
||||
thirdparty_sources.append("glslang/OSDependent/Windows/ossource.cpp")
|
||||
else:
|
||||
thirdparty_sources.append("glslang/OSDependent/Unix/ossource.cpp")
|
||||
@@ -60,7 +60,7 @@ if env['builtin_glslang']:
|
||||
|
||||
# Treat glslang headers as system headers to avoid raising warnings. Not supported on MSVC.
|
||||
if not env.msvc:
|
||||
env_glslang.Append(CPPFLAGS=['-isystem', Dir(thirdparty_dir).path])
|
||||
env_glslang.Append(CPPFLAGS=["-isystem", Dir(thirdparty_dir).path])
|
||||
else:
|
||||
env_glslang.Prepend(CPPPATH=[thirdparty_dir])
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_gridmap = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"GridMap",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_hdr = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_jpg = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_jsonrpc = env_modules.Clone()
|
||||
env_jsonrpc.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_mbed_tls = env_modules.Clone()
|
||||
|
||||
if env['builtin_mbedtls']:
|
||||
if env["builtin_mbedtls"]:
|
||||
# Thirdparty source files
|
||||
thirdparty_sources = [
|
||||
"aes.c",
|
||||
@@ -86,7 +86,7 @@ if env['builtin_mbedtls']:
|
||||
"x509_csr.c",
|
||||
"x509write_crt.c",
|
||||
"x509write_csr.c",
|
||||
"xtea.c"
|
||||
"xtea.c",
|
||||
]
|
||||
|
||||
thirdparty_dir = "#thirdparty/mbedtls/library/"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_mobile_vr = env_modules.Clone()
|
||||
|
||||
env_mobile_vr.add_source_files(env.modules_sources, '*.cpp')
|
||||
env_mobile_vr.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"MobileVRInterface",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -7,10 +7,10 @@ from platform_methods import subprocess_main
|
||||
|
||||
|
||||
def generate_modules_enabled(target, source, env):
|
||||
with open(target[0].path, 'w') as f:
|
||||
with open(target[0].path, "w") as f:
|
||||
for module in env.module_list:
|
||||
f.write('#define %s\n' % ("MODULE_" + module.upper() + "_ENABLED"))
|
||||
f.write("#define %s\n" % ("MODULE_" + module.upper() + "_ENABLED"))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
subprocess_main(globals())
|
||||
|
||||
@@ -2,46 +2,50 @@
|
||||
|
||||
import build_scripts.mono_configure as mono_configure
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_mono = env_modules.Clone()
|
||||
|
||||
if env_mono['tools']:
|
||||
if env_mono["tools"]:
|
||||
# NOTE: It is safe to generate this file here, since this is still executed serially
|
||||
import build_scripts.gen_cs_glue_version as gen_cs_glue_version
|
||||
gen_cs_glue_version.generate_header('glue/GodotSharp', 'glue/cs_glue_version.gen.h')
|
||||
|
||||
gen_cs_glue_version.generate_header("glue/GodotSharp", "glue/cs_glue_version.gen.h")
|
||||
|
||||
# Glue sources
|
||||
if env_mono['mono_glue']:
|
||||
env_mono.Append(CPPDEFINES=['MONO_GLUE_ENABLED'])
|
||||
if env_mono["mono_glue"]:
|
||||
env_mono.Append(CPPDEFINES=["MONO_GLUE_ENABLED"])
|
||||
|
||||
import os.path
|
||||
if not os.path.isfile('glue/mono_glue.gen.cpp'):
|
||||
|
||||
if not os.path.isfile("glue/mono_glue.gen.cpp"):
|
||||
raise RuntimeError("Mono glue sources not found. Did you forget to run '--generate-mono-glue'?")
|
||||
|
||||
if env_mono['tools'] or env_mono['target'] != 'release':
|
||||
env_mono.Append(CPPDEFINES=['GD_MONO_HOT_RELOAD'])
|
||||
if env_mono["tools"] or env_mono["target"] != "release":
|
||||
env_mono.Append(CPPDEFINES=["GD_MONO_HOT_RELOAD"])
|
||||
|
||||
# Configure Mono
|
||||
|
||||
mono_configure.configure(env, env_mono)
|
||||
|
||||
if env_mono['tools'] and env_mono['mono_glue']:
|
||||
if env_mono["tools"] and env_mono["mono_glue"]:
|
||||
# Build Godot API solution
|
||||
import build_scripts.api_solution_build as api_solution_build
|
||||
|
||||
api_sln_cmd = api_solution_build.build(env_mono)
|
||||
|
||||
# Build GodotTools
|
||||
import build_scripts.godot_tools_build as godot_tools_build
|
||||
|
||||
godot_tools_build.build(env_mono, api_sln_cmd)
|
||||
|
||||
# Add sources
|
||||
|
||||
env_mono.add_source_files(env.modules_sources, '*.cpp')
|
||||
env_mono.add_source_files(env.modules_sources, 'glue/*.cpp')
|
||||
env_mono.add_source_files(env.modules_sources, 'mono_gd/*.cpp')
|
||||
env_mono.add_source_files(env.modules_sources, 'utils/*.cpp')
|
||||
env_mono.add_source_files(env.modules_sources, "*.cpp")
|
||||
env_mono.add_source_files(env.modules_sources, "glue/*.cpp")
|
||||
env_mono.add_source_files(env.modules_sources, "mono_gd/*.cpp")
|
||||
env_mono.add_source_files(env.modules_sources, "utils/*.cpp")
|
||||
|
||||
if env['tools']:
|
||||
env_mono.add_source_files(env.modules_sources, 'editor/*.cpp')
|
||||
if env["tools"]:
|
||||
env_mono.add_source_files(env.modules_sources, "editor/*.cpp")
|
||||
|
||||
@@ -8,21 +8,22 @@ from SCons.Script import Dir
|
||||
def build_api_solution(source, target, env):
|
||||
# source and target elements are of type SCons.Node.FS.File, hence why we convert them to str
|
||||
|
||||
module_dir = env['module_dir']
|
||||
module_dir = env["module_dir"]
|
||||
|
||||
solution_path = os.path.join(module_dir, 'glue/GodotSharp/GodotSharp.sln')
|
||||
solution_path = os.path.join(module_dir, "glue/GodotSharp/GodotSharp.sln")
|
||||
|
||||
build_config = env['solution_build_config']
|
||||
build_config = env["solution_build_config"]
|
||||
|
||||
extra_msbuild_args = ['/p:NoWarn=1591'] # Ignore missing documentation warnings
|
||||
extra_msbuild_args = ["/p:NoWarn=1591"] # Ignore missing documentation warnings
|
||||
|
||||
from .solution_builder import build_solution
|
||||
|
||||
build_solution(env, solution_path, build_config, extra_msbuild_args=extra_msbuild_args)
|
||||
|
||||
# Copy targets
|
||||
|
||||
core_src_dir = os.path.abspath(os.path.join(solution_path, os.pardir, 'GodotSharp', 'bin', build_config))
|
||||
editor_src_dir = os.path.abspath(os.path.join(solution_path, os.pardir, 'GodotSharpEditor', 'bin', build_config))
|
||||
core_src_dir = os.path.abspath(os.path.join(solution_path, os.pardir, "GodotSharp", "bin", build_config))
|
||||
editor_src_dir = os.path.abspath(os.path.join(solution_path, os.pardir, "GodotSharpEditor", "bin", build_config))
|
||||
|
||||
dst_dir = os.path.abspath(os.path.join(str(target[0]), os.pardir))
|
||||
|
||||
@@ -32,6 +33,7 @@ def build_api_solution(source, target, env):
|
||||
|
||||
def copy_target(target_path):
|
||||
from shutil import copy
|
||||
|
||||
filename = os.path.basename(target_path)
|
||||
|
||||
src_path = os.path.join(core_src_dir, filename)
|
||||
@@ -45,23 +47,28 @@ def build_api_solution(source, target, env):
|
||||
|
||||
|
||||
def build(env_mono):
|
||||
assert env_mono['tools']
|
||||
assert env_mono["tools"]
|
||||
|
||||
target_filenames = [
|
||||
'GodotSharp.dll', 'GodotSharp.pdb', 'GodotSharp.xml',
|
||||
'GodotSharpEditor.dll', 'GodotSharpEditor.pdb', 'GodotSharpEditor.xml'
|
||||
"GodotSharp.dll",
|
||||
"GodotSharp.pdb",
|
||||
"GodotSharp.xml",
|
||||
"GodotSharpEditor.dll",
|
||||
"GodotSharpEditor.pdb",
|
||||
"GodotSharpEditor.xml",
|
||||
]
|
||||
|
||||
depend_cmd = []
|
||||
|
||||
for build_config in ['Debug', 'Release']:
|
||||
output_dir = Dir('#bin').abspath
|
||||
editor_api_dir = os.path.join(output_dir, 'GodotSharp', 'Api', build_config)
|
||||
for build_config in ["Debug", "Release"]:
|
||||
output_dir = Dir("#bin").abspath
|
||||
editor_api_dir = os.path.join(output_dir, "GodotSharp", "Api", build_config)
|
||||
|
||||
targets = [os.path.join(editor_api_dir, filename) for filename in target_filenames]
|
||||
|
||||
cmd = env_mono.CommandNoCache(targets, depend_cmd, build_api_solution,
|
||||
module_dir=os.getcwd(), solution_build_config=build_config)
|
||||
cmd = env_mono.CommandNoCache(
|
||||
targets, depend_cmd, build_api_solution, module_dir=os.getcwd(), solution_build_config=build_config
|
||||
)
|
||||
env_mono.AlwaysBuild(cmd)
|
||||
|
||||
# Make the Release build of the API solution depend on the Debug build.
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|
||||
def generate_header(solution_dir, version_header_dst):
|
||||
import os
|
||||
|
||||
latest_mtime = 0
|
||||
for root, dirs, files in os.walk(solution_dir, topdown=True):
|
||||
dirs[:] = [d for d in dirs if d not in ['Generated']] # Ignored generated files
|
||||
files = [f for f in files if f.endswith('.cs')]
|
||||
dirs[:] = [d for d in dirs if d not in ["Generated"]] # Ignored generated files
|
||||
files = [f for f in files if f.endswith(".cs")]
|
||||
for file in files:
|
||||
filepath = os.path.join(root, file)
|
||||
mtime = os.path.getmtime(filepath)
|
||||
latest_mtime = mtime if mtime > latest_mtime else latest_mtime
|
||||
|
||||
glue_version = int(latest_mtime) # The latest modified time will do for now
|
||||
glue_version = int(latest_mtime) # The latest modified time will do for now
|
||||
|
||||
with open(version_header_dst, 'w') as version_header:
|
||||
version_header.write('/* THIS FILE IS GENERATED DO NOT EDIT */\n')
|
||||
version_header.write('#ifndef CS_GLUE_VERSION_H\n')
|
||||
version_header.write('#define CS_GLUE_VERSION_H\n\n')
|
||||
version_header.write('#define CS_GLUE_VERSION UINT32_C(' + str(glue_version) + ')\n')
|
||||
version_header.write('\n#endif // CS_GLUE_VERSION_H\n')
|
||||
with open(version_header_dst, "w") as version_header:
|
||||
version_header.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
|
||||
version_header.write("#ifndef CS_GLUE_VERSION_H\n")
|
||||
version_header.write("#define CS_GLUE_VERSION_H\n\n")
|
||||
version_header.write("#define CS_GLUE_VERSION UINT32_C(" + str(glue_version) + ")\n")
|
||||
version_header.write("\n#endif // CS_GLUE_VERSION_H\n")
|
||||
|
||||
@@ -8,30 +8,31 @@ from SCons.Script import Dir
|
||||
def build_godot_tools(source, target, env):
|
||||
# source and target elements are of type SCons.Node.FS.File, hence why we convert them to str
|
||||
|
||||
module_dir = env['module_dir']
|
||||
module_dir = env["module_dir"]
|
||||
|
||||
solution_path = os.path.join(module_dir, 'editor/GodotTools/GodotTools.sln')
|
||||
build_config = 'Debug' if env['target'] == 'debug' else 'Release'
|
||||
solution_path = os.path.join(module_dir, "editor/GodotTools/GodotTools.sln")
|
||||
build_config = "Debug" if env["target"] == "debug" else "Release"
|
||||
|
||||
# Custom build target to make sure output is always copied to the data dir.
|
||||
extra_build_args = ['/Target:Build;GodotTools:BuildAlwaysCopyToDataDir']
|
||||
extra_build_args = ["/Target:Build;GodotTools:BuildAlwaysCopyToDataDir"]
|
||||
|
||||
from .solution_builder import build_solution, nuget_restore
|
||||
|
||||
from . solution_builder import build_solution, nuget_restore
|
||||
nuget_restore(env, solution_path)
|
||||
build_solution(env, solution_path, build_config, extra_build_args)
|
||||
# No need to copy targets. The GodotTools csproj takes care of copying them.
|
||||
|
||||
|
||||
def build(env_mono, api_sln_cmd):
|
||||
assert env_mono['tools']
|
||||
assert env_mono["tools"]
|
||||
|
||||
output_dir = Dir('#bin').abspath
|
||||
editor_tools_dir = os.path.join(output_dir, 'GodotSharp', 'Tools')
|
||||
output_dir = Dir("#bin").abspath
|
||||
editor_tools_dir = os.path.join(output_dir, "GodotSharp", "Tools")
|
||||
|
||||
target_filenames = ['GodotTools.dll']
|
||||
target_filenames = ["GodotTools.dll"]
|
||||
|
||||
if env_mono['target'] == 'debug':
|
||||
target_filenames += ['GodotTools.pdb']
|
||||
if env_mono["target"] == "debug":
|
||||
target_filenames += ["GodotTools.pdb"]
|
||||
|
||||
targets = [os.path.join(editor_tools_dir, filename) for filename in target_filenames]
|
||||
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
|
||||
def generate_compressed_config(config_src, output_dir):
|
||||
import os.path
|
||||
|
||||
# Source file
|
||||
with open(os.path.join(output_dir, 'android_mono_config.gen.cpp'), 'w') as cpp:
|
||||
with open(config_src, 'rb') as f:
|
||||
with open(os.path.join(output_dir, "android_mono_config.gen.cpp"), "w") as cpp:
|
||||
with open(config_src, "rb") as f:
|
||||
buf = f.read()
|
||||
decompr_size = len(buf)
|
||||
import zlib
|
||||
|
||||
buf = zlib.compress(buf)
|
||||
compr_size = len(buf)
|
||||
|
||||
bytes_seq_str = ''
|
||||
bytes_seq_str = ""
|
||||
for i, buf_idx in enumerate(range(compr_size)):
|
||||
if i > 0:
|
||||
bytes_seq_str += ', '
|
||||
bytes_seq_str += ", "
|
||||
bytes_seq_str += str(buf[buf_idx])
|
||||
|
||||
cpp.write('''/* THIS FILE IS GENERATED DO NOT EDIT */
|
||||
cpp.write(
|
||||
"""/* THIS FILE IS GENERATED DO NOT EDIT */
|
||||
#include "android_mono_config.h"
|
||||
|
||||
#ifdef ANDROID_ENABLED
|
||||
@@ -48,4 +49,6 @@ String get_godot_android_mono_config() {
|
||||
}
|
||||
|
||||
#endif // ANDROID_ENABLED
|
||||
''' % (compr_size, decompr_size, bytes_seq_str))
|
||||
"""
|
||||
% (compr_size, decompr_size, bytes_seq_str)
|
||||
)
|
||||
|
||||
@@ -5,31 +5,33 @@ import subprocess
|
||||
|
||||
from SCons.Script import Dir, Environment
|
||||
|
||||
if os.name == 'nt':
|
||||
if os.name == "nt":
|
||||
from . import mono_reg_utils as monoreg
|
||||
|
||||
|
||||
android_arch_dirs = {
|
||||
'armv7': 'armeabi-v7a',
|
||||
'arm64v8': 'arm64-v8a',
|
||||
'x86': 'x86',
|
||||
'x86_64': 'x86_64'
|
||||
"armv7": "armeabi-v7a",
|
||||
"arm64v8": "arm64-v8a",
|
||||
"x86": "x86",
|
||||
"x86_64": "x86_64",
|
||||
}
|
||||
|
||||
|
||||
def get_android_out_dir(env):
|
||||
return os.path.join(Dir('#platform/android/java/lib/libs').abspath,
|
||||
'release' if env['target'] == 'release' else 'debug',
|
||||
android_arch_dirs[env['android_arch']])
|
||||
return os.path.join(
|
||||
Dir("#platform/android/java/lib/libs").abspath,
|
||||
"release" if env["target"] == "release" else "debug",
|
||||
android_arch_dirs[env["android_arch"]],
|
||||
)
|
||||
|
||||
|
||||
def find_file_in_dir(directory, files, prefix='', extension=''):
|
||||
if not extension.startswith('.'):
|
||||
extension = '.' + extension
|
||||
def find_file_in_dir(directory, files, prefix="", extension=""):
|
||||
if not extension.startswith("."):
|
||||
extension = "." + extension
|
||||
for curfile in files:
|
||||
if os.path.isfile(os.path.join(directory, prefix + curfile + extension)):
|
||||
return curfile
|
||||
return ''
|
||||
return ""
|
||||
|
||||
|
||||
def copy_file(src_dir, dst_dir, name):
|
||||
@@ -45,138 +47,144 @@ def copy_file(src_dir, dst_dir, name):
|
||||
|
||||
|
||||
def is_desktop(platform):
|
||||
return platform in ['windows', 'osx', 'linuxbsd', 'server', 'uwp', 'haiku']
|
||||
return platform in ["windows", "osx", "linuxbsd", "server", "uwp", "haiku"]
|
||||
|
||||
|
||||
def is_unix_like(platform):
|
||||
return platform in ['osx', 'linuxbsd', 'server', 'android', 'haiku']
|
||||
return platform in ["osx", "linuxbsd", "server", "android", "haiku"]
|
||||
|
||||
|
||||
def module_supports_tools_on(platform):
|
||||
return platform not in ['android', 'javascript']
|
||||
return platform not in ["android", "javascript"]
|
||||
|
||||
|
||||
def find_wasm_src_dir(mono_root):
|
||||
hint_dirs = [
|
||||
os.path.join(mono_root, 'src'),
|
||||
os.path.join(mono_root, '../src'),
|
||||
os.path.join(mono_root, "src"),
|
||||
os.path.join(mono_root, "../src"),
|
||||
]
|
||||
for hint_dir in hint_dirs:
|
||||
if os.path.isfile(os.path.join(hint_dir, 'driver.c')):
|
||||
if os.path.isfile(os.path.join(hint_dir, "driver.c")):
|
||||
return hint_dir
|
||||
return ''
|
||||
return ""
|
||||
|
||||
|
||||
def configure(env, env_mono):
|
||||
bits = env['bits']
|
||||
is_android = env['platform'] == 'android'
|
||||
is_javascript = env['platform'] == 'javascript'
|
||||
bits = env["bits"]
|
||||
is_android = env["platform"] == "android"
|
||||
is_javascript = env["platform"] == "javascript"
|
||||
|
||||
tools_enabled = env['tools']
|
||||
mono_static = env['mono_static']
|
||||
copy_mono_root = env['copy_mono_root']
|
||||
tools_enabled = env["tools"]
|
||||
mono_static = env["mono_static"]
|
||||
copy_mono_root = env["copy_mono_root"]
|
||||
|
||||
mono_prefix = env['mono_prefix']
|
||||
mono_prefix = env["mono_prefix"]
|
||||
|
||||
mono_lib_names = ['mono-2.0-sgen', 'monosgen-2.0']
|
||||
mono_lib_names = ["mono-2.0-sgen", "monosgen-2.0"]
|
||||
|
||||
is_travis = os.environ.get('TRAVIS') == 'true'
|
||||
is_travis = os.environ.get("TRAVIS") == "true"
|
||||
|
||||
if is_travis:
|
||||
# Travis CI may have a Mono version lower than 5.12
|
||||
env_mono.Append(CPPDEFINES=['NO_PENDING_EXCEPTIONS'])
|
||||
env_mono.Append(CPPDEFINES=["NO_PENDING_EXCEPTIONS"])
|
||||
|
||||
if is_android and not env['android_arch'] in android_arch_dirs:
|
||||
raise RuntimeError('This module does not support the specified \'android_arch\': ' + env['android_arch'])
|
||||
if is_android and not env["android_arch"] in android_arch_dirs:
|
||||
raise RuntimeError("This module does not support the specified 'android_arch': " + env["android_arch"])
|
||||
|
||||
if tools_enabled and not module_supports_tools_on(env['platform']):
|
||||
if tools_enabled and not module_supports_tools_on(env["platform"]):
|
||||
# TODO:
|
||||
# Android: We have to add the data directory to the apk, concretely the Api and Tools folders.
|
||||
raise RuntimeError('This module does not currently support building for this platform with tools enabled')
|
||||
raise RuntimeError("This module does not currently support building for this platform with tools enabled")
|
||||
|
||||
if is_android and mono_static:
|
||||
# Android: When static linking and doing something that requires libmono-native, we get a dlopen error as libmono-native seems to depend on libmonosgen-2.0
|
||||
raise RuntimeError('Statically linking Mono is not currently supported on this platform')
|
||||
raise RuntimeError("Statically linking Mono is not currently supported on this platform")
|
||||
|
||||
if is_javascript:
|
||||
mono_static = True
|
||||
|
||||
if not mono_prefix and (os.getenv('MONO32_PREFIX') or os.getenv('MONO64_PREFIX')):
|
||||
print("WARNING: The environment variables 'MONO32_PREFIX' and 'MONO64_PREFIX' are deprecated; use the 'mono_prefix' SCons parameter instead")
|
||||
if not mono_prefix and (os.getenv("MONO32_PREFIX") or os.getenv("MONO64_PREFIX")):
|
||||
print(
|
||||
"WARNING: The environment variables 'MONO32_PREFIX' and 'MONO64_PREFIX' are deprecated; use the 'mono_prefix' SCons parameter instead"
|
||||
)
|
||||
|
||||
if env['platform'] == 'windows':
|
||||
if env["platform"] == "windows":
|
||||
mono_root = mono_prefix
|
||||
|
||||
if not mono_root and os.name == 'nt':
|
||||
if not mono_root and os.name == "nt":
|
||||
mono_root = monoreg.find_mono_root_dir(bits)
|
||||
|
||||
if not mono_root:
|
||||
raise RuntimeError("Mono installation directory not found; specify one manually with the 'mono_prefix' SCons parameter")
|
||||
raise RuntimeError(
|
||||
"Mono installation directory not found; specify one manually with the 'mono_prefix' SCons parameter"
|
||||
)
|
||||
|
||||
print('Found Mono root directory: ' + mono_root)
|
||||
print("Found Mono root directory: " + mono_root)
|
||||
|
||||
mono_lib_path = os.path.join(mono_root, 'lib')
|
||||
mono_lib_path = os.path.join(mono_root, "lib")
|
||||
|
||||
env.Append(LIBPATH=mono_lib_path)
|
||||
env_mono.Prepend(CPPPATH=os.path.join(mono_root, 'include', 'mono-2.0'))
|
||||
env_mono.Prepend(CPPPATH=os.path.join(mono_root, "include", "mono-2.0"))
|
||||
|
||||
lib_suffix = Environment()['LIBSUFFIX']
|
||||
lib_suffix = Environment()["LIBSUFFIX"]
|
||||
|
||||
if mono_static:
|
||||
if env.msvc:
|
||||
mono_static_lib_name = 'libmono-static-sgen'
|
||||
mono_static_lib_name = "libmono-static-sgen"
|
||||
else:
|
||||
mono_static_lib_name = 'libmonosgen-2.0'
|
||||
mono_static_lib_name = "libmonosgen-2.0"
|
||||
|
||||
if not os.path.isfile(os.path.join(mono_lib_path, mono_static_lib_name + lib_suffix)):
|
||||
raise RuntimeError('Could not find static mono library in: ' + mono_lib_path)
|
||||
raise RuntimeError("Could not find static mono library in: " + mono_lib_path)
|
||||
|
||||
if env.msvc:
|
||||
env.Append(LINKFLAGS=mono_static_lib_name + lib_suffix)
|
||||
|
||||
env.Append(LINKFLAGS='Mincore' + lib_suffix)
|
||||
env.Append(LINKFLAGS='msvcrt' + lib_suffix)
|
||||
env.Append(LINKFLAGS='LIBCMT' + lib_suffix)
|
||||
env.Append(LINKFLAGS='Psapi' + lib_suffix)
|
||||
env.Append(LINKFLAGS="Mincore" + lib_suffix)
|
||||
env.Append(LINKFLAGS="msvcrt" + lib_suffix)
|
||||
env.Append(LINKFLAGS="LIBCMT" + lib_suffix)
|
||||
env.Append(LINKFLAGS="Psapi" + lib_suffix)
|
||||
else:
|
||||
env.Append(LINKFLAGS=os.path.join(mono_lib_path, mono_static_lib_name + lib_suffix))
|
||||
|
||||
env.Append(LIBS=['psapi'])
|
||||
env.Append(LIBS=['version'])
|
||||
env.Append(LIBS=["psapi"])
|
||||
env.Append(LIBS=["version"])
|
||||
else:
|
||||
mono_lib_name = find_file_in_dir(mono_lib_path, mono_lib_names, extension=lib_suffix)
|
||||
|
||||
if not mono_lib_name:
|
||||
raise RuntimeError('Could not find mono library in: ' + mono_lib_path)
|
||||
raise RuntimeError("Could not find mono library in: " + mono_lib_path)
|
||||
|
||||
if env.msvc:
|
||||
env.Append(LINKFLAGS=mono_lib_name + lib_suffix)
|
||||
else:
|
||||
env.Append(LIBS=[mono_lib_name])
|
||||
|
||||
mono_bin_path = os.path.join(mono_root, 'bin')
|
||||
mono_bin_path = os.path.join(mono_root, "bin")
|
||||
|
||||
mono_dll_name = find_file_in_dir(mono_bin_path, mono_lib_names, extension='.dll')
|
||||
mono_dll_name = find_file_in_dir(mono_bin_path, mono_lib_names, extension=".dll")
|
||||
|
||||
if not mono_dll_name:
|
||||
raise RuntimeError('Could not find mono shared library in: ' + mono_bin_path)
|
||||
raise RuntimeError("Could not find mono shared library in: " + mono_bin_path)
|
||||
|
||||
copy_file(mono_bin_path, '#bin', mono_dll_name + '.dll')
|
||||
copy_file(mono_bin_path, "#bin", mono_dll_name + ".dll")
|
||||
else:
|
||||
is_apple = env['platform'] in ['osx', 'iphone']
|
||||
is_apple = env["platform"] in ["osx", "iphone"]
|
||||
|
||||
sharedlib_ext = '.dylib' if is_apple else '.so'
|
||||
sharedlib_ext = ".dylib" if is_apple else ".so"
|
||||
|
||||
mono_root = mono_prefix
|
||||
mono_lib_path = ''
|
||||
mono_so_name = ''
|
||||
mono_lib_path = ""
|
||||
mono_so_name = ""
|
||||
|
||||
if not mono_root and (is_android or is_javascript):
|
||||
raise RuntimeError("Mono installation directory not found; specify one manually with the 'mono_prefix' SCons parameter")
|
||||
raise RuntimeError(
|
||||
"Mono installation directory not found; specify one manually with the 'mono_prefix' SCons parameter"
|
||||
)
|
||||
|
||||
if not mono_root and is_apple:
|
||||
# Try with some known directories under OSX
|
||||
hint_dirs = ['/Library/Frameworks/Mono.framework/Versions/Current', '/usr/local/var/homebrew/linked/mono']
|
||||
hint_dirs = ["/Library/Frameworks/Mono.framework/Versions/Current", "/usr/local/var/homebrew/linked/mono"]
|
||||
for hint_dir in hint_dirs:
|
||||
if os.path.isdir(hint_dir):
|
||||
mono_root = hint_dir
|
||||
@@ -187,126 +195,139 @@ def configure(env, env_mono):
|
||||
if not mono_root and mono_static:
|
||||
mono_root = pkgconfig_try_find_mono_root(mono_lib_names, sharedlib_ext)
|
||||
if not mono_root:
|
||||
raise RuntimeError("Building with mono_static=yes, but failed to find the mono prefix with pkg-config; " + \
|
||||
"specify one manually with the 'mono_prefix' SCons parameter")
|
||||
raise RuntimeError(
|
||||
"Building with mono_static=yes, but failed to find the mono prefix with pkg-config; "
|
||||
+ "specify one manually with the 'mono_prefix' SCons parameter"
|
||||
)
|
||||
|
||||
if mono_root:
|
||||
print('Found Mono root directory: ' + mono_root)
|
||||
print("Found Mono root directory: " + mono_root)
|
||||
|
||||
mono_lib_path = os.path.join(mono_root, 'lib')
|
||||
mono_lib_path = os.path.join(mono_root, "lib")
|
||||
|
||||
env.Append(LIBPATH=[mono_lib_path])
|
||||
env_mono.Prepend(CPPPATH=os.path.join(mono_root, 'include', 'mono-2.0'))
|
||||
env_mono.Prepend(CPPPATH=os.path.join(mono_root, "include", "mono-2.0"))
|
||||
|
||||
mono_lib = find_file_in_dir(mono_lib_path, mono_lib_names, prefix='lib', extension='.a')
|
||||
mono_lib = find_file_in_dir(mono_lib_path, mono_lib_names, prefix="lib", extension=".a")
|
||||
|
||||
if not mono_lib:
|
||||
raise RuntimeError('Could not find mono library in: ' + mono_lib_path)
|
||||
raise RuntimeError("Could not find mono library in: " + mono_lib_path)
|
||||
|
||||
env_mono.Append(CPPDEFINES=['_REENTRANT'])
|
||||
env_mono.Append(CPPDEFINES=["_REENTRANT"])
|
||||
|
||||
if mono_static:
|
||||
env.Append(LINKFLAGS=['-rdynamic'])
|
||||
env.Append(LINKFLAGS=["-rdynamic"])
|
||||
|
||||
mono_lib_file = os.path.join(mono_lib_path, 'lib' + mono_lib + '.a')
|
||||
mono_lib_file = os.path.join(mono_lib_path, "lib" + mono_lib + ".a")
|
||||
|
||||
if is_apple:
|
||||
env.Append(LINKFLAGS=['-Wl,-force_load,' + mono_lib_file])
|
||||
env.Append(LINKFLAGS=["-Wl,-force_load," + mono_lib_file])
|
||||
else:
|
||||
assert is_desktop(env['platform']) or is_android or is_javascript
|
||||
env.Append(LINKFLAGS=['-Wl,-whole-archive', mono_lib_file, '-Wl,-no-whole-archive'])
|
||||
assert is_desktop(env["platform"]) or is_android or is_javascript
|
||||
env.Append(LINKFLAGS=["-Wl,-whole-archive", mono_lib_file, "-Wl,-no-whole-archive"])
|
||||
|
||||
if is_javascript:
|
||||
env.Append(LIBS=['mono-icall-table', 'mono-native', 'mono-ilgen', 'mono-ee-interp'])
|
||||
env.Append(LIBS=["mono-icall-table", "mono-native", "mono-ilgen", "mono-ee-interp"])
|
||||
|
||||
wasm_src_dir = os.path.join(mono_root, 'src')
|
||||
wasm_src_dir = os.path.join(mono_root, "src")
|
||||
if not os.path.isdir(wasm_src_dir):
|
||||
raise RuntimeError('Could not find mono wasm src directory')
|
||||
raise RuntimeError("Could not find mono wasm src directory")
|
||||
|
||||
# Ideally this should be defined only for 'driver.c', but I can't fight scons for another 2 hours
|
||||
env_mono.Append(CPPDEFINES=['CORE_BINDINGS'])
|
||||
env_mono.Append(CPPDEFINES=["CORE_BINDINGS"])
|
||||
|
||||
env_mono.add_source_files(env.modules_sources, [
|
||||
os.path.join(wasm_src_dir, 'driver.c'),
|
||||
os.path.join(wasm_src_dir, 'zlib-helper.c'),
|
||||
os.path.join(wasm_src_dir, 'corebindings.c')
|
||||
])
|
||||
env_mono.add_source_files(
|
||||
env.modules_sources,
|
||||
[
|
||||
os.path.join(wasm_src_dir, "driver.c"),
|
||||
os.path.join(wasm_src_dir, "zlib-helper.c"),
|
||||
os.path.join(wasm_src_dir, "corebindings.c"),
|
||||
],
|
||||
)
|
||||
|
||||
env.Append(LINKFLAGS=[
|
||||
'--js-library', os.path.join(wasm_src_dir, 'library_mono.js'),
|
||||
'--js-library', os.path.join(wasm_src_dir, 'binding_support.js'),
|
||||
'--js-library', os.path.join(wasm_src_dir, 'dotnet_support.js')
|
||||
])
|
||||
env.Append(
|
||||
LINKFLAGS=[
|
||||
"--js-library",
|
||||
os.path.join(wasm_src_dir, "library_mono.js"),
|
||||
"--js-library",
|
||||
os.path.join(wasm_src_dir, "binding_support.js"),
|
||||
"--js-library",
|
||||
os.path.join(wasm_src_dir, "dotnet_support.js"),
|
||||
]
|
||||
)
|
||||
else:
|
||||
env.Append(LIBS=[mono_lib])
|
||||
|
||||
if is_apple:
|
||||
env.Append(LIBS=['iconv', 'pthread'])
|
||||
env.Append(LIBS=["iconv", "pthread"])
|
||||
elif is_android:
|
||||
pass # Nothing
|
||||
pass # Nothing
|
||||
elif is_javascript:
|
||||
env.Append(LIBS=['m', 'rt', 'dl', 'pthread'])
|
||||
env.Append(LIBS=["m", "rt", "dl", "pthread"])
|
||||
else:
|
||||
env.Append(LIBS=['m', 'rt', 'dl', 'pthread'])
|
||||
env.Append(LIBS=["m", "rt", "dl", "pthread"])
|
||||
|
||||
if not mono_static:
|
||||
mono_so_name = find_file_in_dir(mono_lib_path, mono_lib_names, prefix='lib', extension=sharedlib_ext)
|
||||
mono_so_name = find_file_in_dir(mono_lib_path, mono_lib_names, prefix="lib", extension=sharedlib_ext)
|
||||
|
||||
if not mono_so_name:
|
||||
raise RuntimeError('Could not find mono shared library in: ' + mono_lib_path)
|
||||
raise RuntimeError("Could not find mono shared library in: " + mono_lib_path)
|
||||
|
||||
copy_file(mono_lib_path, '#bin', 'lib' + mono_so_name + sharedlib_ext)
|
||||
copy_file(mono_lib_path, "#bin", "lib" + mono_so_name + sharedlib_ext)
|
||||
else:
|
||||
assert not mono_static
|
||||
|
||||
# TODO: Add option to force using pkg-config
|
||||
print('Mono root directory not found. Using pkg-config instead')
|
||||
print("Mono root directory not found. Using pkg-config instead")
|
||||
|
||||
env.ParseConfig('pkg-config monosgen-2 --libs')
|
||||
env_mono.ParseConfig('pkg-config monosgen-2 --cflags')
|
||||
env.ParseConfig("pkg-config monosgen-2 --libs")
|
||||
env_mono.ParseConfig("pkg-config monosgen-2 --cflags")
|
||||
|
||||
tmpenv = Environment()
|
||||
tmpenv.AppendENVPath('PKG_CONFIG_PATH', os.getenv('PKG_CONFIG_PATH'))
|
||||
tmpenv.ParseConfig('pkg-config monosgen-2 --libs-only-L')
|
||||
tmpenv.AppendENVPath("PKG_CONFIG_PATH", os.getenv("PKG_CONFIG_PATH"))
|
||||
tmpenv.ParseConfig("pkg-config monosgen-2 --libs-only-L")
|
||||
|
||||
for hint_dir in tmpenv['LIBPATH']:
|
||||
name_found = find_file_in_dir(hint_dir, mono_lib_names, prefix='lib', extension=sharedlib_ext)
|
||||
for hint_dir in tmpenv["LIBPATH"]:
|
||||
name_found = find_file_in_dir(hint_dir, mono_lib_names, prefix="lib", extension=sharedlib_ext)
|
||||
if name_found:
|
||||
mono_lib_path = hint_dir
|
||||
mono_so_name = name_found
|
||||
break
|
||||
|
||||
if not mono_so_name:
|
||||
raise RuntimeError('Could not find mono shared library in: ' + str(tmpenv['LIBPATH']))
|
||||
raise RuntimeError("Could not find mono shared library in: " + str(tmpenv["LIBPATH"]))
|
||||
|
||||
if not mono_static:
|
||||
libs_output_dir = get_android_out_dir(env) if is_android else '#bin'
|
||||
copy_file(mono_lib_path, libs_output_dir, 'lib' + mono_so_name + sharedlib_ext)
|
||||
libs_output_dir = get_android_out_dir(env) if is_android else "#bin"
|
||||
copy_file(mono_lib_path, libs_output_dir, "lib" + mono_so_name + sharedlib_ext)
|
||||
|
||||
if not tools_enabled:
|
||||
if is_desktop(env['platform']):
|
||||
if is_desktop(env["platform"]):
|
||||
if not mono_root:
|
||||
mono_root = subprocess.check_output(['pkg-config', 'mono-2', '--variable=prefix']).decode('utf8').strip()
|
||||
mono_root = (
|
||||
subprocess.check_output(["pkg-config", "mono-2", "--variable=prefix"]).decode("utf8").strip()
|
||||
)
|
||||
|
||||
make_template_dir(env, mono_root)
|
||||
elif is_android:
|
||||
# Compress Android Mono Config
|
||||
from . import make_android_mono_config
|
||||
|
||||
module_dir = os.getcwd()
|
||||
config_file_path = os.path.join(module_dir, 'build_scripts', 'mono_android_config.xml')
|
||||
make_android_mono_config.generate_compressed_config(config_file_path, 'mono_gd/')
|
||||
config_file_path = os.path.join(module_dir, "build_scripts", "mono_android_config.xml")
|
||||
make_android_mono_config.generate_compressed_config(config_file_path, "mono_gd/")
|
||||
|
||||
# Copy the required shared libraries
|
||||
copy_mono_shared_libs(env, mono_root, None)
|
||||
elif is_javascript:
|
||||
pass # No data directory for this platform
|
||||
pass # No data directory for this platform
|
||||
|
||||
if copy_mono_root:
|
||||
if not mono_root:
|
||||
mono_root = subprocess.check_output(['pkg-config', 'mono-2', '--variable=prefix']).decode('utf8').strip()
|
||||
mono_root = subprocess.check_output(["pkg-config", "mono-2", "--variable=prefix"]).decode("utf8").strip()
|
||||
|
||||
if tools_enabled:
|
||||
copy_mono_root_files(env, mono_root)
|
||||
copy_mono_root_files(env, mono_root)
|
||||
else:
|
||||
print("Ignoring option: 'copy_mono_root'; only available for builds with 'tools' enabled.")
|
||||
|
||||
@@ -314,26 +335,26 @@ def configure(env, env_mono):
|
||||
def make_template_dir(env, mono_root):
|
||||
from shutil import rmtree
|
||||
|
||||
platform = env['platform']
|
||||
target = env['target']
|
||||
platform = env["platform"]
|
||||
target = env["target"]
|
||||
|
||||
template_dir_name = ''
|
||||
template_dir_name = ""
|
||||
|
||||
assert is_desktop(platform)
|
||||
|
||||
template_dir_name = 'data.mono.%s.%s.%s' % (platform, env['bits'], target)
|
||||
template_dir_name = "data.mono.%s.%s.%s" % (platform, env["bits"], target)
|
||||
|
||||
output_dir = Dir('#bin').abspath
|
||||
output_dir = Dir("#bin").abspath
|
||||
template_dir = os.path.join(output_dir, template_dir_name)
|
||||
|
||||
template_mono_root_dir = os.path.join(template_dir, 'Mono')
|
||||
template_mono_root_dir = os.path.join(template_dir, "Mono")
|
||||
|
||||
if os.path.isdir(template_mono_root_dir):
|
||||
rmtree(template_mono_root_dir) # Clean first
|
||||
rmtree(template_mono_root_dir) # Clean first
|
||||
|
||||
# Copy etc/mono/
|
||||
|
||||
template_mono_config_dir = os.path.join(template_mono_root_dir, 'etc', 'mono')
|
||||
template_mono_config_dir = os.path.join(template_mono_root_dir, "etc", "mono")
|
||||
copy_mono_etc_dir(mono_root, template_mono_config_dir, platform)
|
||||
|
||||
# Copy the required shared libraries
|
||||
@@ -347,18 +368,18 @@ def copy_mono_root_files(env, mono_root):
|
||||
from shutil import rmtree
|
||||
|
||||
if not mono_root:
|
||||
raise RuntimeError('Mono installation directory not found')
|
||||
raise RuntimeError("Mono installation directory not found")
|
||||
|
||||
output_dir = Dir('#bin').abspath
|
||||
editor_mono_root_dir = os.path.join(output_dir, 'GodotSharp', 'Mono')
|
||||
output_dir = Dir("#bin").abspath
|
||||
editor_mono_root_dir = os.path.join(output_dir, "GodotSharp", "Mono")
|
||||
|
||||
if os.path.isdir(editor_mono_root_dir):
|
||||
rmtree(editor_mono_root_dir) # Clean first
|
||||
rmtree(editor_mono_root_dir) # Clean first
|
||||
|
||||
# Copy etc/mono/
|
||||
|
||||
editor_mono_config_dir = os.path.join(editor_mono_root_dir, 'etc', 'mono')
|
||||
copy_mono_etc_dir(mono_root, editor_mono_config_dir, env['platform'])
|
||||
editor_mono_config_dir = os.path.join(editor_mono_root_dir, "etc", "mono")
|
||||
copy_mono_etc_dir(mono_root, editor_mono_config_dir, env["platform"])
|
||||
|
||||
# Copy the required shared libraries
|
||||
|
||||
@@ -366,20 +387,20 @@ def copy_mono_root_files(env, mono_root):
|
||||
|
||||
# Copy framework assemblies
|
||||
|
||||
mono_framework_dir = os.path.join(mono_root, 'lib', 'mono', '4.5')
|
||||
mono_framework_facades_dir = os.path.join(mono_framework_dir, 'Facades')
|
||||
mono_framework_dir = os.path.join(mono_root, "lib", "mono", "4.5")
|
||||
mono_framework_facades_dir = os.path.join(mono_framework_dir, "Facades")
|
||||
|
||||
editor_mono_framework_dir = os.path.join(editor_mono_root_dir, 'lib', 'mono', '4.5')
|
||||
editor_mono_framework_facades_dir = os.path.join(editor_mono_framework_dir, 'Facades')
|
||||
editor_mono_framework_dir = os.path.join(editor_mono_root_dir, "lib", "mono", "4.5")
|
||||
editor_mono_framework_facades_dir = os.path.join(editor_mono_framework_dir, "Facades")
|
||||
|
||||
if not os.path.isdir(editor_mono_framework_dir):
|
||||
os.makedirs(editor_mono_framework_dir)
|
||||
if not os.path.isdir(editor_mono_framework_facades_dir):
|
||||
os.makedirs(editor_mono_framework_facades_dir)
|
||||
|
||||
for assembly in glob(os.path.join(mono_framework_dir, '*.dll')):
|
||||
for assembly in glob(os.path.join(mono_framework_dir, "*.dll")):
|
||||
copy(assembly, editor_mono_framework_dir)
|
||||
for assembly in glob(os.path.join(mono_framework_facades_dir, '*.dll')):
|
||||
for assembly in glob(os.path.join(mono_framework_facades_dir, "*.dll")):
|
||||
copy(assembly, editor_mono_framework_facades_dir)
|
||||
|
||||
|
||||
@@ -391,28 +412,28 @@ def copy_mono_etc_dir(mono_root, target_mono_config_dir, platform):
|
||||
if not os.path.isdir(target_mono_config_dir):
|
||||
os.makedirs(target_mono_config_dir)
|
||||
|
||||
mono_etc_dir = os.path.join(mono_root, 'etc', 'mono')
|
||||
mono_etc_dir = os.path.join(mono_root, "etc", "mono")
|
||||
if not os.path.isdir(mono_etc_dir):
|
||||
mono_etc_dir = ''
|
||||
mono_etc_dir = ""
|
||||
etc_hint_dirs = []
|
||||
if platform != 'windows':
|
||||
etc_hint_dirs += ['/etc/mono', '/usr/local/etc/mono']
|
||||
if 'MONO_CFG_DIR' in os.environ:
|
||||
etc_hint_dirs += [os.path.join(os.environ['MONO_CFG_DIR'], 'mono')]
|
||||
if platform != "windows":
|
||||
etc_hint_dirs += ["/etc/mono", "/usr/local/etc/mono"]
|
||||
if "MONO_CFG_DIR" in os.environ:
|
||||
etc_hint_dirs += [os.path.join(os.environ["MONO_CFG_DIR"], "mono")]
|
||||
for etc_hint_dir in etc_hint_dirs:
|
||||
if os.path.isdir(etc_hint_dir):
|
||||
mono_etc_dir = etc_hint_dir
|
||||
break
|
||||
if not mono_etc_dir:
|
||||
raise RuntimeError('Mono installation etc directory not found')
|
||||
raise RuntimeError("Mono installation etc directory not found")
|
||||
|
||||
copy_tree(os.path.join(mono_etc_dir, '2.0'), os.path.join(target_mono_config_dir, '2.0'))
|
||||
copy_tree(os.path.join(mono_etc_dir, '4.0'), os.path.join(target_mono_config_dir, '4.0'))
|
||||
copy_tree(os.path.join(mono_etc_dir, '4.5'), os.path.join(target_mono_config_dir, '4.5'))
|
||||
if os.path.isdir(os.path.join(mono_etc_dir, 'mconfig')):
|
||||
copy_tree(os.path.join(mono_etc_dir, 'mconfig'), os.path.join(target_mono_config_dir, 'mconfig'))
|
||||
copy_tree(os.path.join(mono_etc_dir, "2.0"), os.path.join(target_mono_config_dir, "2.0"))
|
||||
copy_tree(os.path.join(mono_etc_dir, "4.0"), os.path.join(target_mono_config_dir, "4.0"))
|
||||
copy_tree(os.path.join(mono_etc_dir, "4.5"), os.path.join(target_mono_config_dir, "4.5"))
|
||||
if os.path.isdir(os.path.join(mono_etc_dir, "mconfig")):
|
||||
copy_tree(os.path.join(mono_etc_dir, "mconfig"), os.path.join(target_mono_config_dir, "mconfig"))
|
||||
|
||||
for file in glob(os.path.join(mono_etc_dir, '*')):
|
||||
for file in glob(os.path.join(mono_etc_dir, "*")):
|
||||
if os.path.isfile(file):
|
||||
copy(file, target_mono_config_dir)
|
||||
|
||||
@@ -424,48 +445,66 @@ def copy_mono_shared_libs(env, mono_root, target_mono_root_dir):
|
||||
if os.path.isfile(src):
|
||||
copy(src, dst)
|
||||
|
||||
platform = env['platform']
|
||||
platform = env["platform"]
|
||||
|
||||
if platform == 'windows':
|
||||
src_mono_bin_dir = os.path.join(mono_root, 'bin')
|
||||
target_mono_bin_dir = os.path.join(target_mono_root_dir, 'bin')
|
||||
if platform == "windows":
|
||||
src_mono_bin_dir = os.path.join(mono_root, "bin")
|
||||
target_mono_bin_dir = os.path.join(target_mono_root_dir, "bin")
|
||||
|
||||
if not os.path.isdir(target_mono_bin_dir):
|
||||
os.makedirs(target_mono_bin_dir)
|
||||
|
||||
mono_posix_helper_name = find_file_in_dir(src_mono_bin_dir, ['MonoPosixHelper', 'libMonoPosixHelper'], extension='.dll')
|
||||
copy(os.path.join(src_mono_bin_dir, mono_posix_helper_name + '.dll'), os.path.join(target_mono_bin_dir, 'MonoPosixHelper.dll'))
|
||||
mono_posix_helper_name = find_file_in_dir(
|
||||
src_mono_bin_dir, ["MonoPosixHelper", "libMonoPosixHelper"], extension=".dll"
|
||||
)
|
||||
copy(
|
||||
os.path.join(src_mono_bin_dir, mono_posix_helper_name + ".dll"),
|
||||
os.path.join(target_mono_bin_dir, "MonoPosixHelper.dll"),
|
||||
)
|
||||
|
||||
# For newer versions
|
||||
btls_dll_path = os.path.join(src_mono_bin_dir, 'libmono-btls-shared.dll')
|
||||
btls_dll_path = os.path.join(src_mono_bin_dir, "libmono-btls-shared.dll")
|
||||
if os.path.isfile(btls_dll_path):
|
||||
copy(btls_dll_path, target_mono_bin_dir)
|
||||
else:
|
||||
target_mono_lib_dir = get_android_out_dir(env) if platform == 'android' else os.path.join(target_mono_root_dir, 'lib')
|
||||
target_mono_lib_dir = (
|
||||
get_android_out_dir(env) if platform == "android" else os.path.join(target_mono_root_dir, "lib")
|
||||
)
|
||||
|
||||
if not os.path.isdir(target_mono_lib_dir):
|
||||
os.makedirs(target_mono_lib_dir)
|
||||
|
||||
lib_file_names = []
|
||||
if platform == 'osx':
|
||||
lib_file_names = [lib_name + '.dylib' for lib_name in [
|
||||
'libmono-btls-shared', 'libmono-native-compat', 'libMonoPosixHelper'
|
||||
]]
|
||||
if platform == "osx":
|
||||
lib_file_names = [
|
||||
lib_name + ".dylib"
|
||||
for lib_name in ["libmono-btls-shared", "libmono-native-compat", "libMonoPosixHelper"]
|
||||
]
|
||||
elif is_unix_like(platform):
|
||||
lib_file_names = [lib_name + '.so' for lib_name in [
|
||||
'libmono-btls-shared', 'libmono-ee-interp', 'libmono-native', 'libMonoPosixHelper',
|
||||
'libmono-profiler-aot', 'libmono-profiler-coverage', 'libmono-profiler-log', 'libMonoSupportW'
|
||||
]]
|
||||
lib_file_names = [
|
||||
lib_name + ".so"
|
||||
for lib_name in [
|
||||
"libmono-btls-shared",
|
||||
"libmono-ee-interp",
|
||||
"libmono-native",
|
||||
"libMonoPosixHelper",
|
||||
"libmono-profiler-aot",
|
||||
"libmono-profiler-coverage",
|
||||
"libmono-profiler-log",
|
||||
"libMonoSupportW",
|
||||
]
|
||||
]
|
||||
|
||||
for lib_file_name in lib_file_names:
|
||||
copy_if_exists(os.path.join(mono_root, 'lib', lib_file_name), target_mono_lib_dir)
|
||||
copy_if_exists(os.path.join(mono_root, "lib", lib_file_name), target_mono_lib_dir)
|
||||
|
||||
|
||||
def pkgconfig_try_find_mono_root(mono_lib_names, sharedlib_ext):
|
||||
tmpenv = Environment()
|
||||
tmpenv.AppendENVPath('PKG_CONFIG_PATH', os.getenv('PKG_CONFIG_PATH'))
|
||||
tmpenv.ParseConfig('pkg-config monosgen-2 --libs-only-L')
|
||||
for hint_dir in tmpenv['LIBPATH']:
|
||||
name_found = find_file_in_dir(hint_dir, mono_lib_names, prefix='lib', extension=sharedlib_ext)
|
||||
if name_found and os.path.isdir(os.path.join(hint_dir, '..', 'include', 'mono-2.0')):
|
||||
return os.path.join(hint_dir, '..')
|
||||
return ''
|
||||
tmpenv.AppendENVPath("PKG_CONFIG_PATH", os.getenv("PKG_CONFIG_PATH"))
|
||||
tmpenv.ParseConfig("pkg-config monosgen-2 --libs-only-L")
|
||||
for hint_dir in tmpenv["LIBPATH"]:
|
||||
name_found = find_file_in_dir(hint_dir, mono_lib_names, prefix="lib", extension=sharedlib_ext)
|
||||
if name_found and os.path.isdir(os.path.join(hint_dir, "..", "include", "mono-2.0")):
|
||||
return os.path.join(hint_dir, "..")
|
||||
return ""
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import os
|
||||
import platform
|
||||
|
||||
if os.name == 'nt':
|
||||
if os.name == "nt":
|
||||
import sys
|
||||
import winreg
|
||||
|
||||
@@ -10,7 +10,7 @@ def _reg_open_key(key, subkey):
|
||||
try:
|
||||
return winreg.OpenKey(key, subkey)
|
||||
except (WindowsError, OSError):
|
||||
if platform.architecture()[0] == '32bit':
|
||||
if platform.architecture()[0] == "32bit":
|
||||
bitness_sam = winreg.KEY_WOW64_64KEY
|
||||
else:
|
||||
bitness_sam = winreg.KEY_WOW64_32KEY
|
||||
@@ -20,12 +20,12 @@ def _reg_open_key(key, subkey):
|
||||
def _reg_open_key_bits(key, subkey, bits):
|
||||
sam = winreg.KEY_READ
|
||||
|
||||
if platform.architecture()[0] == '32bit':
|
||||
if bits == '64':
|
||||
if platform.architecture()[0] == "32bit":
|
||||
if bits == "64":
|
||||
# Force 32bit process to search in 64bit registry
|
||||
sam |= winreg.KEY_WOW64_64KEY
|
||||
else:
|
||||
if bits == '32':
|
||||
if bits == "32":
|
||||
# Force 64bit process to search in 32bit registry
|
||||
sam |= winreg.KEY_WOW64_32KEY
|
||||
|
||||
@@ -35,7 +35,7 @@ def _reg_open_key_bits(key, subkey, bits):
|
||||
def _find_mono_in_reg(subkey, bits):
|
||||
try:
|
||||
with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
|
||||
value = winreg.QueryValueEx(hKey, 'SdkInstallRoot')[0]
|
||||
value = winreg.QueryValueEx(hKey, "SdkInstallRoot")[0]
|
||||
return value
|
||||
except (WindowsError, OSError):
|
||||
return None
|
||||
@@ -44,70 +44,70 @@ def _find_mono_in_reg(subkey, bits):
|
||||
def _find_mono_in_reg_old(subkey, bits):
|
||||
try:
|
||||
with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
|
||||
default_clr = winreg.QueryValueEx(hKey, 'DefaultCLR')[0]
|
||||
default_clr = winreg.QueryValueEx(hKey, "DefaultCLR")[0]
|
||||
if default_clr:
|
||||
return _find_mono_in_reg(subkey + '\\' + default_clr, bits)
|
||||
return _find_mono_in_reg(subkey + "\\" + default_clr, bits)
|
||||
return None
|
||||
except (WindowsError, EnvironmentError):
|
||||
return None
|
||||
|
||||
|
||||
def find_mono_root_dir(bits):
|
||||
root_dir = _find_mono_in_reg(r'SOFTWARE\Mono', bits)
|
||||
root_dir = _find_mono_in_reg(r"SOFTWARE\Mono", bits)
|
||||
if root_dir is not None:
|
||||
return str(root_dir)
|
||||
root_dir = _find_mono_in_reg_old(r'SOFTWARE\Novell\Mono', bits)
|
||||
root_dir = _find_mono_in_reg_old(r"SOFTWARE\Novell\Mono", bits)
|
||||
if root_dir is not None:
|
||||
return str(root_dir)
|
||||
return ''
|
||||
return ""
|
||||
|
||||
|
||||
def find_msbuild_tools_path_reg():
|
||||
import subprocess
|
||||
|
||||
vswhere = os.getenv('PROGRAMFILES(X86)')
|
||||
vswhere = os.getenv("PROGRAMFILES(X86)")
|
||||
if not vswhere:
|
||||
vswhere = os.getenv('PROGRAMFILES')
|
||||
vswhere += r'\Microsoft Visual Studio\Installer\vswhere.exe'
|
||||
vswhere = os.getenv("PROGRAMFILES")
|
||||
vswhere += r"\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||
|
||||
vswhere_args = ['-latest', '-products', '*', '-requires', 'Microsoft.Component.MSBuild']
|
||||
vswhere_args = ["-latest", "-products", "*", "-requires", "Microsoft.Component.MSBuild"]
|
||||
|
||||
try:
|
||||
lines = subprocess.check_output([vswhere] + vswhere_args).splitlines()
|
||||
|
||||
for line in lines:
|
||||
parts = line.decode("utf-8").split(':', 1)
|
||||
parts = line.decode("utf-8").split(":", 1)
|
||||
|
||||
if len(parts) < 2 or parts[0] != 'installationPath':
|
||||
if len(parts) < 2 or parts[0] != "installationPath":
|
||||
continue
|
||||
|
||||
val = parts[1].strip()
|
||||
|
||||
if not val:
|
||||
raise ValueError('Value of `installationPath` entry is empty')
|
||||
raise ValueError("Value of `installationPath` entry is empty")
|
||||
|
||||
# Since VS2019, the directory is simply named "Current"
|
||||
msbuild_dir = os.path.join(val, 'MSBuild\\Current\\Bin')
|
||||
msbuild_dir = os.path.join(val, "MSBuild\\Current\\Bin")
|
||||
if os.path.isdir(msbuild_dir):
|
||||
return msbuild_dir
|
||||
|
||||
# Directory name "15.0" is used in VS 2017
|
||||
return os.path.join(val, 'MSBuild\\15.0\\Bin')
|
||||
return os.path.join(val, "MSBuild\\15.0\\Bin")
|
||||
|
||||
raise ValueError('Cannot find `installationPath` entry')
|
||||
raise ValueError("Cannot find `installationPath` entry")
|
||||
except ValueError as e:
|
||||
print('Error reading output from vswhere: ' + e.message)
|
||||
print("Error reading output from vswhere: " + e.message)
|
||||
except WindowsError:
|
||||
pass # Fine, vswhere not found
|
||||
pass # Fine, vswhere not found
|
||||
except (subprocess.CalledProcessError, OSError):
|
||||
pass
|
||||
|
||||
# Try to find 14.0 in the Registry
|
||||
|
||||
try:
|
||||
subkey = r'SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0'
|
||||
subkey = r"SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0"
|
||||
with _reg_open_key(winreg.HKEY_LOCAL_MACHINE, subkey) as hKey:
|
||||
value = winreg.QueryValueEx(hKey, 'MSBuildToolsPath')[0]
|
||||
value = winreg.QueryValueEx(hKey, "MSBuildToolsPath")[0]
|
||||
return value
|
||||
except (WindowsError, OSError):
|
||||
return ''
|
||||
return ""
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import os
|
||||
|
||||
|
||||
@@ -8,35 +7,38 @@ verbose = False
|
||||
def find_nuget_unix():
|
||||
import os
|
||||
|
||||
if 'NUGET_PATH' in os.environ:
|
||||
hint_path = os.environ['NUGET_PATH']
|
||||
if "NUGET_PATH" in os.environ:
|
||||
hint_path = os.environ["NUGET_PATH"]
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
hint_path = os.path.join(hint_path, 'nuget')
|
||||
hint_path = os.path.join(hint_path, "nuget")
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
hint_dirs = ['/opt/novell/mono/bin']
|
||||
if sys.platform == 'darwin':
|
||||
hint_dirs = ['/Library/Frameworks/Mono.framework/Versions/Current/bin', '/usr/local/var/homebrew/linked/mono/bin'] + hint_dirs
|
||||
hint_dirs = ["/opt/novell/mono/bin"]
|
||||
if sys.platform == "darwin":
|
||||
hint_dirs = [
|
||||
"/Library/Frameworks/Mono.framework/Versions/Current/bin",
|
||||
"/usr/local/var/homebrew/linked/mono/bin",
|
||||
] + hint_dirs
|
||||
|
||||
for hint_dir in hint_dirs:
|
||||
hint_path = os.path.join(hint_dir, 'nuget')
|
||||
hint_path = os.path.join(hint_dir, "nuget")
|
||||
if os.path.isfile(hint_path):
|
||||
return hint_path
|
||||
elif os.path.isfile(hint_path + '.exe'):
|
||||
return hint_path + '.exe'
|
||||
elif os.path.isfile(hint_path + ".exe"):
|
||||
return hint_path + ".exe"
|
||||
|
||||
for hint_dir in os.environ['PATH'].split(os.pathsep):
|
||||
for hint_dir in os.environ["PATH"].split(os.pathsep):
|
||||
hint_dir = hint_dir.strip('"')
|
||||
hint_path = os.path.join(hint_dir, 'nuget')
|
||||
hint_path = os.path.join(hint_dir, "nuget")
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
if os.path.isfile(hint_path + '.exe') and os.access(hint_path + '.exe', os.X_OK):
|
||||
return hint_path + '.exe'
|
||||
if os.path.isfile(hint_path + ".exe") and os.access(hint_path + ".exe", os.X_OK):
|
||||
return hint_path + ".exe"
|
||||
|
||||
return None
|
||||
|
||||
@@ -44,30 +46,30 @@ def find_nuget_unix():
|
||||
def find_nuget_windows(env):
|
||||
import os
|
||||
|
||||
if 'NUGET_PATH' in os.environ:
|
||||
hint_path = os.environ['NUGET_PATH']
|
||||
if "NUGET_PATH" in os.environ:
|
||||
hint_path = os.environ["NUGET_PATH"]
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
hint_path = os.path.join(hint_path, 'nuget.exe')
|
||||
hint_path = os.path.join(hint_path, "nuget.exe")
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
|
||||
from . mono_reg_utils import find_mono_root_dir
|
||||
from .mono_reg_utils import find_mono_root_dir
|
||||
|
||||
mono_root = env['mono_prefix'] or find_mono_root_dir(env['bits'])
|
||||
mono_root = env["mono_prefix"] or find_mono_root_dir(env["bits"])
|
||||
|
||||
if mono_root:
|
||||
mono_bin_dir = os.path.join(mono_root, 'bin')
|
||||
nuget_mono = os.path.join(mono_bin_dir, 'nuget.bat')
|
||||
mono_bin_dir = os.path.join(mono_root, "bin")
|
||||
nuget_mono = os.path.join(mono_bin_dir, "nuget.bat")
|
||||
|
||||
if os.path.isfile(nuget_mono):
|
||||
return nuget_mono
|
||||
|
||||
# Standalone NuGet
|
||||
|
||||
for hint_dir in os.environ['PATH'].split(os.pathsep):
|
||||
for hint_dir in os.environ["PATH"].split(os.pathsep):
|
||||
hint_dir = hint_dir.strip('"')
|
||||
hint_path = os.path.join(hint_dir, 'nuget.exe')
|
||||
hint_path = os.path.join(hint_dir, "nuget.exe")
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
|
||||
@@ -78,52 +80,55 @@ def find_msbuild_unix(filename):
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
hint_dirs = ['/opt/novell/mono/bin']
|
||||
if sys.platform == 'darwin':
|
||||
hint_dirs = ['/Library/Frameworks/Mono.framework/Versions/Current/bin', '/usr/local/var/homebrew/linked/mono/bin'] + hint_dirs
|
||||
hint_dirs = ["/opt/novell/mono/bin"]
|
||||
if sys.platform == "darwin":
|
||||
hint_dirs = [
|
||||
"/Library/Frameworks/Mono.framework/Versions/Current/bin",
|
||||
"/usr/local/var/homebrew/linked/mono/bin",
|
||||
] + hint_dirs
|
||||
|
||||
for hint_dir in hint_dirs:
|
||||
hint_path = os.path.join(hint_dir, filename)
|
||||
if os.path.isfile(hint_path):
|
||||
return hint_path
|
||||
elif os.path.isfile(hint_path + '.exe'):
|
||||
return hint_path + '.exe'
|
||||
elif os.path.isfile(hint_path + ".exe"):
|
||||
return hint_path + ".exe"
|
||||
|
||||
for hint_dir in os.environ['PATH'].split(os.pathsep):
|
||||
for hint_dir in os.environ["PATH"].split(os.pathsep):
|
||||
hint_dir = hint_dir.strip('"')
|
||||
hint_path = os.path.join(hint_dir, filename)
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
if os.path.isfile(hint_path + '.exe') and os.access(hint_path + '.exe', os.X_OK):
|
||||
return hint_path + '.exe'
|
||||
if os.path.isfile(hint_path + ".exe") and os.access(hint_path + ".exe", os.X_OK):
|
||||
return hint_path + ".exe"
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def find_msbuild_windows(env):
|
||||
from . mono_reg_utils import find_mono_root_dir, find_msbuild_tools_path_reg
|
||||
from .mono_reg_utils import find_mono_root_dir, find_msbuild_tools_path_reg
|
||||
|
||||
mono_root = env['mono_prefix'] or find_mono_root_dir(env['bits'])
|
||||
mono_root = env["mono_prefix"] or find_mono_root_dir(env["bits"])
|
||||
|
||||
if not mono_root:
|
||||
raise RuntimeError('Cannot find mono root directory')
|
||||
raise RuntimeError("Cannot find mono root directory")
|
||||
|
||||
mono_bin_dir = os.path.join(mono_root, 'bin')
|
||||
msbuild_mono = os.path.join(mono_bin_dir, 'msbuild.bat')
|
||||
mono_bin_dir = os.path.join(mono_root, "bin")
|
||||
msbuild_mono = os.path.join(mono_bin_dir, "msbuild.bat")
|
||||
|
||||
msbuild_tools_path = find_msbuild_tools_path_reg()
|
||||
|
||||
if msbuild_tools_path:
|
||||
return (os.path.join(msbuild_tools_path, 'MSBuild.exe'), {})
|
||||
return (os.path.join(msbuild_tools_path, "MSBuild.exe"), {})
|
||||
|
||||
if os.path.isfile(msbuild_mono):
|
||||
# The (Csc/Vbc/Fsc)ToolExe environment variables are required when
|
||||
# building with Mono's MSBuild. They must point to the batch files
|
||||
# in Mono's bin directory to make sure they are executed with Mono.
|
||||
mono_msbuild_env = {
|
||||
'CscToolExe': os.path.join(mono_bin_dir, 'csc.bat'),
|
||||
'VbcToolExe': os.path.join(mono_bin_dir, 'vbc.bat'),
|
||||
'FscToolExe': os.path.join(mono_bin_dir, 'fsharpc.bat')
|
||||
"CscToolExe": os.path.join(mono_bin_dir, "csc.bat"),
|
||||
"VbcToolExe": os.path.join(mono_bin_dir, "vbc.bat"),
|
||||
"FscToolExe": os.path.join(mono_bin_dir, "fsharpc.bat"),
|
||||
}
|
||||
return (msbuild_mono, mono_msbuild_env)
|
||||
|
||||
@@ -132,7 +137,7 @@ def find_msbuild_windows(env):
|
||||
|
||||
def run_command(command, args, env_override=None, name=None):
|
||||
def cmd_args_to_str(cmd_args):
|
||||
return ' '.join([arg if not ' ' in arg else '"%s"' % arg for arg in cmd_args])
|
||||
return " ".join([arg if not " " in arg else '"%s"' % arg for arg in cmd_args])
|
||||
|
||||
args = [command] + args
|
||||
|
||||
@@ -143,6 +148,7 @@ def run_command(command, args, env_override=None, name=None):
|
||||
print("Running '%s': %s" % (name, cmd_args_to_str(args)))
|
||||
|
||||
import subprocess
|
||||
|
||||
try:
|
||||
if env_override is None:
|
||||
subprocess.check_call(args)
|
||||
@@ -154,61 +160,61 @@ def run_command(command, args, env_override=None, name=None):
|
||||
|
||||
def nuget_restore(env, *args):
|
||||
global verbose
|
||||
verbose = env['verbose']
|
||||
verbose = env["verbose"]
|
||||
|
||||
# Find NuGet
|
||||
nuget_path = find_nuget_windows(env) if os.name == 'nt' else find_nuget_unix()
|
||||
nuget_path = find_nuget_windows(env) if os.name == "nt" else find_nuget_unix()
|
||||
if nuget_path is None:
|
||||
raise RuntimeError('Cannot find NuGet executable')
|
||||
raise RuntimeError("Cannot find NuGet executable")
|
||||
|
||||
print('NuGet path: ' + nuget_path)
|
||||
print("NuGet path: " + nuget_path)
|
||||
|
||||
# Do NuGet restore
|
||||
run_command(nuget_path, ['restore'] + list(args), name='nuget restore')
|
||||
run_command(nuget_path, ["restore"] + list(args), name="nuget restore")
|
||||
|
||||
|
||||
def build_solution(env, solution_path, build_config, extra_msbuild_args=[]):
|
||||
global verbose
|
||||
verbose = env['verbose']
|
||||
verbose = env["verbose"]
|
||||
|
||||
msbuild_env = os.environ.copy()
|
||||
|
||||
# Needed when running from Developer Command Prompt for VS
|
||||
if 'PLATFORM' in msbuild_env:
|
||||
del msbuild_env['PLATFORM']
|
||||
if "PLATFORM" in msbuild_env:
|
||||
del msbuild_env["PLATFORM"]
|
||||
|
||||
# Find MSBuild
|
||||
if os.name == 'nt':
|
||||
if os.name == "nt":
|
||||
msbuild_info = find_msbuild_windows(env)
|
||||
if msbuild_info is None:
|
||||
raise RuntimeError('Cannot find MSBuild executable')
|
||||
raise RuntimeError("Cannot find MSBuild executable")
|
||||
msbuild_path = msbuild_info[0]
|
||||
msbuild_env.update(msbuild_info[1])
|
||||
else:
|
||||
msbuild_path = find_msbuild_unix('msbuild')
|
||||
msbuild_path = find_msbuild_unix("msbuild")
|
||||
if msbuild_path is None:
|
||||
xbuild_fallback = env['xbuild_fallback']
|
||||
xbuild_fallback = env["xbuild_fallback"]
|
||||
|
||||
if xbuild_fallback and os.name == 'nt':
|
||||
print('Option \'xbuild_fallback\' not supported on Windows')
|
||||
if xbuild_fallback and os.name == "nt":
|
||||
print("Option 'xbuild_fallback' not supported on Windows")
|
||||
xbuild_fallback = False
|
||||
|
||||
if xbuild_fallback:
|
||||
print('Cannot find MSBuild executable, trying with xbuild')
|
||||
print('Warning: xbuild is deprecated')
|
||||
print("Cannot find MSBuild executable, trying with xbuild")
|
||||
print("Warning: xbuild is deprecated")
|
||||
|
||||
msbuild_path = find_msbuild_unix('xbuild')
|
||||
msbuild_path = find_msbuild_unix("xbuild")
|
||||
|
||||
if msbuild_path is None:
|
||||
raise RuntimeError('Cannot find xbuild executable')
|
||||
raise RuntimeError("Cannot find xbuild executable")
|
||||
else:
|
||||
raise RuntimeError('Cannot find MSBuild executable')
|
||||
raise RuntimeError("Cannot find MSBuild executable")
|
||||
|
||||
print('MSBuild path: ' + msbuild_path)
|
||||
print("MSBuild path: " + msbuild_path)
|
||||
|
||||
# Build solution
|
||||
|
||||
msbuild_args = [solution_path, '/p:Configuration=' + build_config]
|
||||
msbuild_args = [solution_path, "/p:Configuration=" + build_config]
|
||||
msbuild_args += extra_msbuild_args
|
||||
|
||||
run_command(msbuild_path, msbuild_args, env_override=msbuild_env, name='msbuild')
|
||||
run_command(msbuild_path, msbuild_args, env_override=msbuild_env, name="msbuild")
|
||||
|
||||
@@ -3,41 +3,52 @@ def can_build(env, platform):
|
||||
|
||||
|
||||
def configure(env):
|
||||
if env['platform'] not in ['windows', 'osx', 'linuxbsd', 'server', 'android', 'haiku', 'javascript']:
|
||||
raise RuntimeError('This module does not currently support building for this platform')
|
||||
if env["platform"] not in ["windows", "osx", "linuxbsd", "server", "android", "haiku", "javascript"]:
|
||||
raise RuntimeError("This module does not currently support building for this platform")
|
||||
|
||||
env.use_ptrcall = True
|
||||
env.add_module_version_string('mono')
|
||||
env.add_module_version_string("mono")
|
||||
|
||||
from SCons.Script import BoolVariable, PathVariable, Variables, Help
|
||||
|
||||
envvars = Variables()
|
||||
envvars.Add(PathVariable('mono_prefix', 'Path to the mono installation directory for the target platform and architecture', '', PathVariable.PathAccept))
|
||||
envvars.Add(BoolVariable('mono_static', 'Statically link mono', False))
|
||||
envvars.Add(BoolVariable('mono_glue', 'Build with the mono glue sources', True))
|
||||
envvars.Add(BoolVariable('copy_mono_root', 'Make a copy of the mono installation directory to bundle with the editor', False))
|
||||
envvars.Add(BoolVariable('xbuild_fallback', 'If MSBuild is not found, fallback to xbuild', False))
|
||||
envvars.Add(
|
||||
PathVariable(
|
||||
"mono_prefix",
|
||||
"Path to the mono installation directory for the target platform and architecture",
|
||||
"",
|
||||
PathVariable.PathAccept,
|
||||
)
|
||||
)
|
||||
envvars.Add(BoolVariable("mono_static", "Statically link mono", False))
|
||||
envvars.Add(BoolVariable("mono_glue", "Build with the mono glue sources", True))
|
||||
envvars.Add(
|
||||
BoolVariable(
|
||||
"copy_mono_root", "Make a copy of the mono installation directory to bundle with the editor", False
|
||||
)
|
||||
)
|
||||
envvars.Add(BoolVariable("xbuild_fallback", "If MSBuild is not found, fallback to xbuild", False))
|
||||
envvars.Update(env)
|
||||
Help(envvars.GenerateHelpText(env))
|
||||
|
||||
if env['platform'] == 'javascript':
|
||||
if env["platform"] == "javascript":
|
||||
# Mono wasm already has zlib builtin, so we need this workaround to avoid symbol collisions
|
||||
print('Compiling with Mono wasm disables \'builtin_zlib\'')
|
||||
env['builtin_zlib'] = False
|
||||
print("Compiling with Mono wasm disables 'builtin_zlib'")
|
||||
env["builtin_zlib"] = False
|
||||
thirdparty_zlib_dir = "#thirdparty/zlib/"
|
||||
env.Prepend(CPPPATH=[thirdparty_zlib_dir])
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
'@C#',
|
||||
'CSharpScript',
|
||||
'GodotSharp',
|
||||
"@C#",
|
||||
"CSharpScript",
|
||||
"GodotSharp",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return 'doc_classes'
|
||||
return "doc_classes"
|
||||
|
||||
|
||||
def is_enabled():
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
# Only kept to build the thirdparty library used by the theora and webm
|
||||
# modules.
|
||||
@@ -9,7 +9,7 @@ Import('env_modules')
|
||||
env_ogg = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_libogg']:
|
||||
if env["builtin_libogg"]:
|
||||
thirdparty_dir = "#thirdparty/libogg/"
|
||||
thirdparty_sources = [
|
||||
"bitwise.c",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_opensimplex = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"NoiseTexture",
|
||||
"OpenSimplexNoise"
|
||||
"OpenSimplexNoise",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
# Only kept to build the thirdparty library used by the webm module.
|
||||
# AudioStreamOpus was dropped in 3.0 due to incompatibility with the new audio
|
||||
@@ -10,11 +10,10 @@ Import('env_modules')
|
||||
env_opus = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_opus']:
|
||||
if env["builtin_opus"]:
|
||||
thirdparty_dir = "#thirdparty/opus/"
|
||||
|
||||
thirdparty_sources = [
|
||||
|
||||
# Sync with opus_sources.mk
|
||||
"opus.c",
|
||||
"opus_decoder.c",
|
||||
@@ -23,17 +22,14 @@ if env['builtin_opus']:
|
||||
"opus_multistream_encoder.c",
|
||||
"opus_multistream_decoder.c",
|
||||
"repacketizer.c",
|
||||
|
||||
"analysis.c",
|
||||
"mlp.c",
|
||||
"mlp_data.c",
|
||||
|
||||
# Sync with libopusfile Makefile.am
|
||||
"info.c",
|
||||
"internal.c",
|
||||
"opusfile.c",
|
||||
"stream.c",
|
||||
|
||||
# Sync with celt_sources.mk
|
||||
"celt/bands.c",
|
||||
"celt/celt.c",
|
||||
@@ -53,12 +49,11 @@ if env['builtin_opus']:
|
||||
"celt/quant_bands.c",
|
||||
"celt/rate.c",
|
||||
"celt/vq.c",
|
||||
#"celt/arm/arm_celt_map.c",
|
||||
#"celt/arm/armcpu.c",
|
||||
#"celt/arm/celt_ne10_fft.c",
|
||||
#"celt/arm/celt_ne10_mdct.c",
|
||||
#"celt/arm/celt_neon_intr.c",
|
||||
|
||||
# "celt/arm/arm_celt_map.c",
|
||||
# "celt/arm/armcpu.c",
|
||||
# "celt/arm/celt_ne10_fft.c",
|
||||
# "celt/arm/celt_ne10_mdct.c",
|
||||
# "celt/arm/celt_neon_intr.c",
|
||||
# Sync with silk_sources.mk
|
||||
"silk/CNG.c",
|
||||
"silk/code_signs.c",
|
||||
@@ -207,7 +202,7 @@ if env['builtin_opus']:
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources + opus_sources_silk]
|
||||
|
||||
# also requires libogg
|
||||
if env['builtin_libogg']:
|
||||
if env["builtin_libogg"]:
|
||||
env_opus.Prepend(CPPPATH=["#thirdparty/libogg"])
|
||||
|
||||
env_opus.Append(CPPDEFINES=["HAVE_CONFIG_H"])
|
||||
@@ -223,14 +218,14 @@ if env['builtin_opus']:
|
||||
env_opus.Prepend(CPPPATH=[thirdparty_dir + "/" + dir for dir in thirdparty_include_paths])
|
||||
|
||||
if env["platform"] == "android":
|
||||
if ("android_arch" in env and env["android_arch"] == "armv7"):
|
||||
if "android_arch" in env and env["android_arch"] == "armv7":
|
||||
env_opus.Append(CPPDEFINES=["OPUS_ARM_OPT"])
|
||||
elif ("android_arch" in env and env["android_arch"] == "arm64v8"):
|
||||
elif "android_arch" in env and env["android_arch"] == "arm64v8":
|
||||
env_opus.Append(CPPDEFINES=["OPUS_ARM64_OPT"])
|
||||
elif env["platform"] == "iphone":
|
||||
if ("arch" in env and env["arch"] == "arm"):
|
||||
if "arch" in env and env["arch"] == "arm":
|
||||
env_opus.Append(CPPDEFINES=["OPUS_ARM_OPT"])
|
||||
elif ("arch" in env and env["arch"] == "arm64"):
|
||||
elif "arch" in env and env["arch"] == "arm64":
|
||||
env_opus.Append(CPPDEFINES=["OPUS_ARM64_OPT"])
|
||||
|
||||
env_thirdparty = env_opus.Clone()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_pvr = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_regex = env_modules.Clone()
|
||||
|
||||
if env['builtin_pcre2']:
|
||||
thirdparty_dir = '#thirdparty/pcre2/src/'
|
||||
thirdparty_flags = ['PCRE2_STATIC', 'HAVE_CONFIG_H']
|
||||
if env["builtin_pcre2"]:
|
||||
thirdparty_dir = "#thirdparty/pcre2/src/"
|
||||
thirdparty_flags = ["PCRE2_STATIC", "HAVE_CONFIG_H"]
|
||||
|
||||
if env['builtin_pcre2_with_jit']:
|
||||
thirdparty_flags.append('SUPPORT_JIT')
|
||||
if env["builtin_pcre2_with_jit"]:
|
||||
thirdparty_flags.append("SUPPORT_JIT")
|
||||
|
||||
thirdparty_sources = [
|
||||
"pcre2_auto_possess.c",
|
||||
@@ -24,7 +24,7 @@ if env['builtin_pcre2']:
|
||||
"pcre2_extuni.c",
|
||||
"pcre2_find_bracket.c",
|
||||
"pcre2_jit_compile.c",
|
||||
#"pcre2_jit_match.c", "pcre2_jit_misc.c", # these files are included in pcre2_jit_compile.c.
|
||||
# "pcre2_jit_match.c", "pcre2_jit_misc.c", # these files are included in pcre2_jit_compile.c.
|
||||
"pcre2_maketables.c",
|
||||
"pcre2_match.c",
|
||||
"pcre2_match_data.c",
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"RegEx",
|
||||
"RegExMatch",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_squish = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_squish']:
|
||||
if env["builtin_squish"]:
|
||||
thirdparty_dir = "#thirdparty/squish/"
|
||||
thirdparty_sources = [
|
||||
"alpha.cpp",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_stb_vorbis = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"AudioStreamOGGVorbis",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_svg = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
thirdparty_dir = "#thirdparty/nanosvg/"
|
||||
thirdparty_sources = [
|
||||
"nanosvg.cc"
|
||||
"nanosvg.cc",
|
||||
]
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_tga = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_theora = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_libtheora']:
|
||||
if env["builtin_libtheora"]:
|
||||
thirdparty_dir = "#thirdparty/libtheora/"
|
||||
thirdparty_sources = [
|
||||
#"analyze.c",
|
||||
#"apiwrapper.c",
|
||||
# "analyze.c",
|
||||
# "apiwrapper.c",
|
||||
"bitpack.c",
|
||||
"cpu.c",
|
||||
#"decapiwrapper.c",
|
||||
# "decapiwrapper.c",
|
||||
"decinfo.c",
|
||||
"decode.c",
|
||||
"dequant.c",
|
||||
#"encapiwrapper.c",
|
||||
#"encfrag.c",
|
||||
#"encinfo.c",
|
||||
#"encode.c",
|
||||
#"encoder_disabled.c",
|
||||
#"enquant.c",
|
||||
#"fdct.c",
|
||||
# "encapiwrapper.c",
|
||||
# "encfrag.c",
|
||||
# "encinfo.c",
|
||||
# "encode.c",
|
||||
# "encoder_disabled.c",
|
||||
# "enquant.c",
|
||||
# "fdct.c",
|
||||
"fragment.c",
|
||||
"huffdec.c",
|
||||
#"huffenc.c",
|
||||
# "huffenc.c",
|
||||
"idct.c",
|
||||
"info.c",
|
||||
"internal.c",
|
||||
#"mathops.c",
|
||||
#"mcenc.c",
|
||||
# "mathops.c",
|
||||
# "mcenc.c",
|
||||
"quant.c",
|
||||
#"rate.c",
|
||||
# "rate.c",
|
||||
"state.c",
|
||||
#"tokenize.c",
|
||||
# "tokenize.c",
|
||||
]
|
||||
|
||||
thirdparty_sources_x86 = [
|
||||
#"x86/mmxencfrag.c",
|
||||
#"x86/mmxfdct.c",
|
||||
# "x86/mmxencfrag.c",
|
||||
# "x86/mmxfdct.c",
|
||||
"x86/mmxfrag.c",
|
||||
"x86/mmxidct.c",
|
||||
"x86/mmxstate.c",
|
||||
#"x86/sse2fdct.c",
|
||||
#"x86/x86enc.c",
|
||||
# "x86/sse2fdct.c",
|
||||
# "x86/x86enc.c",
|
||||
"x86/x86state.c",
|
||||
]
|
||||
|
||||
thirdparty_sources_x86_vc = [
|
||||
#"x86_vc/mmxencfrag.c",
|
||||
#"x86_vc/mmxfdct.c",
|
||||
# "x86_vc/mmxencfrag.c",
|
||||
# "x86_vc/mmxfdct.c",
|
||||
"x86_vc/mmxfrag.c",
|
||||
"x86_vc/mmxidct.c",
|
||||
"x86_vc/mmxstate.c",
|
||||
#"x86_vc/x86enc.c",
|
||||
# "x86_vc/x86enc.c",
|
||||
"x86_vc/x86state.c",
|
||||
]
|
||||
|
||||
if (env["x86_libtheora_opt_gcc"]):
|
||||
if env["x86_libtheora_opt_gcc"]:
|
||||
thirdparty_sources += thirdparty_sources_x86
|
||||
|
||||
if (env["x86_libtheora_opt_vc"]):
|
||||
if env["x86_libtheora_opt_vc"]:
|
||||
thirdparty_sources += thirdparty_sources_x86_vc
|
||||
|
||||
if (env["x86_libtheora_opt_gcc"] or env["x86_libtheora_opt_vc"]):
|
||||
if env["x86_libtheora_opt_gcc"] or env["x86_libtheora_opt_vc"]:
|
||||
env_theora.Append(CPPDEFINES=["OC_X86_ASM"])
|
||||
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
@@ -73,9 +73,9 @@ if env['builtin_libtheora']:
|
||||
env_theora.Prepend(CPPPATH=[thirdparty_dir])
|
||||
|
||||
# also requires libogg and libvorbis
|
||||
if env['builtin_libogg']:
|
||||
if env["builtin_libogg"]:
|
||||
env_theora.Prepend(CPPPATH=["#thirdparty/libogg"])
|
||||
if env['builtin_libvorbis']:
|
||||
if env["builtin_libvorbis"]:
|
||||
env_theora.Prepend(CPPPATH=["#thirdparty/libvorbis"])
|
||||
|
||||
env_thirdparty = env_theora.Clone()
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"VideoStreamTheora",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_tinyexr = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return env['tools']
|
||||
return env["tools"]
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_upnp = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
|
||||
if env['builtin_miniupnpc']:
|
||||
if env["builtin_miniupnpc"]:
|
||||
thirdparty_dir = "#thirdparty/miniupnpc/"
|
||||
thirdparty_sources = [
|
||||
"miniupnpc.c",
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"UPNP",
|
||||
"UPNPDevice"
|
||||
"UPNPDevice",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_vhacd = env_modules.Clone()
|
||||
|
||||
@@ -19,7 +19,7 @@ thirdparty_sources = [
|
||||
"src/btAlignedAllocator.cpp",
|
||||
"src/vhacdRaycastMesh.cpp",
|
||||
"src/VHACD.cpp",
|
||||
"src/btConvexHullComputer.cpp"
|
||||
"src/btConvexHullComputer.cpp",
|
||||
]
|
||||
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_vs = env_modules.Clone()
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"@VisualScript",
|
||||
@@ -56,5 +58,6 @@ def get_doc_classes():
|
||||
"VisualScriptYield",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
# Only kept to build the thirdparty library used by the theora and webm
|
||||
# modules. We now use stb_vorbis for AudioStreamOGGVorbis.
|
||||
@@ -11,11 +11,11 @@ env_vorbis = env_modules.Clone()
|
||||
stub = True
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_libvorbis']:
|
||||
if env["builtin_libvorbis"]:
|
||||
thirdparty_dir = "#thirdparty/libvorbis/"
|
||||
thirdparty_sources = [
|
||||
#"analysis.c",
|
||||
#"barkmel.c",
|
||||
# "analysis.c",
|
||||
# "barkmel.c",
|
||||
"bitrate.c",
|
||||
"block.c",
|
||||
"codebook.c",
|
||||
@@ -29,14 +29,14 @@ if env['builtin_libvorbis']:
|
||||
"mapping0.c",
|
||||
"mdct.c",
|
||||
"psy.c",
|
||||
#"psytune.c",
|
||||
# "psytune.c",
|
||||
"registry.c",
|
||||
"res0.c",
|
||||
"sharedbook.c",
|
||||
"smallft.c",
|
||||
"synthesis.c",
|
||||
#"tone.c",
|
||||
#"vorbisenc.c",
|
||||
# "tone.c",
|
||||
# "vorbisenc.c",
|
||||
"vorbisfile.c",
|
||||
"window.c",
|
||||
]
|
||||
@@ -46,7 +46,7 @@ if env['builtin_libvorbis']:
|
||||
env_vorbis.Prepend(CPPPATH=[thirdparty_dir])
|
||||
|
||||
# also requires libogg
|
||||
if env['builtin_libogg']:
|
||||
if env["builtin_libogg"]:
|
||||
env_vorbis.Prepend(CPPPATH=["#thirdparty/libogg"])
|
||||
|
||||
env_thirdparty = env_vorbis.Clone()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_webm = env_modules.Clone()
|
||||
|
||||
@@ -18,14 +18,14 @@ thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
env_webm.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "libwebm/"])
|
||||
|
||||
# also requires libogg, libvorbis and libopus
|
||||
if env['builtin_libogg']:
|
||||
if env["builtin_libogg"]:
|
||||
env_webm.Prepend(CPPPATH=["#thirdparty/libogg"])
|
||||
if env['builtin_libvorbis']:
|
||||
if env["builtin_libvorbis"]:
|
||||
env_webm.Prepend(CPPPATH=["#thirdparty/libvorbis"])
|
||||
if env['builtin_opus']:
|
||||
if env["builtin_opus"]:
|
||||
env_webm.Prepend(CPPPATH=["#thirdparty/opus"])
|
||||
|
||||
if env['builtin_libvpx']:
|
||||
if env["builtin_libvpx"]:
|
||||
env_webm.Prepend(CPPPATH=["#thirdparty/libvpx"])
|
||||
SConscript("libvpx/SCsub")
|
||||
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
def can_build(env, platform):
|
||||
return platform not in ['iphone']
|
||||
return platform not in ["iphone"]
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"VideoStreamWebm",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
# Thirdparty sources
|
||||
|
||||
@@ -9,9 +9,7 @@ libvpx_dir = "#thirdparty/libvpx/"
|
||||
|
||||
libvpx_sources = [
|
||||
"vp8/vp8_dx_iface.c",
|
||||
|
||||
"vp8/common/generic/systemdependent.c",
|
||||
|
||||
"vp8/common/alloccommon.c",
|
||||
"vp8/common/blockd.c",
|
||||
"vp8/common/copy_c.c",
|
||||
@@ -37,16 +35,12 @@ libvpx_sources = [
|
||||
"vp8/common/swapyv12buffer.c",
|
||||
"vp8/common/treecoder.c",
|
||||
"vp8/common/vp8_loopfilter.c",
|
||||
|
||||
"vp8/decoder/dboolhuff.c",
|
||||
"vp8/decoder/decodeframe.c",
|
||||
"vp8/decoder/decodemv.c",
|
||||
"vp8/decoder/detokenize.c",
|
||||
"vp8/decoder/onyxd_if.c",
|
||||
|
||||
|
||||
"vp9/vp9_dx_iface.c",
|
||||
|
||||
"vp9/common/vp9_alloccommon.c",
|
||||
"vp9/common/vp9_blockd.c",
|
||||
"vp9/common/vp9_common_data.c",
|
||||
@@ -69,21 +63,16 @@ libvpx_sources = [
|
||||
"vp9/common/vp9_seg_common.c",
|
||||
"vp9/common/vp9_thread_common.c",
|
||||
"vp9/common/vp9_tile_common.c",
|
||||
|
||||
"vp9/decoder/vp9_decodeframe.c",
|
||||
"vp9/decoder/vp9_decodemv.c",
|
||||
"vp9/decoder/vp9_decoder.c",
|
||||
"vp9/decoder/vp9_detokenize.c",
|
||||
"vp9/decoder/vp9_dsubexp.c",
|
||||
"vp9/decoder/vp9_dthread.c",
|
||||
|
||||
|
||||
"vpx/src/vpx_codec.c",
|
||||
"vpx/src/vpx_decoder.c",
|
||||
"vpx/src/vpx_image.c",
|
||||
"vpx/src/vpx_psnr.c",
|
||||
|
||||
|
||||
"vpx_dsp/bitreader.c",
|
||||
"vpx_dsp/bitreader_buffer.c",
|
||||
"vpx_dsp/intrapred.c",
|
||||
@@ -92,18 +81,11 @@ libvpx_sources = [
|
||||
"vpx_dsp/prob.c",
|
||||
"vpx_dsp/vpx_convolve.c",
|
||||
"vpx_dsp/vpx_dsp_rtcd.c",
|
||||
|
||||
|
||||
"vpx_mem/vpx_mem.c",
|
||||
|
||||
|
||||
"vpx_scale/vpx_scale_rtcd.c",
|
||||
|
||||
"vpx_scale/generic/yv12config.c",
|
||||
"vpx_scale/generic/yv12extend.c",
|
||||
|
||||
|
||||
"vpx_util/vpx_thread.c"
|
||||
"vpx_util/vpx_thread.c",
|
||||
]
|
||||
|
||||
libvpx_sources_mt = [
|
||||
@@ -114,29 +96,23 @@ libvpx_sources_intrin_x86 = [
|
||||
"vp8/common/x86/filter_x86.c",
|
||||
"vp8/common/x86/loopfilter_x86.c",
|
||||
"vp8/common/x86/vp8_asm_stubs.c",
|
||||
|
||||
|
||||
"vpx_dsp/x86/vpx_asm_stubs.c"
|
||||
"vpx_dsp/x86/vpx_asm_stubs.c",
|
||||
]
|
||||
libvpx_sources_intrin_x86_mmx = [
|
||||
"vp8/common/x86/idct_blk_mmx.c",
|
||||
]
|
||||
libvpx_sources_intrin_x86_sse2 = [
|
||||
"vp8/common/x86/idct_blk_sse2.c",
|
||||
|
||||
|
||||
"vp9/common/x86/vp9_idct_intrin_sse2.c",
|
||||
|
||||
|
||||
"vpx_dsp/x86/inv_txfm_sse2.c",
|
||||
"vpx_dsp/x86/loopfilter_sse2.c",
|
||||
]
|
||||
libvpx_sources_intrin_x86_ssse3 = [
|
||||
"vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c"
|
||||
"vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c",
|
||||
]
|
||||
libvpx_sources_intrin_x86_avx2 = [
|
||||
"vpx_dsp/x86/loopfilter_avx2.c",
|
||||
"vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c"
|
||||
"vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c",
|
||||
]
|
||||
libvpx_sources_x86asm = [
|
||||
"vp8/common/x86/copy_sse2.asm",
|
||||
@@ -153,8 +129,6 @@ libvpx_sources_x86asm = [
|
||||
"vp8/common/x86/subpixel_sse2.asm",
|
||||
"vp8/common/x86/subpixel_ssse3.asm",
|
||||
"vp8/common/x86/vp8_loopfilter_mmx.asm",
|
||||
|
||||
|
||||
"vpx_dsp/x86/intrapred_sse2.asm",
|
||||
"vpx_dsp/x86/intrapred_ssse3.asm",
|
||||
"vpx_dsp/x86/inv_wht_sse2.asm",
|
||||
@@ -163,21 +137,15 @@ libvpx_sources_x86asm = [
|
||||
"vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm",
|
||||
"vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm",
|
||||
"vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm",
|
||||
|
||||
|
||||
"vpx_ports/emms.asm"
|
||||
"vpx_ports/emms.asm",
|
||||
]
|
||||
libvpx_sources_x86_64asm = [
|
||||
"vp8/common/x86/loopfilter_block_sse2_x86_64.asm",
|
||||
|
||||
|
||||
"vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm"
|
||||
"vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm",
|
||||
]
|
||||
|
||||
libvpx_sources_arm = [
|
||||
"vpx_ports/arm_cpudetect.c",
|
||||
|
||||
|
||||
"vp8/common/arm/loopfilter_arm.c",
|
||||
]
|
||||
libvpx_sources_arm_neon = [
|
||||
@@ -196,12 +164,8 @@ libvpx_sources_arm_neon = [
|
||||
"vp8/common/arm/neon/shortidct4x4llm_neon.c",
|
||||
"vp8/common/arm/neon/sixtappredict_neon.c",
|
||||
"vp8/common/arm/neon/vp8_loopfilter_neon.c",
|
||||
|
||||
|
||||
"vp9/common/arm/neon/vp9_iht4x4_add_neon.c",
|
||||
"vp9/common/arm/neon/vp9_iht8x8_add_neon.c",
|
||||
|
||||
|
||||
"vpx_dsp/arm/idct16x16_1_add_neon.c",
|
||||
"vpx_dsp/arm/idct16x16_add_neon.c",
|
||||
"vpx_dsp/arm/idct16x16_neon.c",
|
||||
@@ -220,22 +184,22 @@ libvpx_sources_arm_neon = [
|
||||
"vpx_dsp/arm/vpx_convolve8_neon.c",
|
||||
"vpx_dsp/arm/vpx_convolve_avg_neon.c",
|
||||
"vpx_dsp/arm/vpx_convolve_copy_neon.c",
|
||||
"vpx_dsp/arm/vpx_convolve_neon.c"
|
||||
"vpx_dsp/arm/vpx_convolve_neon.c",
|
||||
]
|
||||
libvpx_sources_arm_neon_gas = [
|
||||
"vpx_dsp/arm/gas/intrapred_neon_asm.s",
|
||||
"vpx_dsp/arm/gas/loopfilter_mb_neon.s",
|
||||
"vpx_dsp/arm/gas/save_reg_neon.s"
|
||||
"vpx_dsp/arm/gas/save_reg_neon.s",
|
||||
]
|
||||
libvpx_sources_arm_neon_armasm_ms = [
|
||||
"vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm",
|
||||
"vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm",
|
||||
"vpx_dsp/arm/armasm_ms/save_reg_neon.asm"
|
||||
"vpx_dsp/arm/armasm_ms/save_reg_neon.asm",
|
||||
]
|
||||
libvpx_sources_arm_neon_gas_apple = [
|
||||
"vpx_dsp/arm/gas_apple/intrapred_neon_asm.s",
|
||||
"vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s",
|
||||
"vpx_dsp/arm/gas_apple/save_reg_neon.s"
|
||||
"vpx_dsp/arm/gas_apple/save_reg_neon.s",
|
||||
]
|
||||
|
||||
libvpx_sources = [libvpx_dir + file for file in libvpx_sources]
|
||||
@@ -258,25 +222,43 @@ env_libvpx = env_modules.Clone()
|
||||
env_libvpx.disable_warnings()
|
||||
env_libvpx.Prepend(CPPPATH=[libvpx_dir])
|
||||
|
||||
webm_multithread = env["platform"] != 'javascript'
|
||||
webm_multithread = env["platform"] != "javascript"
|
||||
|
||||
cpu_bits = env["bits"]
|
||||
webm_cpu_x86 = False
|
||||
webm_cpu_arm = False
|
||||
if env["platform"] == 'uwp':
|
||||
if 'arm' in env["PROGSUFFIX"]:
|
||||
if env["platform"] == "uwp":
|
||||
if "arm" in env["PROGSUFFIX"]:
|
||||
webm_cpu_arm = True
|
||||
else:
|
||||
webm_cpu_x86 = True
|
||||
else:
|
||||
import platform
|
||||
is_x11_or_server_arm = ((env["platform"] == 'linuxbsd' or env["platform"] == 'server') and (platform.machine().startswith('arm') or platform.machine().startswith('aarch')))
|
||||
is_ios_x86 = (env["platform"] == 'iphone' and ("arch" in env and env["arch"].startswith('x86')))
|
||||
is_android_x86 = (env["platform"] == 'android' and env["android_arch"].startswith('x86'))
|
||||
|
||||
is_x11_or_server_arm = (env["platform"] == "linuxbsd" or env["platform"] == "server") and (
|
||||
platform.machine().startswith("arm") or platform.machine().startswith("aarch")
|
||||
)
|
||||
is_ios_x86 = env["platform"] == "iphone" and ("arch" in env and env["arch"].startswith("x86"))
|
||||
is_android_x86 = env["platform"] == "android" and env["android_arch"].startswith("x86")
|
||||
if is_android_x86:
|
||||
cpu_bits = '32' if env["android_arch"] == 'x86' else '64'
|
||||
webm_cpu_x86 = not is_x11_or_server_arm and (cpu_bits == '32' or cpu_bits == '64') and (env["platform"] == 'windows' or env["platform"] == 'linuxbsd' or env["platform"] == 'osx' or env["platform"] == 'haiku' or is_android_x86 or is_ios_x86)
|
||||
webm_cpu_arm = is_x11_or_server_arm or (not is_ios_x86 and env["platform"] == 'iphone') or (not is_android_x86 and env["platform"] == 'android')
|
||||
cpu_bits = "32" if env["android_arch"] == "x86" else "64"
|
||||
webm_cpu_x86 = (
|
||||
not is_x11_or_server_arm
|
||||
and (cpu_bits == "32" or cpu_bits == "64")
|
||||
and (
|
||||
env["platform"] == "windows"
|
||||
or env["platform"] == "linuxbsd"
|
||||
or env["platform"] == "osx"
|
||||
or env["platform"] == "haiku"
|
||||
or is_android_x86
|
||||
or is_ios_x86
|
||||
)
|
||||
)
|
||||
webm_cpu_arm = (
|
||||
is_x11_or_server_arm
|
||||
or (not is_ios_x86 and env["platform"] == "iphone")
|
||||
or (not is_android_x86 and env["platform"] == "android")
|
||||
)
|
||||
|
||||
if webm_cpu_x86:
|
||||
import subprocess
|
||||
@@ -306,38 +288,43 @@ if webm_cpu_x86:
|
||||
webm_simd_optimizations = False
|
||||
|
||||
if webm_cpu_x86:
|
||||
if env["platform"] == 'windows' or env["platform"] == 'uwp':
|
||||
env_libvpx["ASFORMAT"] = 'win'
|
||||
elif env["platform"] == 'osx' or env["platform"] == "iphone":
|
||||
env_libvpx["ASFORMAT"] = 'macho'
|
||||
if env["platform"] == "windows" or env["platform"] == "uwp":
|
||||
env_libvpx["ASFORMAT"] = "win"
|
||||
elif env["platform"] == "osx" or env["platform"] == "iphone":
|
||||
env_libvpx["ASFORMAT"] = "macho"
|
||||
else:
|
||||
env_libvpx["ASFORMAT"] = 'elf'
|
||||
env_libvpx["ASFORMAT"] = "elf"
|
||||
env_libvpx["ASFORMAT"] += cpu_bits
|
||||
|
||||
env_libvpx["AS"] = 'yasm'
|
||||
env_libvpx["ASFLAGS"] = '-I' + libvpx_dir[1:] + ' -f $ASFORMAT -D $ASCPU'
|
||||
env_libvpx["ASCOM"] = '$AS $ASFLAGS -o $TARGET $SOURCES'
|
||||
env_libvpx["AS"] = "yasm"
|
||||
env_libvpx["ASFLAGS"] = "-I" + libvpx_dir[1:] + " -f $ASFORMAT -D $ASCPU"
|
||||
env_libvpx["ASCOM"] = "$AS $ASFLAGS -o $TARGET $SOURCES"
|
||||
|
||||
if cpu_bits == '32':
|
||||
env_libvpx["ASCPU"] = 'X86_32'
|
||||
elif cpu_bits == '64':
|
||||
env_libvpx["ASCPU"] = 'X86_64'
|
||||
if cpu_bits == "32":
|
||||
env_libvpx["ASCPU"] = "X86_32"
|
||||
elif cpu_bits == "64":
|
||||
env_libvpx["ASCPU"] = "X86_64"
|
||||
|
||||
env_libvpx.Append(CPPDEFINES=['WEBM_X86ASM'])
|
||||
env_libvpx.Append(CPPDEFINES=["WEBM_X86ASM"])
|
||||
|
||||
webm_simd_optimizations = True
|
||||
|
||||
if webm_cpu_arm:
|
||||
if env["platform"] == 'iphone':
|
||||
env_libvpx["ASFLAGS"] = '-arch armv7'
|
||||
elif env["platform"] == 'android' and env["android_arch"] == 'armv7' or env["platform"] == 'linuxbsd' or env["platform"] == 'server':
|
||||
env_libvpx["ASFLAGS"] = '-mfpu=neon'
|
||||
elif env["platform"] == 'uwp':
|
||||
env_libvpx["AS"] = 'armasm'
|
||||
env_libvpx["ASFLAGS"] = ''
|
||||
env_libvpx["ASCOM"] = '$AS $ASFLAGS -o $TARGET $SOURCES'
|
||||
if env["platform"] == "iphone":
|
||||
env_libvpx["ASFLAGS"] = "-arch armv7"
|
||||
elif (
|
||||
env["platform"] == "android"
|
||||
and env["android_arch"] == "armv7"
|
||||
or env["platform"] == "linuxbsd"
|
||||
or env["platform"] == "server"
|
||||
):
|
||||
env_libvpx["ASFLAGS"] = "-mfpu=neon"
|
||||
elif env["platform"] == "uwp":
|
||||
env_libvpx["AS"] = "armasm"
|
||||
env_libvpx["ASFLAGS"] = ""
|
||||
env_libvpx["ASCOM"] = "$AS $ASFLAGS -o $TARGET $SOURCES"
|
||||
|
||||
env_libvpx.Append(CPPDEFINES=['WEBM_ARMASM'])
|
||||
env_libvpx.Append(CPPDEFINES=["WEBM_ARMASM"])
|
||||
|
||||
webm_simd_optimizations = True
|
||||
|
||||
@@ -350,45 +337,49 @@ if webm_multithread:
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_mt)
|
||||
|
||||
if webm_cpu_x86:
|
||||
is_clang_or_gcc = ('gcc' in os.path.basename(env["CC"])) or ('clang' in os.path.basename(env["CC"])) or ("osxcross" in env)
|
||||
is_clang_or_gcc = (
|
||||
("gcc" in os.path.basename(env["CC"])) or ("clang" in os.path.basename(env["CC"])) or ("osxcross" in env)
|
||||
)
|
||||
|
||||
env_libvpx_mmx = env_libvpx.Clone()
|
||||
if cpu_bits == '32' and is_clang_or_gcc:
|
||||
env_libvpx_mmx.Append(CCFLAGS=['-mmmx'])
|
||||
if cpu_bits == "32" and is_clang_or_gcc:
|
||||
env_libvpx_mmx.Append(CCFLAGS=["-mmmx"])
|
||||
env_libvpx_mmx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_mmx)
|
||||
|
||||
env_libvpx_sse2 = env_libvpx.Clone()
|
||||
if cpu_bits == '32' and is_clang_or_gcc:
|
||||
env_libvpx_sse2.Append(CCFLAGS=['-msse2'])
|
||||
if cpu_bits == "32" and is_clang_or_gcc:
|
||||
env_libvpx_sse2.Append(CCFLAGS=["-msse2"])
|
||||
env_libvpx_sse2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_sse2)
|
||||
|
||||
env_libvpx_ssse3 = env_libvpx.Clone()
|
||||
if is_clang_or_gcc:
|
||||
env_libvpx_ssse3.Append(CCFLAGS=['-mssse3'])
|
||||
env_libvpx_ssse3.Append(CCFLAGS=["-mssse3"])
|
||||
env_libvpx_ssse3.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_ssse3)
|
||||
|
||||
env_libvpx_avx2 = env_libvpx.Clone()
|
||||
if is_clang_or_gcc:
|
||||
env_libvpx_avx2.Append(CCFLAGS=['-mavx2'])
|
||||
env_libvpx_avx2.Append(CCFLAGS=["-mavx2"])
|
||||
env_libvpx_avx2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_avx2)
|
||||
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86)
|
||||
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86asm)
|
||||
if cpu_bits == '64':
|
||||
if cpu_bits == "64":
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86_64asm)
|
||||
elif webm_cpu_arm:
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm)
|
||||
if env["platform"] == 'android':
|
||||
if env["platform"] == "android":
|
||||
env_libvpx.Prepend(CPPPATH=[libvpx_dir + "third_party/android"])
|
||||
env_libvpx.add_source_files(env.modules_sources, [libvpx_dir + "third_party/android/cpu-features.c"])
|
||||
|
||||
env_libvpx_neon = env_libvpx.Clone()
|
||||
env_libvpx_neon.add_source_files(env.modules_sources, libvpx_sources_arm_neon)
|
||||
|
||||
if env["platform"] == 'uwp':
|
||||
if env["platform"] == "uwp":
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_armasm_ms)
|
||||
elif env["platform"] == 'iphone':
|
||||
elif env["platform"] == "iphone":
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas_apple)
|
||||
elif (is_x11_or_server_arm and cpu_bits == '32') or (env["platform"] == 'android' and not env["android_arch"] == 'arm64v8'):
|
||||
elif (is_x11_or_server_arm and cpu_bits == "32") or (
|
||||
env["platform"] == "android" and not env["android_arch"] == "arm64v8"
|
||||
):
|
||||
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas)
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
env_webp = env_modules.Clone()
|
||||
|
||||
# Thirdparty source files
|
||||
if env['builtin_libwebp']:
|
||||
if env["builtin_libwebp"]:
|
||||
thirdparty_dir = "#thirdparty/libwebp/"
|
||||
thirdparty_sources = [
|
||||
"dec/alpha_dec.c",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
# Thirdparty source files
|
||||
|
||||
env_webrtc = env_modules.Clone()
|
||||
use_gdnative = env_webrtc["module_gdnative_enabled"]
|
||||
|
||||
if use_gdnative: # GDNative is retained in Javascript for export compatibility
|
||||
env_webrtc.Append(CPPDEFINES=['WEBRTC_GDNATIVE_ENABLED'])
|
||||
if use_gdnative: # GDNative is retained in Javascript for export compatibility
|
||||
env_webrtc.Append(CPPDEFINES=["WEBRTC_GDNATIVE_ENABLED"])
|
||||
env_webrtc.Prepend(CPPPATH=["#modules/gdnative/include/"])
|
||||
|
||||
env_webrtc.add_source_files(env.modules_sources, "*.cpp")
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
def can_build(env, platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
def get_doc_classes():
|
||||
return [
|
||||
"WebRTCPeerConnection",
|
||||
"WebRTCDataChannel",
|
||||
"WebRTCMultiplayer"
|
||||
"WebRTCMultiplayer",
|
||||
]
|
||||
|
||||
|
||||
def get_doc_path():
|
||||
return "doc_classes"
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
Import('env')
|
||||
Import('env_modules')
|
||||
Import("env")
|
||||
Import("env_modules")
|
||||
|
||||
# Thirdparty source files
|
||||
|
||||
env_ws = env_modules.Clone()
|
||||
|
||||
if env['builtin_wslay'] and not env["platform"] == "javascript": # already builtin for javascript
|
||||
if env["builtin_wslay"] and not env["platform"] == "javascript": # already builtin for javascript
|
||||
wslay_dir = "#thirdparty/wslay/"
|
||||
wslay_sources = [
|
||||
"wslay_net.c",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user