#!/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/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") 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)