Home | History | Annotate | Download | only in libjpeg-turbo
      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