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"],

    clang: true,
    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: {
        linux_glibc: {
            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
        },
    },
}