tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

BUILD (8425B)


      1 # Copyright (c) the JPEG XL Project Authors. All rights reserved.
      2 #
      3 # Use of this source code is governed by a BSD-style
      4 # license that can be found in the LICENSE file.
      5 
      6 load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
      7 load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
      8 
      9 # Load sources/headers/tests lists.
     10 load(
     11    "jxl_lists.bzl",
     12    "libjxl_base_sources",
     13    "libjxl_cms_sources",
     14    "libjxl_codec_apng_sources",
     15    "libjxl_codec_exr_sources",
     16    "libjxl_codec_gif_sources",
     17    "libjxl_codec_jpegli_sources",
     18    "libjxl_codec_jpg_sources",
     19    "libjxl_codec_jxl_sources",
     20    "libjxl_codec_npy_sources",
     21    "libjxl_codec_pgx_sources",
     22    "libjxl_codec_pnm_sources",
     23    "libjxl_dec_box_sources",
     24    "libjxl_dec_jpeg_sources",
     25    "libjxl_dec_sources",
     26    "libjxl_enc_sources",
     27    "libjxl_extras_for_tools_sources",
     28    "libjxl_extras_sources",
     29    # "libjxl_gbench_sources",
     30    # "libjxl_jpegli_lib_version",
     31    "libjxl_jpegli_libjpeg_helper_files",
     32    "libjxl_jpegli_sources",
     33    "libjxl_jpegli_testlib_files",
     34    "libjxl_jpegli_tests",
     35    "libjxl_major_version",
     36    "libjxl_minor_version",
     37    "libjxl_patch_version",
     38    "libjxl_public_headers",
     39    "libjxl_testlib_files",
     40    "libjxl_tests",
     41    "libjxl_threads_public_headers",
     42    "libjxl_threads_sources",
     43 )
     44 load(
     45    "jxl_vars.bzl",
     46    "libjxl_deps_brotli",
     47    "libjxl_deps_exr",
     48    "libjxl_deps_gif",
     49    "libjxl_deps_gtest",
     50    "libjxl_deps_hwy",
     51    "libjxl_deps_hwy_nanobenchmark",
     52    "libjxl_deps_hwy_test_util",
     53    "libjxl_deps_jpeg",
     54    "libjxl_deps_png",
     55    "libjxl_deps_runfiles",
     56    "libjxl_deps_skcms",
     57    # "libjxl_deps_testdata",
     58    # "libjxl_deps_webp",
     59    "libjxl_root_package",
     60    "libjxl_test_shards",
     61    "libjxl_test_timeouts",
     62 )
     63 
     64 DEFAULT_VISIBILITY = ["//:__subpackages__"]
     65 
     66 DEFAULT_COMPATIBILITY = []
     67 
     68 INCLUDES_DIR = "include"
     69 
     70 package(
     71    default_visibility = DEFAULT_VISIBILITY,
     72 )
     73 
     74 licenses(["notice"])
     75 
     76 exports_files(["LICENSE"])
     77 
     78 EXPORT_TEMPLATE = """
     79 #ifndef @_EXPORT_H
     80 #define @_EXPORT_H
     81 
     82 #define @_EXPORT
     83 #define @_NO_EXPORT
     84 
     85 #ifndef @_DEPRECATED
     86 #  define @_DEPRECATED __attribute__ ((__deprecated__))
     87 #endif
     88 
     89 #endif
     90 """
     91 
     92 JXL_EXPORT_H = INCLUDES_DIR + "/jxl/jxl_export.h"
     93 
     94 genrule(
     95    name = "create_jxl_export",
     96    outs = [JXL_EXPORT_H],
     97    cmd = "echo '" + EXPORT_TEMPLATE.replace("@", "JXL") + "' > $@",
     98    compatible_with = DEFAULT_COMPATIBILITY,
     99 )
    100 
    101 JXL_CMS_EXPORT_H = INCLUDES_DIR + "/jxl/jxl_cms_export.h"
    102 
    103 genrule(
    104    name = "create_jxl_cms_export",
    105    outs = [JXL_CMS_EXPORT_H],
    106    cmd = "echo '" + EXPORT_TEMPLATE.replace("@", "JXL_CMS") + "' > $@",
    107    compatible_with = DEFAULT_COMPATIBILITY,
    108 )
    109 
    110 JXL_THREADS_EXPORT_H = INCLUDES_DIR + "/jxl/jxl_threads_export.h"
    111 
    112 genrule(
    113    name = "create_jxl_threads_export",
    114    outs = [JXL_THREADS_EXPORT_H],
    115    cmd = "echo '" + EXPORT_TEMPLATE.replace("@", "JXL_THREADS") + "' > $@",
    116    compatible_with = DEFAULT_COMPATIBILITY,
    117 )
    118 
    119 JXL_VERSION_H = INCLUDES_DIR + "/jxl/version.h"
    120 
    121 expand_template(
    122    name = "expand_jxl_version",
    123    out = JXL_VERSION_H,
    124    compatible_with = DEFAULT_COMPATIBILITY,
    125    substitutions = {
    126        "@JPEGXL_MAJOR_VERSION@": str(libjxl_major_version),
    127        "@JPEGXL_MINOR_VERSION@": str(libjxl_minor_version),
    128        "@JPEGXL_PATCH_VERSION@": str(libjxl_patch_version),
    129    },
    130    template = "jxl/version.h.in",
    131 )
    132 
    133 cc_library(
    134    name = "jxl_version",
    135    hdrs = [JXL_VERSION_H],
    136    compatible_with = DEFAULT_COMPATIBILITY,
    137    strip_include_prefix = INCLUDES_DIR,
    138 )
    139 
    140 JPEGLI_JCONFIG_H = INCLUDES_DIR + "/jpegli/jconfig.h"
    141 
    142 JPEGLI_JMORECFG_H = INCLUDES_DIR + "/jpegli/jmorecfg.h"
    143 
    144 JPEGLI_JPEGLIB_H = INCLUDES_DIR + "/jpegli/jpeglib.h"
    145 
    146 copy_file(
    147    name = "expand_jconfig",
    148    src = "@libjpeg_turbo//:jconfig.h",
    149    out = JPEGLI_JCONFIG_H,
    150    compatible_with = DEFAULT_COMPATIBILITY,
    151 )
    152 
    153 copy_file(
    154    name = "copy_jmorecfg",
    155    src = "@libjpeg_turbo//:jmorecfg.h",
    156    out = JPEGLI_JMORECFG_H,
    157    compatible_with = DEFAULT_COMPATIBILITY,
    158 )
    159 
    160 copy_file(
    161    name = "copy_jpeglib",
    162    src = "@libjpeg_turbo//:jpeglib.h",
    163    out = JPEGLI_JPEGLIB_H,
    164    compatible_with = DEFAULT_COMPATIBILITY,
    165 )
    166 
    167 cc_library(
    168    name = "includes",
    169    hdrs = libjxl_public_headers + [
    170        JXL_EXPORT_H,
    171        JXL_CMS_EXPORT_H,
    172    ],
    173    compatible_with = DEFAULT_COMPATIBILITY,
    174    strip_include_prefix = INCLUDES_DIR,
    175    deps = [":jxl_version"],
    176 )
    177 
    178 cc_library(
    179    name = "libjpeg_includes",
    180    hdrs = [
    181        JPEGLI_JCONFIG_H,
    182        JPEGLI_JMORECFG_H,
    183        JPEGLI_JPEGLIB_H,
    184    ],
    185    compatible_with = DEFAULT_COMPATIBILITY,
    186    strip_include_prefix = INCLUDES_DIR + "/jpegli",
    187 )
    188 
    189 cc_library(
    190    name = "base",
    191    srcs = [path for path in libjxl_base_sources if path.endswith(".cc")],
    192    hdrs = [path for path in libjxl_base_sources if path.endswith(".h")],
    193    compatible_with = DEFAULT_COMPATIBILITY,
    194    deps = [
    195        ":includes",
    196    ] + libjxl_deps_hwy,
    197 )
    198 
    199 cc_library(
    200    name = "jpegxl",
    201    srcs = libjxl_dec_sources + libjxl_dec_box_sources + libjxl_dec_jpeg_sources + libjxl_enc_sources + libjxl_cms_sources,
    202    compatible_with = DEFAULT_COMPATIBILITY,
    203    defines = [
    204        "JPEGXL_ENABLE_SKCMS=1",
    205    ],
    206    deps = [
    207        ":base",
    208        ":includes",
    209    ] + libjxl_deps_brotli + libjxl_deps_hwy + libjxl_deps_skcms,
    210 )
    211 
    212 cc_library(
    213    name = "jpegxl_private",
    214    hdrs = [
    215        path
    216        for path in libjxl_dec_sources + libjxl_dec_box_sources + libjxl_dec_jpeg_sources + libjxl_enc_sources + libjxl_cms_sources
    217        if path.endswith(".h") and not path.endswith("-inl.h")
    218    ],
    219    compatible_with = DEFAULT_COMPATIBILITY,
    220    deps = [":jpegxl"],
    221 )
    222 
    223 cc_library(
    224    name = "jpegxl_threads",
    225    srcs = libjxl_threads_sources,
    226    hdrs = libjxl_threads_public_headers + [JXL_THREADS_EXPORT_H],
    227    compatible_with = DEFAULT_COMPATIBILITY,
    228    strip_include_prefix = INCLUDES_DIR,
    229    deps = [
    230        ":base",
    231        ":includes",
    232    ],
    233 )
    234 
    235 CODEC_FILES = libjxl_codec_apng_sources + libjxl_codec_exr_sources + libjxl_codec_gif_sources + libjxl_codec_jpegli_sources + libjxl_codec_jpg_sources + libjxl_codec_jxl_sources + libjxl_codec_npy_sources + libjxl_codec_pgx_sources + libjxl_codec_pnm_sources
    236 
    237 CODEC_SRCS = [path for path in CODEC_FILES if path.endswith(".cc")]
    238 
    239 CODEC_HDRS = [path for path in CODEC_FILES if path.endswith(".h")]
    240 
    241 cc_library(
    242    name = "jpegli",
    243    srcs = libjxl_jpegli_sources,
    244    hdrs = [
    245        "jpegli/common_internal.h",  # TODO(eustas): should not be here
    246    ],
    247    compatible_with = DEFAULT_COMPATIBILITY,
    248    deps = [
    249        ":jpegxl_private",
    250        ":libjpeg_includes",
    251    ] + libjxl_deps_hwy,
    252 )
    253 
    254 # TODO(eustas): build codecs separately?
    255 cc_library(
    256    name = "jpegxl_extras",
    257    srcs = libjxl_extras_sources + libjxl_extras_for_tools_sources + CODEC_SRCS,
    258    hdrs = CODEC_HDRS,
    259    compatible_with = DEFAULT_COMPATIBILITY,
    260    defines = [
    261        "JPEGXL_ENABLE_APNG=1",
    262        "JPEGXL_ENABLE_EXR=1",
    263        "JPEGXL_ENABLE_GIF=1",
    264        "JPEGXL_ENABLE_JPEG=1",
    265        "JPEGXL_ENABLE_JPEGLI=1",
    266    ],
    267    deps = [
    268        ":jpegli",
    269        ":jpegxl_private",
    270        ":jpegxl_threads",
    271        ":jxl_version",
    272    ] + libjxl_deps_exr + libjxl_deps_gif + libjxl_deps_jpeg + libjxl_deps_png,
    273 )
    274 
    275 TESTLIB_FILES = libjxl_testlib_files + libjxl_jpegli_testlib_files + libjxl_jpegli_libjpeg_helper_files
    276 
    277 cc_library(
    278    name = "test_utils",
    279    testonly = 1,
    280    srcs = [path for path in TESTLIB_FILES if not path.endswith(".h")],
    281    hdrs = [path for path in TESTLIB_FILES if path.endswith(".h")],
    282    compatible_with = DEFAULT_COMPATIBILITY,
    283    defines = [
    284        'JPEGXL_ROOT_PACKAGE=\'"' + libjxl_root_package + '"\'',
    285    ],
    286    deps = [
    287        ":jpegli",
    288        ":jpegxl_extras",
    289        ":jpegxl_private",
    290    ] + libjxl_deps_runfiles,
    291 )
    292 
    293 TESTS = [path.partition(".")[0] for path in libjxl_tests + libjxl_jpegli_tests]
    294 
    295 [
    296    cc_test(
    297        name = test,
    298        timeout = libjxl_test_timeouts.get(test, "moderate"),
    299        srcs = [
    300            test + ".cc",
    301            "jpegli/testing.h",
    302            "jxl/testing.h",
    303        ],
    304        data = ["//:testdata"],
    305        shard_count = libjxl_test_shards.get(test, 1),
    306        deps = [
    307            ":jpegxl_extras",
    308            ":jpegxl_private",
    309            ":jpegxl_threads",
    310            ":test_utils",
    311        ] + libjxl_deps_gtest + libjxl_deps_hwy_test_util + libjxl_deps_hwy_nanobenchmark,
    312    )
    313    for test in TESTS
    314 ]