#!/usr/bin/env python

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)

cd9be86378207d409cfb697197b400864633c4e0
<mask token>

Import('env')
<mask token>
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])
    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:
            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
<mask token>
env_png.add_source_files(driver_obj, '*.cpp')
env.drivers_sources += driver_obj
env.Depends(driver_obj, thirdparty_obj)

Import('env')
env_png = env.Clone()
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])
    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:
            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
driver_obj = []
env_png.add_source_files(driver_obj, '*.cpp')
env.drivers_sources += driver_obj
env.Depends(driver_obj, thirdparty_obj)

#!/usr/bin/env python

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)
