| load("@rules_cc//cc:defs.bzl", "cc_library") |
| load("@rules_license//rules:license.bzl", "license") |
| load("//tools:cc.bzl", "COPTS") |
| load("//tools:transition.bzl", "PLATFORM", "transition_default_constraints") |
| |
| #### |
| # Due to the complexity of the build, the overlay is maintained independently. |
| # See https://github.com/sallustfire/jemalloc/tree/bcr-5.3.0?tab=readme-ov-file#bazel-build-of-jemalloc |
| #### |
| |
| package(default_applicable_licenses = [":license"]) |
| |
| license( |
| name = "license", |
| license_kinds = ["@rules_license//licenses/spdx:BSD-2-Clause"], |
| license_text = "COPYING", |
| ) |
| |
| alias( |
| name = "jemalloc", |
| actual = ":jemalloc_with_defaults", |
| visibility = ["//visibility:public"], |
| ) |
| |
| cc_library( |
| name = "jemalloc_core", |
| srcs = [ |
| "src/arena.c", |
| "src/background_thread.c", |
| "src/base.c", |
| "src/bin.c", |
| "src/bin_info.c", |
| "src/bitmap.c", |
| "src/buf_writer.c", |
| "src/cache_bin.c", |
| "src/ckh.c", |
| "src/counter.c", |
| "src/ctl.c", |
| "src/decay.c", |
| "src/div.c", |
| "src/ecache.c", |
| "src/edata.c", |
| "src/edata_cache.c", |
| "src/ehooks.c", |
| "src/emap.c", |
| "src/eset.c", |
| "src/exp_grow.c", |
| "src/extent.c", |
| "src/extent_dss.c", |
| "src/extent_mmap.c", |
| "src/fxp.c", |
| "src/hook.c", |
| "src/hpa.c", |
| "src/hpa_hooks.c", |
| "src/hpdata.c", |
| "src/inspect.c", |
| "src/jemalloc.c", |
| "src/large.c", |
| "src/log.c", |
| "src/malloc_io.c", |
| "src/mutex.c", |
| "src/nstime.c", |
| "src/pa.c", |
| "src/pa_extra.c", |
| "src/pac.c", |
| "src/pages.c", |
| "src/pai.c", |
| "src/peak_event.c", |
| "src/prof.c", |
| "src/prof_data.c", |
| "src/prof_log.c", |
| "src/prof_recent.c", |
| "src/prof_stats.c", |
| "src/prof_sys.c", |
| "src/psset.c", |
| "src/rtree.c", |
| "src/safety_check.c", |
| "src/san.c", |
| "src/san_bump.c", |
| "src/sc.c", |
| "src/sec.c", |
| "src/stats.c", |
| "src/sz.c", |
| "src/tcache.c", |
| "src/test_hooks.c", |
| "src/thread_event.c", |
| "src/ticker.c", |
| "src/tsd.c", |
| "src/witness.c", |
| ] + select({ |
| "//settings/flags:zone_allocator": ["src/zone.c"], |
| "//conditions:default": [], |
| }) + |
| select({ |
| "//settings/compiler:msvc_compatible": [ |
| "include/msvc_compat/C99/stdbool.h", |
| "include/msvc_compat/C99/stdint.h", |
| "include/msvc_compat/strings.h", |
| "include/msvc_compat/windows_extra.h", |
| ], |
| "//conditions:default": [], |
| }) + select({ |
| "//settings/flags:cxx": ["src/jemalloc_cpp.cpp"], |
| "//conditions:default": [], |
| }), |
| hdrs = ["//include/jemalloc"], |
| copts = ["-Iinclude/jemalloc/internal"] + select({ |
| "//settings/compiler:msvc_compatible": [ |
| "-Iinclude/msvc_compat", |
| "-Iinclude/msvc_compat/C99", |
| ], |
| "//conditions:default": [], |
| }) + COPTS, |
| includes = ["include"], |
| linkopts = select({ |
| "@platforms//os:android": ["-ldl"], |
| "@platforms//os:linux": [ |
| "-ldl", |
| "-lpthread", |
| "-lrt", |
| ], |
| "//conditions:default": [], |
| }) + select({ |
| "//settings/flags:prof": ["-lm"], |
| "//conditions:default": [], |
| }), |
| local_defines = select({ |
| "//settings:jet": ["JEMALLOC_JET"], |
| "//conditions:default": [], |
| }) + select({ |
| "//settings:no_private_namespace": ["JEMALLOC_NO_PRIVATE_NAMESPACE"], |
| "//conditions:default": [], |
| }), |
| tags = ["manual"], |
| visibility = ["//:__subpackages__"], |
| deps = ["//include/jemalloc/internal"] + select({ |
| "//settings/flags:prof_libunwind": ["@libunwind"], |
| "//conditions:default": [], |
| }), |
| ) |
| |
| transition_default_constraints( |
| name = "jemalloc_with_defaults", |
| src = ":jemalloc_core", |
| platform = PLATFORM, |
| settings = {}, |
| ) |
| |
| # C_UTIL_INTEGRATION_SRCS from the Makefile which are shared with the integration testlib |
| cc_library( |
| name = "utils", |
| srcs = [ |
| "src/malloc_io.c", |
| "src/nstime.c", |
| "src/ticker.c", |
| ], |
| hdrs = ["//include/jemalloc"], |
| copts = ["-Iinclude/jemalloc/internal"] + COPTS, |
| includes = ["include"], |
| linkopts = select({ |
| "@platforms//os:linux": [ |
| "-lpthread", |
| "-lrt", |
| ], |
| "//conditions:default": [], |
| }), |
| linkstatic = True, |
| tags = ["manual"], |
| visibility = ["//:__subpackages__"], |
| deps = ["//include/jemalloc/internal"], |
| ) |