mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-06-19 02:15:38 +03:00
The initial migration to a Bazel based build. All attempts have been made to maintain configuration parity with the upstream build.
214 lines
5.3 KiB
Text
214 lines
5.3 KiB
Text
load("@bazel_skylib//lib:selects.bzl", "selects")
|
|
load("@bazel_skylib//rules:common_settings.bzl", "int_flag", "string_flag")
|
|
|
|
### Bazel-ification of platform feature detection performed by ./configure ###
|
|
|
|
# If "yes", the glibc hooks __libc_calloc, __libc_free, __libc_malloc, etc are available for override
|
|
string_flag(
|
|
name = "glibc_overrides_support",
|
|
build_setting_default = "__auto__",
|
|
values = [
|
|
"yes",
|
|
"no",
|
|
"__auto__",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "has_glibc_overrides",
|
|
flag_values = {":glibc_overrides_support": "yes"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "no_glibc_overrides",
|
|
flag_values = {":glibc_overrides_support": "no"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
# Whether the target libc has `malloc_size` available for linking
|
|
string_flag(
|
|
name = "malloc_size_support",
|
|
build_setting_default = "__auto__",
|
|
values = [
|
|
"yes",
|
|
"no",
|
|
"__auto__",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "has_malloc_size",
|
|
flag_values = {":malloc_size_support": "yes"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "no_malloc_size",
|
|
flag_values = {":malloc_size_support": "no"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
# JEMALLOC_USABLE_SIZE_CONST: Whether malloc_usable_size can accepts const, glibc on linux apparently omits it
|
|
string_flag(
|
|
name = "usable_size_const",
|
|
build_setting_default = "__auto__",
|
|
make_variable = "JEMALLOC_USABLE_SIZE_CONST",
|
|
values = [
|
|
"",
|
|
"const",
|
|
"__auto__",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
string_flag(
|
|
name = "memalign_support",
|
|
build_setting_default = "__auto__",
|
|
values = [
|
|
"yes",
|
|
"no",
|
|
"__auto__",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "has_memalign",
|
|
flag_values = {":memalign_support": "yes"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "no_memalign",
|
|
flag_values = {":memalign_support": "no"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
# LG_HUGEPAGE Base 2 log of system huge page size, can be explicitly set --with-lg-hugepage
|
|
# The correct setting depends on the kernel. configure defaults to 21 (2 MiB) when detection fails and
|
|
# there is runtime detection to gracefully handle a misconfigure value
|
|
int_flag(
|
|
name = "lg_hugepage",
|
|
build_setting_default = 21,
|
|
make_variable = "LG_HUGEPAGE",
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
# LG_PAGE Base 2 log of system page size, can be explicitly set --with-lg-page
|
|
string_flag(
|
|
name = "lg_page",
|
|
build_setting_default = "__auto__",
|
|
make_variable = "LG_PAGE",
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
# LLG_VADDR Number of significant virtual address bits, can be explicitly set --with-lg-vaddr
|
|
# The configure cross compilation fallback is the default. This should be safe for any 64-bit target even if the OS
|
|
# doesn't allow it because of runtime checks. However, 32-bit architectures should explicitly declare this
|
|
# need to declare
|
|
int_flag(
|
|
name = "lg_vaddr",
|
|
build_setting_default = 57,
|
|
make_variable = "LG_VADDR",
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
string_flag(
|
|
name = "valloc_support",
|
|
build_setting_default = "__auto__",
|
|
values = [
|
|
"yes",
|
|
"no",
|
|
"__auto__",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "has_valloc",
|
|
flag_values = {":valloc_support": "yes"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
config_setting(
|
|
name = "no_valloc",
|
|
flag_values = {":valloc_support": "no"},
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
### Convenience settings groups ###
|
|
|
|
# ARM
|
|
selects.config_setting_group(
|
|
name = "aarch",
|
|
match_any = [
|
|
"@platforms//cpu:aarch32",
|
|
"@platforms//cpu:aarch64",
|
|
],
|
|
visibility = ["//:__subpackages__"],
|
|
)
|
|
|
|
# X86
|
|
selects.config_setting_group(
|
|
name = "x86",
|
|
match_any = [
|
|
"@platforms//cpu:x86_32",
|
|
"@platforms//cpu:x86_64",
|
|
],
|
|
visibility = ["//:__subpackages__"],
|
|
)
|
|
|
|
# BSD systems
|
|
selects.config_setting_group(
|
|
name = "bsd",
|
|
match_any = [
|
|
"@platforms//os:freebsd",
|
|
"@platforms//os:ios",
|
|
"@platforms//os:macos",
|
|
"@platforms//os:openbsd",
|
|
"@platforms//os:tvos",
|
|
"@platforms//os:watchos",
|
|
],
|
|
visibility = ["//:__subpackages__"],
|
|
)
|
|
|
|
# Darwin systems
|
|
selects.config_setting_group(
|
|
name = "darwin",
|
|
match_any = [
|
|
"@platforms//os:ios",
|
|
"@platforms//os:macos",
|
|
"@platforms//os:tvos",
|
|
"@platforms//os:watchos",
|
|
],
|
|
visibility = ["//:__subpackages__"],
|
|
)
|
|
|
|
# GNU systems
|
|
selects.config_setting_group(
|
|
name = "gnu",
|
|
match_any = [
|
|
"@platforms//os:android",
|
|
"@platforms//os:linux",
|
|
],
|
|
visibility = ["//:__subpackages__"],
|
|
)
|
|
|
|
# POSIX systems
|
|
selects.config_setting_group(
|
|
name = "posix",
|
|
match_any = [
|
|
"@platforms//os:android",
|
|
"@platforms//os:freebsd",
|
|
"@platforms//os:ios",
|
|
"@platforms//os:linux",
|
|
"@platforms//os:macos",
|
|
"@platforms//os:openbsd",
|
|
"@platforms//os:tvos",
|
|
"@platforms//os:watchos",
|
|
],
|
|
visibility = ["//:__subpackages__"],
|
|
)
|