github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/third_party/jpeg/BUILD.bazel (about) 1 # Description: 2 # libjpeg-turbo is a drop in replacement for jpeglib optimized with SIMD. 3 4 licenses(["notice"]) # custom notice-style license, see LICENSE.md 5 6 exports_files(["LICENSE.md"]) 7 8 load("@org_tensorflow//third_party:common.bzl", "template_rule") 9 10 WIN_COPTS = [ 11 "/Ox", 12 "-DWITH_SIMD", 13 "-wd4996", 14 ] 15 16 libjpegturbo_copts = select({ 17 ":android": [ 18 "-O2", 19 "-fPIE", 20 "-w", 21 ], 22 ":windows": WIN_COPTS, 23 "//conditions:default": [ 24 "-O3", 25 "-w", 26 ], 27 }) + select({ 28 ":armeabi-v7a": [ 29 "-D__ARM_NEON__", 30 "-march=armv7-a", 31 "-mfloat-abi=softfp", 32 "-fprefetch-loop-arrays", 33 ], 34 ":linux_ppc64le": [ 35 "-mcpu=power8", 36 "-mtune=power8", 37 ], 38 "//conditions:default": [], 39 }) 40 41 cc_library( 42 name = "jpeg", 43 srcs = [ 44 "jaricom.c", 45 "jcapimin.c", 46 "jcapistd.c", 47 "jcarith.c", 48 "jccoefct.c", 49 "jccolor.c", 50 "jcdctmgr.c", 51 "jchuff.c", 52 "jchuff.h", 53 "jcinit.c", 54 "jcmainct.c", 55 "jcmarker.c", 56 "jcmaster.c", 57 "jcomapi.c", 58 "jconfig.h", 59 "jconfigint.h", 60 "jcparam.c", 61 "jcphuff.c", 62 "jcprepct.c", 63 "jcsample.c", 64 "jctrans.c", 65 "jdapimin.c", 66 "jdapistd.c", 67 "jdarith.c", 68 "jdatadst.c", 69 "jdatasrc.c", 70 "jdcoefct.c", 71 "jdcoefct.h", 72 "jdcolor.c", 73 "jdct.h", 74 "jddctmgr.c", 75 "jdhuff.c", 76 "jdhuff.h", 77 "jdinput.c", 78 "jdmainct.c", 79 "jdmainct.h", 80 "jdmarker.c", 81 "jdmaster.c", 82 "jdmaster.h", 83 "jdmerge.c", 84 "jdphuff.c", 85 "jdpostct.c", 86 "jdsample.c", 87 "jdsample.h", 88 "jdtrans.c", 89 "jerror.c", 90 "jfdctflt.c", 91 "jfdctfst.c", 92 "jfdctint.c", 93 "jidctflt.c", 94 "jidctfst.c", 95 "jidctint.c", 96 "jidctred.c", 97 "jinclude.h", 98 "jmemmgr.c", 99 "jmemnobs.c", 100 "jmemsys.h", 101 "jpeg_nbits_table.h", 102 "jpegcomp.h", 103 "jquant1.c", 104 "jquant2.c", 105 "jutils.c", 106 "jversion.h", 107 ], 108 hdrs = [ 109 "jccolext.c", # should have been named .inc 110 "jdcol565.c", # should have been named .inc 111 "jdcolext.c", # should have been named .inc 112 "jdmrg565.c", # should have been named .inc 113 "jdmrgext.c", # should have been named .inc 114 "jerror.h", 115 "jmorecfg.h", 116 "jpegint.h", 117 "jpeglib.h", 118 "jstdhuff.c", # should have been named .inc 119 ], 120 copts = libjpegturbo_copts, 121 visibility = ["//visibility:public"], 122 deps = select({ 123 ":k8": [":simd_x86_64"], 124 ":armeabi-v7a": [":simd_armv7a"], 125 ":arm64-v8a": [":simd_armv8a"], 126 ":linux_ppc64le": [":simd_altivec"], 127 ":windows": [":simd_win_x86_64"], 128 "//conditions:default": [":simd_none"], 129 }), 130 ) 131 132 cc_library( 133 name = "simd_altivec", 134 srcs = [ 135 "jchuff.h", 136 "jconfig.h", 137 "jdct.h", 138 "jerror.h", 139 "jinclude.h", 140 "jmorecfg.h", 141 "jpegint.h", 142 "jpeglib.h", 143 "jsimd.h", 144 "jsimddct.h", 145 "simd/jsimd.h", 146 "simd/powerpc/jccolor-altivec.c", 147 "simd/powerpc/jcgray-altivec.c", 148 "simd/powerpc/jcsample-altivec.c", 149 "simd/powerpc/jdcolor-altivec.c", 150 "simd/powerpc/jdmerge-altivec.c", 151 "simd/powerpc/jdsample-altivec.c", 152 "simd/powerpc/jfdctfst-altivec.c", 153 "simd/powerpc/jfdctint-altivec.c", 154 "simd/powerpc/jidctfst-altivec.c", 155 "simd/powerpc/jidctint-altivec.c", 156 "simd/powerpc/jquanti-altivec.c", 157 "simd/powerpc/jsimd.c", 158 ], 159 hdrs = [ 160 "simd/powerpc/jccolext-altivec.c", 161 "simd/powerpc/jcgryext-altivec.c", 162 "simd/powerpc/jcsample.h", 163 "simd/powerpc/jdcolext-altivec.c", 164 "simd/powerpc/jdmrgext-altivec.c", 165 "simd/powerpc/jsimd_altivec.h", 166 ], 167 copts = libjpegturbo_copts, 168 ) 169 170 cc_library( 171 name = "simd_x86_64", 172 srcs = [ 173 "jchuff.h", 174 "jconfig.h", 175 "jconfigint.h", 176 "jdct.h", 177 "jerror.h", 178 "jinclude.h", 179 "jmorecfg.h", 180 "jpegint.h", 181 "jpeglib.h", 182 "jsimd.h", 183 "jsimddct.h", 184 "simd/jsimd.h", 185 "simd/x86_64/jccolor-avx2.o", 186 "simd/x86_64/jccolor-sse2.o", 187 "simd/x86_64/jcgray-avx2.o", 188 "simd/x86_64/jcgray-sse2.o", 189 "simd/x86_64/jchuff-sse2.o", 190 "simd/x86_64/jcphuff-sse2.o", 191 "simd/x86_64/jcsample-avx2.o", 192 "simd/x86_64/jcsample-sse2.o", 193 "simd/x86_64/jdcolor-avx2.o", 194 "simd/x86_64/jdcolor-sse2.o", 195 "simd/x86_64/jdmerge-avx2.o", 196 "simd/x86_64/jdmerge-sse2.o", 197 "simd/x86_64/jdsample-avx2.o", 198 "simd/x86_64/jdsample-sse2.o", 199 "simd/x86_64/jfdctflt-sse.o", 200 "simd/x86_64/jfdctfst-sse2.o", 201 "simd/x86_64/jfdctint-avx2.o", 202 "simd/x86_64/jfdctint-sse2.o", 203 "simd/x86_64/jidctflt-sse2.o", 204 "simd/x86_64/jidctfst-sse2.o", 205 "simd/x86_64/jidctint-avx2.o", 206 "simd/x86_64/jidctint-sse2.o", 207 "simd/x86_64/jidctred-sse2.o", 208 "simd/x86_64/jquantf-sse2.o", 209 "simd/x86_64/jquanti-avx2.o", 210 "simd/x86_64/jquanti-sse2.o", 211 "simd/x86_64/jsimd.c", 212 "simd/x86_64/jsimdcpu.o", 213 ], 214 copts = libjpegturbo_copts, 215 linkstatic = 1, 216 ) 217 218 genrule( 219 name = "simd_x86_64_assemblage23", 220 srcs = [ 221 "jconfig.h", 222 "jconfigint.h", 223 "simd/x86_64/jccolext-avx2.asm", 224 "simd/x86_64/jccolext-sse2.asm", 225 "simd/x86_64/jccolor-avx2.asm", 226 "simd/x86_64/jccolor-sse2.asm", 227 "simd/x86_64/jcgray-avx2.asm", 228 "simd/x86_64/jcgray-sse2.asm", 229 "simd/x86_64/jcgryext-avx2.asm", 230 "simd/x86_64/jcgryext-sse2.asm", 231 "simd/x86_64/jchuff-sse2.asm", 232 "simd/x86_64/jcphuff-sse2.asm", 233 "simd/x86_64/jcsample-avx2.asm", 234 "simd/x86_64/jcsample-sse2.asm", 235 "simd/x86_64/jdcolext-avx2.asm", 236 "simd/x86_64/jdcolext-sse2.asm", 237 "simd/x86_64/jdcolor-avx2.asm", 238 "simd/x86_64/jdcolor-sse2.asm", 239 "simd/x86_64/jdmerge-avx2.asm", 240 "simd/x86_64/jdmerge-sse2.asm", 241 "simd/x86_64/jdmrgext-avx2.asm", 242 "simd/x86_64/jdmrgext-sse2.asm", 243 "simd/x86_64/jdsample-avx2.asm", 244 "simd/x86_64/jdsample-sse2.asm", 245 "simd/x86_64/jfdctflt-sse.asm", 246 "simd/x86_64/jfdctfst-sse2.asm", 247 "simd/x86_64/jfdctint-avx2.asm", 248 "simd/x86_64/jfdctint-sse2.asm", 249 "simd/x86_64/jidctflt-sse2.asm", 250 "simd/x86_64/jidctfst-sse2.asm", 251 "simd/x86_64/jidctint-avx2.asm", 252 "simd/x86_64/jidctint-sse2.asm", 253 "simd/x86_64/jidctred-sse2.asm", 254 "simd/x86_64/jquantf-sse2.asm", 255 "simd/x86_64/jquanti-avx2.asm", 256 "simd/x86_64/jquanti-sse2.asm", 257 "simd/x86_64/jsimdcpu.asm", 258 "simd/nasm/jcolsamp.inc", 259 "simd/nasm/jdct.inc", 260 "simd/nasm/jpeg_nbits_table.inc", 261 "simd/nasm/jsimdcfg.inc", 262 "simd/nasm/jsimdcfg.inc.h", 263 "simd/nasm/jsimdext.inc", 264 ], 265 outs = [ 266 "simd/x86_64/jccolor-avx2.o", 267 "simd/x86_64/jccolor-sse2.o", 268 "simd/x86_64/jcgray-avx2.o", 269 "simd/x86_64/jcgray-sse2.o", 270 "simd/x86_64/jchuff-sse2.o", 271 "simd/x86_64/jcphuff-sse2.o", 272 "simd/x86_64/jcsample-avx2.o", 273 "simd/x86_64/jcsample-sse2.o", 274 "simd/x86_64/jdcolor-avx2.o", 275 "simd/x86_64/jdcolor-sse2.o", 276 "simd/x86_64/jdmerge-avx2.o", 277 "simd/x86_64/jdmerge-sse2.o", 278 "simd/x86_64/jdsample-avx2.o", 279 "simd/x86_64/jdsample-sse2.o", 280 "simd/x86_64/jfdctflt-sse.o", 281 "simd/x86_64/jfdctfst-sse2.o", 282 "simd/x86_64/jfdctint-avx2.o", 283 "simd/x86_64/jfdctint-sse2.o", 284 "simd/x86_64/jidctflt-sse2.o", 285 "simd/x86_64/jidctfst-sse2.o", 286 "simd/x86_64/jidctint-avx2.o", 287 "simd/x86_64/jidctint-sse2.o", 288 "simd/x86_64/jidctred-sse2.o", 289 "simd/x86_64/jquantf-sse2.o", 290 "simd/x86_64/jquanti-avx2.o", 291 "simd/x86_64/jquanti-sse2.o", 292 "simd/x86_64/jsimdcpu.o", 293 ], 294 cmd = "for out in $(OUTS); do\n" + 295 " $(location @nasm//:nasm) -f elf64" + 296 " -DELF -DPIC -D__x86_64__" + 297 " -I $$(dirname $(location jconfig.h))/" + 298 " -I $$(dirname $(location jconfigint.h))/" + 299 " -I $$(dirname $(location simd/nasm/jsimdcfg.inc.h))/" + 300 " -I $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/" + 301 " -o $$out" + 302 " $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/$$(basename $${out%.o}.asm)\n" + 303 "done", 304 tools = ["@nasm"], 305 ) 306 307 cc_library( 308 name = "simd_armv7a", 309 srcs = [ 310 "jchuff.h", 311 "jconfig.h", 312 "jdct.h", 313 "jerror.h", 314 "jinclude.h", 315 "jmorecfg.h", 316 "jpegint.h", 317 "jpeglib.h", 318 "jsimd.h", 319 "jsimddct.h", 320 "simd/arm/jsimd.c", 321 "simd/arm/jsimd_neon.S", 322 "simd/jsimd.h", 323 ], 324 copts = libjpegturbo_copts, 325 ) 326 327 cc_library( 328 name = "simd_armv8a", 329 srcs = [ 330 "jchuff.h", 331 "jconfig.h", 332 "jdct.h", 333 "jerror.h", 334 "jinclude.h", 335 "jmorecfg.h", 336 "jpegint.h", 337 "jpeglib.h", 338 "jsimd.h", 339 "jsimddct.h", 340 "simd/arm64/jsimd.c", 341 "simd/arm64/jsimd_neon.S", 342 "simd/jsimd.h", 343 ], 344 copts = libjpegturbo_copts, 345 ) 346 347 cc_library( 348 name = "simd_win_x86_64", 349 srcs = [ 350 "jchuff.h", 351 "jconfig.h", 352 "jconfigint.h", 353 "jdct.h", 354 "jerror.h", 355 "jinclude.h", 356 "jmorecfg.h", 357 "jpegint.h", 358 "jpeglib.h", 359 "jsimd.h", 360 "jsimddct.h", 361 "simd/jsimd.h", 362 "simd/x86_64/jccolor-avx2.obj", 363 "simd/x86_64/jccolor-sse2.obj", 364 "simd/x86_64/jcgray-avx2.obj", 365 "simd/x86_64/jcgray-sse2.obj", 366 "simd/x86_64/jchuff-sse2.obj", 367 "simd/x86_64/jcphuff-sse2.obj", 368 "simd/x86_64/jcsample-avx2.obj", 369 "simd/x86_64/jcsample-sse2.obj", 370 "simd/x86_64/jdcolor-avx2.obj", 371 "simd/x86_64/jdcolor-sse2.obj", 372 "simd/x86_64/jdmerge-avx2.obj", 373 "simd/x86_64/jdmerge-sse2.obj", 374 "simd/x86_64/jdsample-avx2.obj", 375 "simd/x86_64/jdsample-sse2.obj", 376 "simd/x86_64/jfdctflt-sse.obj", 377 "simd/x86_64/jfdctfst-sse2.obj", 378 "simd/x86_64/jfdctint-avx2.obj", 379 "simd/x86_64/jfdctint-sse2.obj", 380 "simd/x86_64/jidctflt-sse2.obj", 381 "simd/x86_64/jidctfst-sse2.obj", 382 "simd/x86_64/jidctint-avx2.obj", 383 "simd/x86_64/jidctint-sse2.obj", 384 "simd/x86_64/jidctred-sse2.obj", 385 "simd/x86_64/jquantf-sse2.obj", 386 "simd/x86_64/jquanti-avx2.obj", 387 "simd/x86_64/jquanti-sse2.obj", 388 "simd/x86_64/jsimd.c", 389 "simd/x86_64/jsimdcpu.obj", 390 ], 391 copts = libjpegturbo_copts, 392 ) 393 394 genrule( 395 name = "simd_win_x86_64_assemble", 396 srcs = [ 397 "jconfig.h", 398 "jconfigint.h", 399 "simd/x86_64/jccolext-avx2.asm", 400 "simd/x86_64/jccolext-sse2.asm", 401 "simd/x86_64/jccolor-avx2.asm", 402 "simd/x86_64/jccolor-sse2.asm", 403 "simd/x86_64/jcgray-avx2.asm", 404 "simd/x86_64/jcgray-sse2.asm", 405 "simd/x86_64/jcgryext-avx2.asm", 406 "simd/x86_64/jcgryext-sse2.asm", 407 "simd/x86_64/jchuff-sse2.asm", 408 "simd/x86_64/jcphuff-sse2.asm", 409 "simd/x86_64/jcsample-avx2.asm", 410 "simd/x86_64/jcsample-sse2.asm", 411 "simd/x86_64/jdcolext-avx2.asm", 412 "simd/x86_64/jdcolext-sse2.asm", 413 "simd/x86_64/jdcolor-avx2.asm", 414 "simd/x86_64/jdcolor-sse2.asm", 415 "simd/x86_64/jdmerge-avx2.asm", 416 "simd/x86_64/jdmerge-sse2.asm", 417 "simd/x86_64/jdmrgext-avx2.asm", 418 "simd/x86_64/jdmrgext-sse2.asm", 419 "simd/x86_64/jdsample-avx2.asm", 420 "simd/x86_64/jdsample-sse2.asm", 421 "simd/x86_64/jfdctflt-sse.asm", 422 "simd/x86_64/jfdctfst-sse2.asm", 423 "simd/x86_64/jfdctint-avx2.asm", 424 "simd/x86_64/jfdctint-sse2.asm", 425 "simd/x86_64/jidctflt-sse2.asm", 426 "simd/x86_64/jidctfst-sse2.asm", 427 "simd/x86_64/jidctint-avx2.asm", 428 "simd/x86_64/jidctint-sse2.asm", 429 "simd/x86_64/jidctred-sse2.asm", 430 "simd/x86_64/jquantf-sse2.asm", 431 "simd/x86_64/jquanti-avx2.asm", 432 "simd/x86_64/jquanti-sse2.asm", 433 "simd/x86_64/jsimdcpu.asm", 434 "simd/nasm/jcolsamp.inc", 435 "simd/nasm/jdct.inc", 436 "simd/nasm/jpeg_nbits_table.inc", 437 "simd/nasm/jsimdcfg.inc", 438 "simd/nasm/jsimdcfg.inc.h", 439 "simd/nasm/jsimdext.inc", 440 ], 441 outs = [ 442 "simd/x86_64/jccolor-avx2.obj", 443 "simd/x86_64/jccolor-sse2.obj", 444 "simd/x86_64/jcgray-avx2.obj", 445 "simd/x86_64/jcgray-sse2.obj", 446 "simd/x86_64/jchuff-sse2.obj", 447 "simd/x86_64/jcphuff-sse2.obj", 448 "simd/x86_64/jcsample-avx2.obj", 449 "simd/x86_64/jcsample-sse2.obj", 450 "simd/x86_64/jdcolor-avx2.obj", 451 "simd/x86_64/jdcolor-sse2.obj", 452 "simd/x86_64/jdmerge-avx2.obj", 453 "simd/x86_64/jdmerge-sse2.obj", 454 "simd/x86_64/jdsample-avx2.obj", 455 "simd/x86_64/jdsample-sse2.obj", 456 "simd/x86_64/jfdctflt-sse.obj", 457 "simd/x86_64/jfdctfst-sse2.obj", 458 "simd/x86_64/jfdctint-avx2.obj", 459 "simd/x86_64/jfdctint-sse2.obj", 460 "simd/x86_64/jidctflt-sse2.obj", 461 "simd/x86_64/jidctfst-sse2.obj", 462 "simd/x86_64/jidctint-avx2.obj", 463 "simd/x86_64/jidctint-sse2.obj", 464 "simd/x86_64/jidctred-sse2.obj", 465 "simd/x86_64/jquantf-sse2.obj", 466 "simd/x86_64/jquanti-avx2.obj", 467 "simd/x86_64/jquanti-sse2.obj", 468 "simd/x86_64/jsimdcpu.obj", 469 ], 470 cmd = "for out in $(OUTS); do\n" + 471 " $(location @nasm//:nasm) -fwin64 -DWIN64 -D__x86_64__" + 472 " -I $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/" + 473 " -I $$(dirname $(location simd/nasm/jdct.inc))/" + 474 " -I $$(dirname $(location simd/nasm/jdct.inc))/../../win/" + 475 " -o $$out" + 476 " $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/$$(basename $${out%.obj}.asm)\n" + 477 "done", 478 tools = ["@nasm"], 479 ) 480 481 cc_library( 482 name = "simd_none", 483 srcs = [ 484 "jchuff.h", 485 "jconfig.h", 486 "jdct.h", 487 "jerror.h", 488 "jinclude.h", 489 "jmorecfg.h", 490 "jpegint.h", 491 "jpeglib.h", 492 "jsimd.h", 493 "jsimd_none.c", 494 "jsimddct.h", 495 ], 496 copts = libjpegturbo_copts, 497 ) 498 499 template_rule( 500 name = "jconfig_win", 501 src = "win/jconfig.h.in", 502 out = "jconfig_win.h", 503 substitutions = { 504 "@JPEG_LIB_VERSION@": "62", 505 "@VERSION@": "2.0.0", 506 "@LIBJPEG_TURBO_VERSION_NUMBER@": "2000000", 507 "@BITS_IN_JSAMPLE@": "8", 508 "#cmakedefine C_ARITH_CODING_SUPPORTED": "#define C_ARITH_CODING_SUPPORTED", 509 "#cmakedefine D_ARITH_CODING_SUPPORTED": "#define D_ARITH_CODING_SUPPORTED", 510 "#cmakedefine MEM_SRCDST_SUPPORTED": "#define MEM_SRCDST_SUPPORTED", 511 "#cmakedefine WITH_SIMD": "", 512 }, 513 ) 514 515 JCONFIG_NOWIN_COMMON_SUBSTITUTIONS = { 516 "@JPEG_LIB_VERSION@": "62", 517 "@VERSION@": "2.0.0", 518 "@LIBJPEG_TURBO_VERSION_NUMBER@": "2000000", 519 "#cmakedefine C_ARITH_CODING_SUPPORTED": "#define C_ARITH_CODING_SUPPORTED", 520 "#cmakedefine D_ARITH_CODING_SUPPORTED": "#define D_ARITH_CODING_SUPPORTED", 521 "#cmakedefine MEM_SRCDST_SUPPORTED": "#define MEM_SRCDST_SUPPORTED", 522 "@BITS_IN_JSAMPLE@": "8", 523 "#cmakedefine HAVE_LOCALE_H": "#define HAVE_LOCALE_H 1", 524 "#cmakedefine HAVE_STDDEF_H": "#define HAVE_STDDEF_H 1", 525 "#cmakedefine HAVE_STDLIB_H": "#define HAVE_STDLIB_H 1", 526 "#cmakedefine NEED_SYS_TYPES_H": "#define NEED_SYS_TYPES_H", 527 "#cmakedefine NEED_BSD_STRINGS": "", 528 "#cmakedefine HAVE_UNSIGNED_CHAR": "#define HAVE_UNSIGNED_CHAR 1", 529 "#cmakedefine HAVE_UNSIGNED_SHORT": "#define HAVE_UNSIGNED_SHORT 1", 530 "#cmakedefine INCOMPLETE_TYPES_BROKEN": "", 531 "#cmakedefine RIGHT_SHIFT_IS_UNSIGNED": "", 532 "#cmakedefine __CHAR_UNSIGNED__": "", 533 "#undef const": "", 534 "#undef size_t": "", 535 } 536 537 JCONFIG_NOWIN_SIMD_SUBSTITUTIONS = { 538 "#cmakedefine WITH_SIMD": "#define WITH_SIMD", 539 } 540 541 JCONFIG_NOWIN_NOSIMD_SUBSTITUTIONS = { 542 "#cmakedefine WITH_SIMD": "", 543 } 544 545 JCONFIG_NOWIN_SIMD_SUBSTITUTIONS.update(JCONFIG_NOWIN_COMMON_SUBSTITUTIONS) 546 547 JCONFIG_NOWIN_NOSIMD_SUBSTITUTIONS.update(JCONFIG_NOWIN_COMMON_SUBSTITUTIONS) 548 549 template_rule( 550 name = "jconfig_nowin_nosimd", 551 src = "jconfig.h.in", 552 out = "jconfig_nowin_nosimd.h", 553 substitutions = JCONFIG_NOWIN_NOSIMD_SUBSTITUTIONS, 554 ) 555 556 template_rule( 557 name = "jconfig_nowin_simd", 558 src = "jconfig.h.in", 559 out = "jconfig_nowin_simd.h", 560 substitutions = JCONFIG_NOWIN_SIMD_SUBSTITUTIONS, 561 ) 562 563 JCONFIGINT_COMMON_SUBSTITUTIONS = { 564 "@BUILD@": "20180831", 565 "@VERSION@": "2.0.0", 566 "@CMAKE_PROJECT_NAME@": "libjpeg-turbo", 567 "#undef inline": "", 568 "#cmakedefine HAVE_INTRIN_H": "", 569 } 570 571 JCONFIGINT_NOWIN_SUBSTITUTIONS = { 572 "#cmakedefine HAVE_BUILTIN_CTZL": "#define HAVE_BUILTIN_CTZL", 573 "@INLINE@": "inline __attribute__((always_inline))", 574 "#define SIZEOF_SIZE_T @SIZE_T@": "#if (__WORDSIZE==64 && !defined(__native_client__))\n" + 575 "#define SIZEOF_SIZE_T 8\n" + 576 "#else\n" + 577 "#define SIZEOF_SIZE_T 4\n" + 578 "#endif\n", 579 } 580 581 JCONFIGINT_WIN_SUBSTITUTIONS = { 582 "#cmakedefine HAVE_BUILTIN_CTZL": "", 583 "#define INLINE @INLINE@": "#if defined(__GNUC__)\n" + 584 "#define INLINE inline __attribute__((always_inline))\n" + 585 "#elif defined(_MSC_VER)\n" + 586 "#define INLINE __forceinline\n" + 587 "#else\n" + 588 "#define INLINE\n" + 589 "#endif\n", 590 "#define SIZEOF_SIZE_T @SIZE_T@": "#if (__WORDSIZE==64)\n" + 591 "#define SIZEOF_SIZE_T 8\n" + 592 "#else\n" + 593 "#define SIZEOF_SIZE_T 4\n" + 594 "#endif\n", 595 } 596 597 JCONFIGINT_NOWIN_SUBSTITUTIONS.update(JCONFIGINT_COMMON_SUBSTITUTIONS) 598 599 JCONFIGINT_WIN_SUBSTITUTIONS.update(JCONFIGINT_COMMON_SUBSTITUTIONS) 600 601 template_rule( 602 name = "jconfigint_nowin", 603 src = "jconfigint.h.in", 604 out = "jconfigint_nowin.h", 605 substitutions = JCONFIGINT_NOWIN_SUBSTITUTIONS, 606 ) 607 608 template_rule( 609 name = "jconfigint_win", 610 src = "jconfigint.h.in", 611 out = "jconfigint_win.h", 612 substitutions = JCONFIGINT_WIN_SUBSTITUTIONS, 613 ) 614 615 genrule( 616 name = "configure", 617 srcs = [ 618 "jconfig_win.h", 619 "jconfig_nowin_nosimd.h", 620 "jconfig_nowin_simd.h", 621 ], 622 outs = ["jconfig.h"], 623 cmd = select({ 624 ":windows": "cp $(location jconfig_win.h) $@", 625 ":k8": "cp $(location jconfig_nowin_simd.h) $@", 626 ":armeabi-v7a": "cp $(location jconfig_nowin_simd.h) $@", 627 ":arm64-v8a": "cp $(location jconfig_nowin_simd.h) $@", 628 ":linux_ppc64le": "cp $(location jconfig_nowin_simd.h) $@", 629 "//conditions:default": "cp $(location jconfig_nowin_nosimd.h) $@", 630 }), 631 ) 632 633 genrule( 634 name = "configure_internal", 635 srcs = [ 636 "jconfigint_win.h", 637 "jconfigint_nowin.h", 638 ], 639 outs = ["jconfigint.h"], 640 cmd = select({ 641 ":windows": "cp $(location jconfigint_win.h) $@", 642 "//conditions:default": "cp $(location jconfigint_nowin.h) $@", 643 }), 644 ) 645 646 # jiminy cricket the way this file is generated is completely outrageous 647 genrule( 648 name = "configure_simd", 649 outs = ["simd/jsimdcfg.inc"], 650 cmd = "cat <<'EOF' >$@\n" + 651 "%define DCTSIZE 8\n" + 652 "%define DCTSIZE2 64\n" + 653 "%define RGB_RED 0\n" + 654 "%define RGB_GREEN 1\n" + 655 "%define RGB_BLUE 2\n" + 656 "%define RGB_PIXELSIZE 3\n" + 657 "%define EXT_RGB_RED 0\n" + 658 "%define EXT_RGB_GREEN 1\n" + 659 "%define EXT_RGB_BLUE 2\n" + 660 "%define EXT_RGB_PIXELSIZE 3\n" + 661 "%define EXT_RGBX_RED 0\n" + 662 "%define EXT_RGBX_GREEN 1\n" + 663 "%define EXT_RGBX_BLUE 2\n" + 664 "%define EXT_RGBX_PIXELSIZE 4\n" + 665 "%define EXT_BGR_RED 2\n" + 666 "%define EXT_BGR_GREEN 1\n" + 667 "%define EXT_BGR_BLUE 0\n" + 668 "%define EXT_BGR_PIXELSIZE 3\n" + 669 "%define EXT_BGRX_RED 2\n" + 670 "%define EXT_BGRX_GREEN 1\n" + 671 "%define EXT_BGRX_BLUE 0\n" + 672 "%define EXT_BGRX_PIXELSIZE 4\n" + 673 "%define EXT_XBGR_RED 3\n" + 674 "%define EXT_XBGR_GREEN 2\n" + 675 "%define EXT_XBGR_BLUE 1\n" + 676 "%define EXT_XBGR_PIXELSIZE 4\n" + 677 "%define EXT_XRGB_RED 1\n" + 678 "%define EXT_XRGB_GREEN 2\n" + 679 "%define EXT_XRGB_BLUE 3\n" + 680 "%define EXT_XRGB_PIXELSIZE 4\n" + 681 "%define RGBX_FILLER_0XFF 1\n" + 682 "%define JSAMPLE byte ; unsigned char\n" + 683 "%define SIZEOF_JSAMPLE SIZEOF_BYTE ; sizeof(JSAMPLE)\n" + 684 "%define CENTERJSAMPLE 128\n" + 685 "%define JCOEF word ; short\n" + 686 "%define SIZEOF_JCOEF SIZEOF_WORD ; sizeof(JCOEF)\n" + 687 "%define JDIMENSION dword ; unsigned int\n" + 688 "%define SIZEOF_JDIMENSION SIZEOF_DWORD ; sizeof(JDIMENSION)\n" + 689 "%define JSAMPROW POINTER ; JSAMPLE * (jpeglib.h)\n" + 690 "%define JSAMPARRAY POINTER ; JSAMPROW * (jpeglib.h)\n" + 691 "%define JSAMPIMAGE POINTER ; JSAMPARRAY * (jpeglib.h)\n" + 692 "%define JCOEFPTR POINTER ; JCOEF * (jpeglib.h)\n" + 693 "%define SIZEOF_JSAMPROW SIZEOF_POINTER ; sizeof(JSAMPROW)\n" + 694 "%define SIZEOF_JSAMPARRAY SIZEOF_POINTER ; sizeof(JSAMPARRAY)\n" + 695 "%define SIZEOF_JSAMPIMAGE SIZEOF_POINTER ; sizeof(JSAMPIMAGE)\n" + 696 "%define SIZEOF_JCOEFPTR SIZEOF_POINTER ; sizeof(JCOEFPTR)\n" + 697 "%define DCTELEM word ; short\n" + 698 "%define SIZEOF_DCTELEM SIZEOF_WORD ; sizeof(DCTELEM)\n" + 699 "%define float FP32 ; float\n" + 700 "%define SIZEOF_FAST_FLOAT SIZEOF_FP32 ; sizeof(float)\n" + 701 "%define ISLOW_MULT_TYPE word ; must be short\n" + 702 "%define SIZEOF_ISLOW_MULT_TYPE SIZEOF_WORD ; sizeof(ISLOW_MULT_TYPE)\n" + 703 "%define IFAST_MULT_TYPE word ; must be short\n" + 704 "%define SIZEOF_IFAST_MULT_TYPE SIZEOF_WORD ; sizeof(IFAST_MULT_TYPE)\n" + 705 "%define IFAST_SCALE_BITS 2 ; fractional bits in scale factors\n" + 706 "%define FLOAT_MULT_TYPE FP32 ; must be float\n" + 707 "%define SIZEOF_FLOAT_MULT_TYPE SIZEOF_FP32 ; sizeof(FLOAT_MULT_TYPE)\n" + 708 "%define JSIMD_NONE 0x00\n" + 709 "%define JSIMD_MMX 0x01\n" + 710 "%define JSIMD_3DNOW 0x02\n" + 711 "%define JSIMD_SSE 0x04\n" + 712 "%define JSIMD_SSE2 0x08\n" + 713 "EOF", 714 ) 715 716 config_setting( 717 name = "k8", 718 values = {"cpu": "k8"}, 719 ) 720 721 config_setting( 722 name = "android", 723 values = {"crosstool_top": "//external:android/crosstool"}, 724 ) 725 726 config_setting( 727 name = "armeabi-v7a", 728 values = {"cpu": "armeabi-v7a"}, 729 ) 730 731 config_setting( 732 name = "arm64-v8a", 733 values = {"cpu": "arm64-v8a"}, 734 ) 735 736 config_setting( 737 name = "windows", 738 values = {"cpu": "x64_windows"}, 739 ) 740 741 config_setting( 742 name = "linux_ppc64le", 743 values = {"cpu": "ppc"}, 744 )