// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS.  PLEASE
//     CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
//     DEPENDING ON IT IN YOUR PROJECT. ***
package {
    default_applicable_licenses: ["external_dng_sdk_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
//
// large-scale-change included anything that looked like it might be a license
// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
//
// Please consider removing redundant or irrelevant files from 'license_text:'.
// See: http://go/android-license-faq
license {
    name: "external_dng_sdk_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-MIT",
        "legacy_by_exception_only", // by exception only
    ],
    license_text: [
        "LICENSE",
        "LICENSE.source_code",
        "LICENSE.technology",
        "NOTICE",
        "PATENTS",
    ],
}

cc_defaults {
    name: "libdng_sdk-defaults",
    srcs: [
        "source/dng_1d_function.cpp",
        "source/dng_1d_table.cpp",
        "source/dng_abort_sniffer.cpp",
        "source/dng_area_task.cpp",
        "source/dng_bad_pixels.cpp",
        "source/dng_bottlenecks.cpp",
        "source/dng_camera_profile.cpp",
        "source/dng_color_space.cpp",
        "source/dng_color_spec.cpp",
        "source/dng_date_time.cpp",
        "source/dng_exceptions.cpp",
        "source/dng_exif.cpp",
        "source/dng_file_stream.cpp",
        "source/dng_filter_task.cpp",
        "source/dng_fingerprint.cpp",
        "source/dng_gain_map.cpp",
        "source/dng_globals.cpp",
        "source/dng_host.cpp",
        "source/dng_hue_sat_map.cpp",
        "source/dng_ifd.cpp",
        "source/dng_image.cpp",
        "source/dng_image_writer.cpp",
        "source/dng_info.cpp",
        "source/dng_iptc.cpp",
        "source/dng_jpeg_image.cpp",
        "source/dng_jpeg_memory_source.cpp",
        "source/dng_lens_correction.cpp",
        "source/dng_linearization_info.cpp",
        "source/dng_lossless_jpeg.cpp",
        "source/dng_matrix.cpp",
        "source/dng_memory.cpp",
        "source/dng_memory_stream.cpp",
        "source/dng_misc_opcodes.cpp",
        "source/dng_mosaic_info.cpp",
        "source/dng_mutex.cpp",
        "source/dng_negative.cpp",
        "source/dng_opcode_list.cpp",
        "source/dng_opcodes.cpp",
        "source/dng_orientation.cpp",
        "source/dng_parse_utils.cpp",
        "source/dng_pixel_buffer.cpp",
        "source/dng_point.cpp",
        "source/dng_preview.cpp",
        "source/dng_pthread.cpp",
        "source/dng_rational.cpp",
        "source/dng_read_image.cpp",
        "source/dng_rect.cpp",
        "source/dng_ref_counted_block.cpp",
        "source/dng_reference.cpp",
        "source/dng_render.cpp",
        "source/dng_resample.cpp",
        "source/dng_safe_arithmetic.cpp",
        "source/dng_shared.cpp",
        "source/dng_simple_image.cpp",
        "source/dng_spline.cpp",
        "source/dng_stream.cpp",
        "source/dng_string.cpp",
        "source/dng_string_list.cpp",
        "source/dng_tag_types.cpp",
        "source/dng_temperature.cpp",
        "source/dng_tile_iterator.cpp",
        "source/dng_tone_curve.cpp",
        "source/dng_utils.cpp",
        "source/dng_xy_coord.cpp",
        "source/dng_xmp.cpp",
    ],
    cflags: [
        "-DUNIX_ENV=1",
        "-DqDNGBigEndian=0",
        "-DqDNGThreadSafe=1",
        "-DqDNGUseLibJPEG=1",
        "-DqDNGUseXMP=0",
        "-DqDNGValidateTarget=1",
        "-DqAndroid=1",
        "-Werror",
        "-Wsign-compare",
        "-Wno-reorder",
        "-Wframe-larger-than=20000",

        // Ignore unused parameters.
        "-Wno-unused-parameter",

        // Some integral return types are annotated with "const."
        "-Wno-ignored-qualifiers",
    ],

    rtti: true,
    cppflags: ["-fexceptions"],

    sanitize: {
        misc_undefined: [
            "unsigned-integer-overflow",
            "signed-integer-overflow",
        ],
    },
}

cc_library {
    name: "libdng_sdk",
    host_supported: true,
    vendor_available: true,
    defaults: ["libdng_sdk-defaults"],

    cflags: ["-DqDNGValidate=0"],

    shared_libs: [
        "libz",
        "libjpeg",
    ],

    target: {
        host_linux: {
            static_libs: ["libcompiler_rt-extras"],
        },
        darwin: {
            host_ldlibs: [
                "-framework AppKit",
            ],
        },
        windows: {
            enabled: true,
            cflags: [
                "-D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR",
                "-Wno-null-arithmetic",
                "-Wno-sign-compare",
                "-Wno-tautological-pointer-compare",
                "-Wno-unknown-pragmas",
            ],
            static_libs: ["libcompiler_rt-extras"],
        },
    },

    export_include_dirs: ["source"],
}

// dng sdk validating version static library
// This version will print out validation warnings/errors to stderr
// and is built against the NDK for use with CTS
// ========================================================

cc_library_static {
    name: "libdng_sdk_validate",
    defaults: ["libdng_sdk-defaults"],

    cflags: ["-DqDNGValidate=1"],

    static_libs: ["libjpeg_static_ndk"],
    shared_libs: ["libz"],

    export_include_dirs: ["source"],

    sdk_version: "24",
    stl: "c++_static",
}

// dng sdk unittests for target
// ========================================================

cc_binary {
    name: "dng_validate",
    defaults: ["libdng_sdk-defaults"],
    srcs: ["source/dng_validate.cpp"],

    cflags: ["-DqDNGValidate=1"],

    shared_libs: [
        "libz",
        "libjpeg",
    ],
}

cc_binary_host {
    name: "dng_validate_host",
    defaults: ["libdng_sdk-defaults"],
    srcs: ["source/dng_validate.cpp"],

    cflags: ["-DqDNGValidate=1"],

    shared_libs: [
        "libz",
        "libjpeg",
    ],

    target: {
        darwin: {
            enabled: false, // b/67474260
        },
    },
}
