mirror of
https://github.com/google/benchmark.git
synced 2024-12-28 05:20:14 +08:00
b93f5a5929
* Add pre-commit config and GitHub Actions job Contains the following hooks: * buildifier - for formatting and linting Bazel files. * mypy, ruff, isort, black - for Python typechecking, import hygiene, static analysis, and formatting. The pylint CI job was changed to be a pre-commit CI job, where pre-commit is bootstrapped via Python. Pylint is currently no longer part of the code checks, but can be re-added if requested. The reason to drop was that it does not play nicely with pre-commit, and lots of its functionality and responsibilities are actually covered in ruff. * Add dev extra to pyproject.toml for development installs * Clarify that pre-commit contains only Python and Bazel hooks * Add one-line docstrings to Bazel modules * Apply buildifier pre-commit fixes to Bazel files * Apply pre-commit fixes to Python files * Supply --profile=black to isort to prevent conflicts * Fix nanobind build file formatting * Add tooling configs to `pyproject.toml` In particular, set line length 80 for all Python files. * Reformat all Python files to line length 80, fix return type annotations Also ignores the `tools/compare.py` and `tools/gbench/report.py` files for mypy, since they emit a barrage of errors which we can deal with later. The errors are mostly related to dynamic classmethod definition.
60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
load("@bazel_skylib//lib:selects.bzl", "selects")
|
|
|
|
licenses(["notice"])
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
config_setting(
|
|
name = "msvc_compiler",
|
|
flag_values = {"@bazel_tools//tools/cpp:compiler": "msvc-cl"},
|
|
)
|
|
|
|
selects.config_setting_group(
|
|
name = "winplusmsvc",
|
|
match_all = [
|
|
"@platforms//os:windows",
|
|
":msvc_compiler",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "nanobind",
|
|
srcs = glob([
|
|
"src/*.cpp",
|
|
]),
|
|
additional_linker_inputs = select({
|
|
"@platforms//os:macos": [":cmake/darwin-ld-cpython.sym"],
|
|
"//conditions:default": [],
|
|
}),
|
|
copts = select({
|
|
":msvc_compiler": [
|
|
"/EHsc", # exceptions
|
|
"/Os", # size optimizations
|
|
"/GL", # LTO / whole program optimization
|
|
],
|
|
# these should work on both clang and gcc.
|
|
"//conditions:default": [
|
|
"-fexceptions",
|
|
"-flto",
|
|
"-Os",
|
|
],
|
|
}),
|
|
includes = [
|
|
"ext/robin_map/include",
|
|
"include",
|
|
],
|
|
linkopts = select({
|
|
":winplusmsvc": ["/LTGC"], # Windows + MSVC.
|
|
"@platforms//os:macos": ["-Wl,@$(location :cmake/darwin-ld-cpython.sym)"], # Apple.
|
|
"//conditions:default": [],
|
|
}),
|
|
textual_hdrs = glob(
|
|
[
|
|
"include/**/*.h",
|
|
"src/*.h",
|
|
"ext/robin_map/include/tsl/*.h",
|
|
],
|
|
),
|
|
deps = ["@python_headers"],
|
|
)
|