// We need to build this for both the device (as a shared library)
// and the host (as a static library for tools to use).

cc_defaults {
    name: "libpng-defaults",
    srcs: [
        "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",
    ],
    cflags: [
        "-std=gnu89",
        "-Wno-unused-parameter",
    ],
    arch: {
        arm: {
            srcs: [
                "arm/arm_init.c",
                "arm/filter_neon.S",
                "arm/filter_neon_intrinsics.c",
            ],
        },
        arm64: {
            srcs: [
                "arm/arm_init.c",
                "arm/filter_neon.S",
                "arm/filter_neon_intrinsics.c",
            ],
        },
        x86: {
            srcs: [
                "contrib/intel/intel_init.c",
                "contrib/intel/filter_sse2_intrinsics.c",
            ],
            // Disable optimizations because they crash on windows
            // cflags: ["-DPNG_INTEL_SSE_OPT=1"],
        },
        x86_64: {
            srcs: [
                "contrib/intel/intel_init.c",
                "contrib/intel/filter_sse2_intrinsics.c",
            ],
            // Disable optimizations because they crash on windows
            // cflags: ["-DPNG_INTEL_SSE_OPT=1"],
        },
    },
    target: {
        android: {
            shared_libs: ["libz"],
        },
        android_x86: {
            cflags: ["-DPNG_INTEL_SSE_OPT=1"],
        },
        android_x86_64: {
            cflags: ["-DPNG_INTEL_SSE_OPT=1"],
        },
        host: {
            shared_libs: ["libz-host"],
        },
    },
    export_include_dirs: ["."],
    clang: true,
}

// For the host and device platform
// =====================================================

cc_library {
    name: "libpng",
    vendor_available: true,
    host_supported: true,
    defaults: ["libpng-defaults"],
    target: {
        windows: {
            enabled: true,
        },
    },
}

// For the device (static) for NDK
// =====================================================

cc_library_static {
    name: "libpng_ndk",
    defaults: ["libpng-defaults"],
    cflags: ["-ftrapv"],

    shared_libs: ["libz"],
    sdk_version: "14",
}

// For testing
// =====================================================

cc_test {
    clang: true,
    host_supported: true,
    gtest: false,
    srcs: ["pngtest.c"],
    name: "pngtest",
    shared_libs: [
        "libpng",
    ],
    target: {
        android: {
            shared_libs: ["libz"],
        },
        host: {
            shared_libs: ["libz-host"],
        },
    },
}