2016-10-17 14:50:25 +08:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
2020-03-30 14:28:32 +08:00
|
|
|
Import("env")
|
2014-02-10 09:10:30 +08:00
|
|
|
|
2016-10-15 18:39:28 +08:00
|
|
|
env_png = env.Clone()
|
2014-02-10 09:10:30 +08:00
|
|
|
|
2016-10-15 18:39:28 +08:00
|
|
|
# Thirdparty source files
|
2020-12-17 23:01:36 +08:00
|
|
|
|
|
|
|
thirdparty_obj = []
|
|
|
|
|
2020-03-30 14:28:32 +08:00
|
|
|
if env["builtin_libpng"]:
|
2016-10-31 01:44:57 +08:00
|
|
|
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]
|
2016-10-15 21:36:18 +08:00
|
|
|
|
2019-04-30 19:12:02 +08:00
|
|
|
env_png.Prepend(CPPPATH=[thirdparty_dir])
|
2022-08-29 02:27:45 +08:00
|
|
|
# Needed for drivers includes and in platform/web.
|
2019-04-30 19:12:02 +08:00
|
|
|
env.Prepend(CPPPATH=[thirdparty_dir])
|
2014-02-10 09:10:30 +08:00
|
|
|
|
2018-09-28 19:29:52 +08:00
|
|
|
env_thirdparty = env_png.Clone()
|
|
|
|
env_thirdparty.disable_warnings()
|
2020-12-17 23:01:36 +08:00
|
|
|
env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
|
2018-09-28 19:29:52 +08:00
|
|
|
|
2023-06-16 19:20:59 +08:00
|
|
|
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/filter_neon.S"))
|
|
|
|
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"] == "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")
|
2020-12-17 23:01:36 +08:00
|
|
|
|
|
|
|
env.drivers_sources += thirdparty_obj
|
|
|
|
|
2016-10-10 05:36:17 +08:00
|
|
|
|
2016-10-15 18:39:28 +08:00
|
|
|
# Godot source files
|
2016-10-10 05:36:17 +08:00
|
|
|
|
2020-12-17 23:01:36 +08:00
|
|
|
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)
|