123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/usr/bin/env python
- from misc.utility.scons_hints import *
- Import("env")
- env_png = env.Clone()
- # Thirdparty source files
- thirdparty_obj = []
- if env["builtin_libpng"]:
- thirdparty_dir = "#thirdparty/libpng/"
- thirdparty_sources = [
- "png.c",
- "pngerror.c",
- "pngget.c",
- "pngmem.c",
- "pngpread.c",
- "pngread.c",
- "pngrio.c",
- "pngrtran.c",
- "pngrutil.c",
- "pngset.c",
- "pngtrans.c",
- "pngwio.c",
- "pngwrite.c",
- "pngwtran.c",
- "pngwutil.c",
- ]
- thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
- env_png.Prepend(CPPPATH=[thirdparty_dir])
- # Needed for drivers includes and in platform/web.
- env.Prepend(CPPPATH=[thirdparty_dir])
- env_thirdparty = env_png.Clone()
- env_thirdparty.disable_warnings()
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
- if env["arch"].startswith("arm"):
- if env.msvc: # Can't compile assembly files with MSVC.
- env_thirdparty.Append(CPPDEFINES=[("PNG_ARM_NEON_OPT", 0)])
- else:
- env_neon = env_thirdparty.Clone()
- if "S_compiler" in env:
- env_neon["CC"] = env["S_compiler"]
- neon_sources = []
- neon_sources.append(env_neon.Object(thirdparty_dir + "arm/arm_init.c"))
- neon_sources.append(env_neon.Object(thirdparty_dir + "arm/filter_neon_intrinsics.c"))
- neon_sources.append(env_neon.Object(thirdparty_dir + "arm/palette_neon_intrinsics.c"))
- thirdparty_obj += neon_sources
- elif env["arch"].startswith("x86"):
- env_thirdparty.Append(CPPDEFINES=["PNG_INTEL_SSE"])
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "intel/intel_init.c")
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "intel/filter_sse2_intrinsics.c")
- elif env["arch"] == "loongarch64":
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "loongarch/loongarch_lsx_init.c")
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "loongarch/filter_lsx_intrinsics.c")
- elif env["arch"] == "ppc64":
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "powerpc/powerpc_init.c")
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "powerpc/filter_vsx_intrinsics.c")
- env.drivers_sources += thirdparty_obj
- # Godot source files
- driver_obj = []
- env_png.add_source_files(driver_obj, "*.cpp")
- env.drivers_sources += driver_obj
- # Needed to force rebuilding the driver files when the thirdparty library is updated.
- env.Depends(driver_obj, thirdparty_obj)
|