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