| // Copyright (C) 2016 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. | |
| package { | |
| // See: http://go/android-license-faq | |
| // A large-scale-change added 'default_applicable_licenses' to import | |
| // all of the 'license_kinds' from "frameworks_base_license" | |
| // to get the below license kinds: | |
| // SPDX-license-identifier-Apache-2.0 | |
| default_applicable_licenses: ["frameworks_base_license"], | |
| } | |
| cc_library_shared { | |
| name: "libjnigraphics", | |
| cflags: [ | |
| "-Wall", | |
| "-Werror", | |
| "-Wunused", | |
| "-Wunreachable-code", | |
| ], | |
| srcs: [ | |
| "imagedecoder.cpp", | |
| ], | |
| shared_libs: [ | |
| "libhwui", | |
| "liblog", | |
| ], | |
| header_libs: [ | |
| "jni_headers", | |
| "libhwui_internal_headers", | |
| ], | |
| static_libs: ["libarect"], | |
| arch: { | |
| arm: { | |
| // TODO: This is to work around b/24465209. Remove after root cause is fixed | |
| pack_relocations: false, | |
| ldflags: ["-Wl,--hash-style=both"], | |
| }, | |
| }, | |
| host_supported: true, | |
| target: { | |
| android: { | |
| srcs: [ | |
| "aassetstreamadaptor.cpp", | |
| "bitmap.cpp", | |
| ], | |
| shared_libs: [ | |
| "libandroid", | |
| ], | |
| version_script: "libjnigraphics.map.txt", | |
| }, | |
| host: { | |
| header_libs: [ | |
| "libnativewindow_headers", | |
| ], | |
| }, | |
| }, | |
| } | |
| // The headers module is in frameworks/native/Android.bp. | |
| ndk_library { | |
| name: "libjnigraphics", | |
| symbol_file: "libjnigraphics.map.txt", | |
| first_version: "9", | |
| unversioned_until: "current", | |
| } | |
| cc_defaults { | |
| name: "imagedecoder_fuzzer_defaults", | |
| srcs: ["fuzz/fuzz_imagedecoder.cpp"], | |
| header_libs: ["jni_headers"], | |
| shared_libs: [ | |
| "libbinder", | |
| "libjnigraphics", | |
| "libutils", | |
| ], | |
| static_libs: ["libarect"], | |
| fuzz_config: { | |
| cc: ["scroggo@google.com"], | |
| asan_options: [ | |
| "detect_odr_violation=1", | |
| ], | |
| hwasan_options: [ | |
| // Image decoders may attempt to allocate a large amount of memory | |
| // (especially if the encoded image is large). This doesn't | |
| // necessarily mean there is a bug. Set allocator_may_return_null=1 | |
| // for hwasan so the fuzzer can continue running. | |
| "allocator_may_return_null = 1", | |
| ], | |
| }, | |
| host_supported: true, | |
| } | |
| cc_fuzz { | |
| name: "imagedecoder_fuzzer", | |
| defaults: ["imagedecoder_fuzzer_defaults"], | |
| corpus: ["fuzz/corpus/*"], | |
| } | |
| cc_fuzz { | |
| name: "imagedecoder_png_fuzzer", | |
| defaults: ["imagedecoder_fuzzer_defaults"], | |
| shared_libs: [ | |
| "libz", | |
| ], | |
| cflags: [ | |
| "-DPNG_MUTATOR_DEFINE_LIBFUZZER_CUSTOM_MUTATOR", | |
| ], | |
| } |