blob: 3d633ea7089d19e207344e09cfd2ac7a571d2bb2 [file] [log] [blame]
Dan Albert7ce8df32016-09-23 16:43:49 -07001// Copyright (C) 2016 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
Colin Cross02a86572017-10-07 18:38:31 -070015cc_library_shared {
16 name: "libjnigraphics",
17
18 cflags: [
19 "-Wall",
20 "-Werror",
21 "-Wunused",
22 "-Wunreachable-code",
23 ],
24
Leon Scroggins III9732e292019-12-16 10:26:57 -050025 srcs: [
Leon Scroggins III407b5442019-11-22 17:10:20 -050026 "imagedecoder.cpp",
Leon Scroggins III9732e292019-12-16 10:26:57 -050027 ],
Colin Cross02a86572017-10-07 18:38:31 -070028
29 shared_libs: [
Leon Scroggins III407b5442019-11-22 17:10:20 -050030 "libhwui",
Leon Scroggins III9732e292019-12-16 10:26:57 -050031 "liblog",
Colin Cross02a86572017-10-07 18:38:31 -070032 ],
Ian Pedowitz0c3c4d12018-01-18 16:24:11 -080033
Leon Scroggins IIIc72d0fb2020-12-30 16:38:23 -050034 header_libs: [
Leon Scroggins IIIc72d0fb2020-12-30 16:38:23 -050035 "jni_headers",
Orion Hodson9b4db532021-02-02 11:19:04 +000036 "libhwui_internal_headers",
Leon Scroggins IIIc72d0fb2020-12-30 16:38:23 -050037 ],
Derek Sollenbergeree538a32020-02-19 11:51:17 -050038
Leon Scroggins III407b5442019-11-22 17:10:20 -050039 static_libs: ["libarect"],
40
Ian Pedowitz0c3c4d12018-01-18 16:24:11 -080041 arch: {
42 arm: {
43 // TODO: This is to work around b/24465209. Remove after root cause is fixed
Chih-Hung Hsieheeb1ea82018-05-22 21:37:08 -070044 pack_relocations: false,
Ian Pedowitz0c3c4d12018-01-18 16:24:11 -080045 ldflags: ["-Wl,--hash-style=both"],
46 },
47 },
Leon Scroggins IIIc72d0fb2020-12-30 16:38:23 -050048 host_supported: true,
49 target: {
50 android: {
51 srcs: [
52 "aassetstreamadaptor.cpp",
53 "bitmap.cpp",
54 ],
55 shared_libs: [
56 "libandroid",
57 ],
58 version_script: "libjnigraphics.map.txt",
59 },
60 host: {
61 header_libs: [
62 "libnativewindow_headers",
63 ],
64 },
65 },
Colin Cross02a86572017-10-07 18:38:31 -070066}
67
Dan Albert7ce8df32016-09-23 16:43:49 -070068// The headers module is in frameworks/native/Android.bp.
69ndk_library {
Dan Willemsen3dcf0312017-04-07 15:48:45 -070070 name: "libjnigraphics",
Dan Albert7ce8df32016-09-23 16:43:49 -070071 symbol_file: "libjnigraphics.map.txt",
72 first_version: "9",
Dan Albert98e462d2017-01-05 16:01:14 -080073 unversioned_until: "current",
Dan Albert7ce8df32016-09-23 16:43:49 -070074}
Leon Scroggins III140f5082020-02-26 17:15:12 -050075
Leon Scroggins III8f774242021-01-15 11:33:23 -050076cc_defaults {
77 name: "imagedecoder_fuzzer_defaults",
78 srcs: ["fuzz/fuzz_imagedecoder.cpp"],
Leon Scroggins III140f5082020-02-26 17:15:12 -050079 header_libs: ["jni_headers"],
80 shared_libs: [
81 "libbinder",
82 "libjnigraphics",
83 "libutils",
84 ],
85 static_libs: ["libarect"],
86 fuzz_config: {
87 cc: ["scroggo@google.com"],
Leon Scroggins IIIc72d0fb2020-12-30 16:38:23 -050088 asan_options: [
89 "detect_odr_violation=1",
90 ],
Leon Scroggins IIIba9a6902021-01-11 11:35:10 -050091 hwasan_options: [
92 // Image decoders may attempt to allocate a large amount of memory
93 // (especially if the encoded image is large). This doesn't
94 // necessarily mean there is a bug. Set allocator_may_return_null=1
95 // for hwasan so the fuzzer can continue running.
96 "allocator_may_return_null = 1",
97 ],
Leon Scroggins III140f5082020-02-26 17:15:12 -050098 },
Leon Scroggins IIIc72d0fb2020-12-30 16:38:23 -050099 host_supported: true,
Leon Scroggins III140f5082020-02-26 17:15:12 -0500100}
Leon Scroggins III8f774242021-01-15 11:33:23 -0500101
102cc_fuzz {
103 name: "imagedecoder_fuzzer",
104 defaults: ["imagedecoder_fuzzer_defaults"],
105 corpus: ["fuzz/corpus/*"],
106}
107
108cc_fuzz {
109 name: "imagedecoder_png_fuzzer",
110 defaults: ["imagedecoder_fuzzer_defaults"],
111 shared_libs: [
112 "libz",
113 ],
114 cflags: [
115 "-DPNG_MUTATOR_DEFINE_LIBFUZZER_CUSTOM_MUTATOR",
116 ],
117}