1 // Set up common variables for usage across the libjpeg-turbo modules 2 3 cc_defaults { 4 name: "libjpeg-defaults", 5 cflags: [ 6 "-O3", 7 "-fstrict-aliasing", 8 9 "-Wno-sign-compare", 10 "-Wno-unused-parameter", 11 "-Werror", 12 ], 13 srcs: [ 14 "jcapimin.c", 15 "jcapistd.c", 16 "jaricom.c", 17 "jcarith.c", 18 "jccoefct.c", 19 "jccolor.c", 20 "jcdctmgr.c", 21 "jchuff.c", 22 "jcinit.c", 23 "jcmainct.c", 24 "jcmarker.c", 25 "jcmaster.c", 26 "jcomapi.c", 27 "jcparam.c", 28 "jcphuff.c", 29 "jcprepct.c", 30 "jcsample.c", 31 "jctrans.c", 32 "jdapimin.c", 33 "jdapistd.c", 34 "jdarith.c", 35 "jdatadst.c", 36 "jdatasrc.c", 37 "jdcoefct.c", 38 "jdcolor.c", 39 "jddctmgr.c", 40 "jdhuff.c", 41 "jdinput.c", 42 "jdmainct.c", 43 "jdmarker.c", 44 "jdmaster.c", 45 "jdmerge.c", 46 "jdphuff.c", 47 "jdpostct.c", 48 "jdsample.c", 49 "jdtrans.c", 50 "jerror.c", 51 "jfdctflt.c", 52 "jfdctfst.c", 53 "jfdctint.c", 54 "jidctflt.c", 55 "jidctfst.c", 56 "jidctint.c", 57 "jidctred.c", 58 "jmemmgr.c", 59 "jmemnobs.c", 60 "jquant1.c", 61 "jquant2.c", 62 "jutils.c", 63 ], 64 65 arch: { 66 arm: { 67 // By default, the build system generates ARM target binaries in 68 // thumb mode, where each instruction is 16 bits wide. Defining 69 // this variable as arm forces the build system to generate object 70 // files in 32-bit arm mode. This is the same setting previously 71 // used by libjpeg and it provides a small performance benefit. 72 instruction_set: "arm", 73 // ARM v7 NEON 74 srcs: [ 75 "simd/jsimd_arm_neon.S", 76 "simd/jsimd_arm.c", 77 ], 78 }, 79 arm64: { 80 // ARM v8 64-bit NEON 81 srcs: [ 82 "simd/jsimd_arm64_neon.S", 83 "simd/jsimd_arm64.c", 84 ], 85 }, 86 x86: { 87 // x86 MMX and SSE2 88 srcs: [ 89 "simd/jsimd_i386.c", 90 "simd/jccolor-mmx.asm", 91 "simd/jccolor-sse2.asm", 92 "simd/jcgray-mmx.asm", 93 "simd/jcgray-sse2.asm", 94 "simd/jchuff-sse2.asm", 95 "simd/jcsample-mmx.asm", 96 "simd/jcsample-sse2.asm", 97 "simd/jdcolor-mmx.asm", 98 "simd/jdcolor-sse2.asm", 99 "simd/jdmerge-mmx.asm", 100 "simd/jdmerge-sse2.asm", 101 "simd/jdsample-mmx.asm", 102 "simd/jdsample-sse2.asm", 103 "simd/jfdctflt-3dn.asm", 104 "simd/jfdctflt-sse.asm", 105 "simd/jfdctfst-mmx.asm", 106 "simd/jfdctfst-sse2.asm", 107 "simd/jfdctint-mmx.asm", 108 "simd/jfdctint-sse2.asm", 109 "simd/jidctflt-3dn.asm", 110 "simd/jidctflt-sse2.asm", 111 "simd/jidctflt-sse.asm", 112 "simd/jidctfst-mmx.asm", 113 "simd/jidctfst-sse2.asm", 114 "simd/jidctint-mmx.asm", 115 "simd/jidctint-sse2.asm", 116 "simd/jidctred-mmx.asm", 117 "simd/jidctred-sse2.asm", 118 "simd/jquant-3dn.asm", 119 "simd/jquantf-sse2.asm", 120 "simd/jquanti-sse2.asm", 121 "simd/jquant-mmx.asm", 122 "simd/jquant-sse.asm", 123 "simd/jsimdcpu.asm", 124 ], 125 asflags: [ 126 "-DPIC", 127 "-DELF", 128 ], 129 local_include_dirs: ["simd"], 130 }, 131 x86_64: { 132 // x86-64 SSE2 133 srcs: [ 134 "simd/jsimd_x86_64.c", 135 "simd/jccolor-sse2-64.asm", 136 "simd/jcgray-sse2-64.asm", 137 "simd/jchuff-sse2-64.asm", 138 "simd/jcsample-sse2-64.asm", 139 "simd/jdcolor-sse2-64.asm", 140 "simd/jdmerge-sse2-64.asm", 141 "simd/jdsample-sse2-64.asm", 142 "simd/jfdctflt-sse-64.asm", 143 "simd/jfdctfst-sse2-64.asm", 144 "simd/jfdctint-sse2-64.asm", 145 "simd/jidctflt-sse2-64.asm", 146 "simd/jidctfst-sse2-64.asm", 147 "simd/jidctint-sse2-64.asm", 148 "simd/jidctred-sse2-64.asm", 149 "simd/jquantf-sse2-64.asm", 150 "simd/jquanti-sse2-64.asm", 151 ], 152 asflags: [ 153 "-D__x86_64__", 154 "-DPIC", 155 "-DELF", 156 ], 157 local_include_dirs: ["simd"], 158 }, 159 mips: { 160 srcs: ["jsimd_none.c"], 161 }, 162 mips64: { 163 srcs: ["jsimd_none.c"], 164 }, 165 }, 166 } 167 168 // Also build as a shared library. 169 cc_library { 170 name: "libjpeg", 171 host_supported: true, 172 vendor_available: true, 173 target: { 174 // TODO(b/67474260) Turn this back on 175 darwin: { 176 enabled: false, 177 }, 178 }, 179 vndk: { 180 enabled: true, 181 }, 182 defaults: ["libjpeg-defaults"], 183 export_include_dirs: ["."], 184 } 185 186 // Build static library against the NDK 187 cc_library_static { 188 name: "libjpeg_static_ndk", 189 defaults: ["libjpeg-defaults"], 190 export_include_dirs: ["."], 191 sdk_version: "17", 192 } 193 194 // Definition for TJBench 195 cc_binary { 196 name: "tjbench", 197 198 whole_static_libs: ["libjpeg"], 199 200 multilib: { 201 lib32: { 202 stem: "tj32", 203 }, 204 lib64: { 205 stem: "tj64", 206 }, 207 }, 208 209 compile_multilib: "both", 210 211 cflags: [ 212 "-DBMP_SUPPORTED", 213 "-DPPM_SUPPORTED", 214 "-Wno-unused-parameter", 215 "-Werror", 216 ], 217 218 srcs: [ 219 "tjbench.c", 220 "bmp.c", 221 "tjutil.c", 222 "rdbmp.c", 223 "rdppm.c", 224 "wrbmp.c", 225 "wrppm.c", 226 "turbojpeg.c", 227 "transupp.c", 228 "jdatadst-tj.c", 229 "jdatasrc-tj.c", 230 ], 231 } 232