#!/usr/bin/env python from misc.utility.scons_hints import * Import("env") Import("env_modules") env_basisu = env_modules.Clone() # Thirdparty source files thirdparty_obj = [] # Not unbundled so far since not widespread as shared library thirdparty_dir = "#thirdparty/basis_universal/" # Sync list with upstream CMakeLists.txt encoder_sources = [ "3rdparty/android_astc_decomp.cpp", "basisu_astc_hdr_enc.cpp", "basisu_backend.cpp", "basisu_basis_file.cpp", "basisu_bc7enc.cpp", "basisu_opencl.cpp", "basisu_comp.cpp", "basisu_enc.cpp", "basisu_etc.cpp", "basisu_frontend.cpp", "basisu_gpu_texture.cpp", "basisu_kernels_sse.cpp", "basisu_pvrtc1_4.cpp", "basisu_resampler.cpp", "basisu_resample_filters.cpp", "basisu_ssim.cpp", "basisu_uastc_enc.cpp", "pvpngreader.cpp", ] encoder_sources = [thirdparty_dir + "encoder/" + file for file in encoder_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/jpeg-compressor").path] ) else: env_basisu.Prepend(CPPPATH=[thirdparty_dir, "#thirdparty/jpeg-compressor"]) if env["builtin_zstd"]: env_basisu.Prepend(CPPPATH=["#thirdparty/zstd"]) env_basisu.Prepend(CPPPATH=["#thirdparty/tinyexr"]) if env.dev_build: env_basisu.Append(CPPDEFINES=[("BASISU_DEVEL_MESSAGES", 1), ("BASISD_ENABLE_DEBUG_FLAGS", 1)]) env_thirdparty = env_basisu.Clone() env_thirdparty.disable_warnings() # Disable unneeded features to reduce binary size. # env_thirdparty.Append( CPPDEFINES=[ # Storage formats. # Godot only implements `.basis` support through basis_universal. # Support for `.ktx` files are implemented with a direct libktx implementation. # Building the encoder requires `BASISD_SUPPORT_KTX2` to be enabled, # so we can only disable Zstandard compression for `.ktx` files # (this is not used in `.basis` files). ("BASISD_SUPPORT_KTX2_ZSTD", 0), # GPU compression formats. ("BASISD_SUPPORT_ATC", 0), # Proprietary Adreno format not supported by Godot. ("BASISD_SUPPORT_FXT1", 0), # Legacy format not supported by Godot. ("BASISD_SUPPORT_PVRTC1", 0), # Legacy format not supported by Godot. ("BASISD_SUPPORT_PVRTC2", 0), # Legacy format not supported by Godot. ] ) if env.editor_build: env_thirdparty.Append(CPPDEFINES=["BASISU_NO_IMG_LOADERS"]) env_thirdparty.add_source_files(thirdparty_obj, encoder_sources) env_thirdparty.add_source_files(thirdparty_obj, transcoder_sources) env.modules_sources += thirdparty_obj # Godot source files module_obj = [] env_basisu.add_source_files(module_obj, "*.cpp") env.modules_sources += module_obj # Needed to force rebuilding the module files when the thirdparty library is updated. env.Depends(module_obj, thirdparty_obj)