1// Set up common variables for usage across the libjpeg-turbo modules 2 3cc_defaults { 4 name: "libjpeg-defaults", 5 cflags: [ 6 "-O3", 7 "-fstrict-aliasing", 8 9 "-Werror", 10 "-Wno-sign-compare", 11 "-Wno-unused-parameter", 12 ], 13 srcs: [ 14 "jaricom.c", 15 "jcapimin.c", 16 "jcapistd.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/arm/jsimd.c", 76 "simd/arm/jsimd_neon.S", 77 ], 78 }, 79 arm64: { 80 // ARM v8 64-bit NEON 81 srcs: [ 82 "simd/arm64/jsimd.c", 83 "simd/arm64/jsimd_neon.S", 84 ], 85 }, 86 x86: { 87 // x86 MMX and SSE2 88 srcs: [ 89 "simd/i386/jccolor-avx2.asm", 90 "simd/i386/jccolor-mmx.asm", 91 "simd/i386/jccolor-sse2.asm", 92 "simd/i386/jcgray-avx2.asm", 93 "simd/i386/jcgray-mmx.asm", 94 "simd/i386/jcgray-sse2.asm", 95 "simd/i386/jchuff-sse2.asm", 96 "simd/i386/jcphuff-sse2.asm", 97 "simd/i386/jcsample-avx2.asm", 98 "simd/i386/jcsample-mmx.asm", 99 "simd/i386/jcsample-sse2.asm", 100 "simd/i386/jdcolor-avx2.asm", 101 "simd/i386/jdcolor-mmx.asm", 102 "simd/i386/jdcolor-sse2.asm", 103 "simd/i386/jdmerge-avx2.asm", 104 "simd/i386/jdmerge-mmx.asm", 105 "simd/i386/jdmerge-sse2.asm", 106 "simd/i386/jdsample-avx2.asm", 107 "simd/i386/jdsample-mmx.asm", 108 "simd/i386/jdsample-sse2.asm", 109 "simd/i386/jfdctflt-3dn.asm", 110 "simd/i386/jfdctflt-sse.asm", 111 "simd/i386/jfdctfst-mmx.asm", 112 "simd/i386/jfdctfst-sse2.asm", 113 "simd/i386/jfdctint-avx2.asm", 114 "simd/i386/jfdctint-mmx.asm", 115 "simd/i386/jfdctint-sse2.asm", 116 "simd/i386/jidctflt-3dn.asm", 117 "simd/i386/jidctflt-sse.asm", 118 "simd/i386/jidctflt-sse2.asm", 119 "simd/i386/jidctfst-mmx.asm", 120 "simd/i386/jidctfst-sse2.asm", 121 "simd/i386/jidctint-avx2.asm", 122 "simd/i386/jidctint-mmx.asm", 123 "simd/i386/jidctint-sse2.asm", 124 "simd/i386/jidctred-mmx.asm", 125 "simd/i386/jidctred-sse2.asm", 126 "simd/i386/jquant-3dn.asm", 127 "simd/i386/jquant-mmx.asm", 128 "simd/i386/jquant-sse.asm", 129 "simd/i386/jquantf-sse2.asm", 130 "simd/i386/jquanti-avx2.asm", 131 "simd/i386/jquanti-sse2.asm", 132 "simd/i386/jsimd.c", 133 "simd/i386/jsimdcpu.asm", 134 ], 135 asflags: [ 136 "-DPIC", 137 ], 138 local_include_dirs: [ 139 "simd", 140 "simd/nasm", 141 ], 142 }, 143 x86_64: { 144 // x86-64 SSE2 145 srcs: [ 146 "simd/x86_64/jccolor-avx2.asm", 147 "simd/x86_64/jccolor-sse2.asm", 148 "simd/x86_64/jcgray-avx2.asm", 149 "simd/x86_64/jcgray-sse2.asm", 150 "simd/x86_64/jchuff-sse2.asm", 151 "simd/x86_64/jcphuff-sse2.asm", 152 "simd/x86_64/jcsample-avx2.asm", 153 "simd/x86_64/jcsample-sse2.asm", 154 "simd/x86_64/jdcolor-avx2.asm", 155 "simd/x86_64/jdcolor-sse2.asm", 156 "simd/x86_64/jdmerge-avx2.asm", 157 "simd/x86_64/jdmerge-sse2.asm", 158 "simd/x86_64/jdsample-avx2.asm", 159 "simd/x86_64/jdsample-sse2.asm", 160 "simd/x86_64/jfdctflt-sse.asm", 161 "simd/x86_64/jfdctfst-sse2.asm", 162 "simd/x86_64/jfdctint-avx2.asm", 163 "simd/x86_64/jfdctint-sse2.asm", 164 "simd/x86_64/jidctflt-sse2.asm", 165 "simd/x86_64/jidctfst-sse2.asm", 166 "simd/x86_64/jidctint-avx2.asm", 167 "simd/x86_64/jidctint-sse2.asm", 168 "simd/x86_64/jidctred-sse2.asm", 169 "simd/x86_64/jquantf-sse2.asm", 170 "simd/x86_64/jquanti-avx2.asm", 171 "simd/x86_64/jquanti-sse2.asm", 172 "simd/x86_64/jsimd.c", 173 "simd/x86_64/jsimdcpu.asm", 174 ], 175 asflags: [ 176 "-DPIC", 177 "-D__x86_64__", 178 ], 179 local_include_dirs: [ 180 "simd", 181 "simd/nasm", 182 ], 183 }, 184 mips: { 185 srcs: ["jsimd_none.c"], 186 }, 187 mips64: { 188 srcs: ["jsimd_none.c"], 189 }, 190 }, 191 192 target: { 193 linux: { 194 asflags: [ 195 "-DELF", 196 ], 197 }, 198 darwin: { 199 asflags: [ 200 "-DMACHO", 201 ], 202 }, 203 windows_x86: { 204 asflags: [ 205 "-DWIN32", 206 ], 207 }, 208 windows_x86_64: { 209 asflags: [ 210 "-DWIN64", 211 ], 212 }, 213 }, 214} 215 216// Also build as a shared library. 217cc_library { 218 name: "libjpeg", 219 host_supported: true, 220 vendor_available: true, 221 vndk: { 222 enabled: true, 223 }, 224 defaults: ["libjpeg-defaults"], 225 export_include_dirs: ["."], 226 target: { 227 windows: { 228 enabled: true, 229 }, 230 }, 231} 232 233// Build static library against the NDK 234cc_library_static { 235 name: "libjpeg_static_ndk", 236 defaults: ["libjpeg-defaults"], 237 export_include_dirs: ["."], 238 sdk_version: "17", 239} 240 241// Definition for TJBench 242cc_binary { 243 name: "tjbench", 244 245 whole_static_libs: ["libjpeg"], 246 247 multilib: { 248 lib32: { 249 stem: "tj32", 250 }, 251 lib64: { 252 stem: "tj64", 253 }, 254 }, 255 256 compile_multilib: "both", 257 258 cflags: [ 259 "-DBMP_SUPPORTED", 260 "-DPPM_SUPPORTED", 261 "-Werror", 262 "-Wno-unused-parameter", 263 ], 264 265 srcs: [ 266 "jdatadst-tj.c", 267 "jdatasrc-tj.c", 268 "rdbmp.c", 269 "rdppm.c", 270 "tjbench.c", 271 "tjutil.c", 272 "transupp.c", 273 "turbojpeg.c", 274 "wrbmp.c", 275 "wrppm.c", 276 ], 277} 278