//
// Copyright (C) 2013 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

// WARNING: this makefile builds a shared library. Do not ever make it build
// a static library or otherwise statically link libexif with your code.
package {
    default_applicable_licenses: ["external_libexif_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_libexif_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-FSFAP",
        "SPDX-license-identifier-GPL",
        "SPDX-license-identifier-LGPL",
        "SPDX-license-identifier-LGPL-2.1",
        "SPDX-license-identifier-LGPL-3.0",
        "SPDX-license-identifier-MIT",
        "legacy_notice",
        "legacy_permissive",
        "legacy_unencumbered",
    ],
    license_text: [
        "COPYING",
        "NOTICE",
    ],
}

cc_library_shared {
    name: "libexif",
    host_supported: true,
    vendor_available: true,
    vndk: {
        enabled: true,
    },

    srcs: [
        "libexif/exif-byte-order.c",
        "libexif/exif-content.c",
        "libexif/exif-data.c",
        "libexif/exif-entry.c",
        "libexif/exif-format.c",
        "libexif/exif-ifd.c",
        "libexif/exif-loader.c",
        "libexif/exif-log.c",
        "libexif/exif-mem.c",
        "libexif/exif-mnote-data.c",
        "libexif/exif-tag.c",
        "libexif/exif-utils.c",
    ],

    shared_libs: [
        "liblog",
    ],

    export_include_dirs: ["."],

    cflags: [
        "-ftrapv",

        // TODO(b/27347470): Disable the following warnings.
        "-Wno-conversion",
        "-Wno-unused-parameter",
        "-Wno-missing-field-initializers",
        "-Wno-switch",
        "-Wno-absolute-value",
        "-Werror",
    ],

    sanitize: {
        integer_overflow: true,
        blocklist: "libexif_blocklist.txt",
    },
}

// WARNING: this makefile builds a shared library. Do not ever make it build
// a static library or otherwise statically link libexif with your code.
