Commit Graph

24 Commits

Author SHA1 Message Date
Raghu Raja
398a8ac2e8
[bazel] Build libpfm as a dependency to allow collection of perf counters (#1408)
* Build libpfm as a dependency to allow collection of perf counters

This commit builds libpfm using rules_foreign_cc and lets the default
build of the benchmark library support perf counter collection without
needing additional work from users.

Tested with a custom target:

```
bazel run \
        --override_repository=com_github_google_benchmark=/home/raghu/benchmark \
        -c opt :test-bench -- "--benchmark_perf_counters=INSTRUCTIONS,CYCLES"
Using profile: local

<snip>

----------------------------------------------------------------------
Benchmark            Time             CPU   Iterations UserCounters...
----------------------------------------------------------------------
BM_Test      0.279 ns        0.279 ns   1000000000 CYCLES=1.00888 INSTRUCTIONS=2

```

Signed-off-by: Raghu Raja <raghu@enfabrica.net>

* Adding myself to the CONTRIBUTORS file per CLA guidance

Enfabrica has already signed a corporate CLA.

Signed-off-by: Raghu Raja <raghu@enfabrica.net>

Signed-off-by: Raghu Raja <raghu@enfabrica.net>
2022-10-31 11:03:59 +00:00
Vy Nguyen
141b554e3a
Remove stray comment and added missing header (#1444)
- The export.h is no longer generated, so removed the comment.
- Added export.h to benchmark_main
2022-07-26 09:00:49 +01:00
Dominic Hamon
7b3ac07517
Stop generating the export header and just check it in (#1435)
* Stop generating the export header and just check it in

* format the new header

* support windows

* format the header again

* avoid depending on internal macro

* ensure we define the right thing for windows static builds

* support older cmake

* and for tests
2022-07-20 20:34:39 +01:00
Dominic Hamon
b7afda2cd2
Revert "Add possibility to ask for libbenchmark version number (#1004) (#1403)" (#1417)
This reverts commit efadf67a12.
2022-06-20 17:52:03 +01:00
Matthias Donaubauer
efadf67a12
Add possibility to ask for libbenchmark version number (#1004) (#1403)
* Add possibility to ask for libbenchmark version number (#1004)

Add a header which holds the current major, minor, and
patch number of the library. The header is auto generated
by CMake.

* Do not generate unused functions (#1004)

* Add support for version number in bazel (#1004)

* Fix clang format #1004

* Fix more clang format problems (#1004)

* Use git version feature of cmake to determine current lib version

* Rename version_config header to version

* Bake git version into bazel build

* Use same input config header as in cmake for version.h

* Adapt the releasing.md to include versioning in bazel
2022-06-20 09:45:50 +01:00
Paul Wankadia
808571a52f
Fix Bazel build breakage caused by commit 6a894bd. (#1374) 2022-03-17 09:29:50 +00:00
Paul Wankadia
6a894bd555
Build //:benchmark as a static library only. (#1373)
If someone or something ever needs the dynamic library as a Bazel build
artifact, we can figure that out for them then, but right now, there is
no strong reason to be wrangling various `export.h`-controlling macros.

Fixes #1372.
2022-03-17 08:47:45 +00:00
Paul Wankadia
e057a7cee2
Make generate_export_header.bzl work for Windows. (#1355)
* Make generate_export_header.bzl work for Windows.

While I'm here, bring the generated code slightly closer to what CMake
would generate nowadays.

Fixes #1351.

* Fix define.

* Fix export_import_condition.

* Fix guard.
2022-02-24 14:42:59 +00:00
Dominic Hamon
e82a6ed704
avoid case sensitive issues with duplicated names (#1354) 2022-02-22 13:53:29 +00:00
Dominic Hamon
b46208fcf0
move bzl file out of tools (#1352) 2022-02-21 12:03:18 +00:00
Dominic Hamon
28b210ebb8
simplify reference to internal path (#1349) 2022-02-15 14:06:31 +00:00
Sergiu Deitsch
9e47d070fe
annotate and export public symbols (#1321) 2022-02-14 10:48:53 +00:00
Teodor Spæren
8401429e74
Remove bazelbuild/rules_cc dependency (#1283)
It seems according to [1] that bazelbuild/rules_cc has been put on hold
and that the recommended way for now, is to use the native cc rules.

[1]: https://github.com/bazelbuild/rules_go/pull/2950
2021-11-14 12:02:58 +00:00
Manuel Binna
38b767e58a
Bazel qnx (#1192)
* Don't link pthread on QNX

On QNX, pthread is part of libc [1]. There's no separate pthread library
to link.

[1] https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.lib_ref/topic/p/pthread_create.html

* Explain that QNX doesn't have pthread lib
2021-06-28 13:46:08 +01:00
Yannic
8df87f6c87
Revert "Add bazel target for benchmark_release (#1078)" (#1081)
This reverts commit d8254bb9eb.
2021-01-05 09:54:04 +00:00
Aidan Wolter
d8254bb9eb
Add bazel target for benchmark_release (#1078)
Fixes google#1077

Bazel clients currently cannot build the benchmark library in Release
mode. This commit adds a new target ":benchmark_release" to enable this.
2020-12-22 09:54:33 +00:00
Yesudeep Mangalapilly
4751550871
Revert previous linker additions for FreeBSD as the problem is Bazel using /usr/bin/clang instead of /usr/bin/clang++ to link C++ code. (#1035) 2020-09-03 10:59:15 +01:00
Yesudeep Mangalapilly
4475ff6b8a
Adds -lm linker flag for FreeBSD/OpenBSD and uses github.com/bazelbuil… (#1032)
* Adds -lm linker flag for (Free|Open)BSD and uses github.com/bazelbuild/platforms for platform detection.

* Prefer selects.with_or to select the linkopts.

* @platforms appears to be implicitly available. @bazel_skylib would require updating every dependent repository.

* Re-enable platforms package.
2020-08-28 08:46:12 +01:00
Paul Wankadia
309de5988e Switch to Starlark for C++ rules. (#887)
While I'm here, format all of the files that I touched.
2019-10-08 11:09:51 +01:00
Alex Strelnikov
e776aa0275 Add benchmark_main target. (#601)
* Add benchmark_main library with support for Bazel.

* fix newline at end of file

* Add CMake support for benchmark_main.

* Mention optionally using benchmark_main in README.
2018-05-25 11:18:58 +01:00
Alex Strelnikov
62a9d756ea Update bazel WORKSPACE and BUILD files to work better on Windows. (#581)
Note, bazel only supports MSVC on Windows, and not MinGW, so
linking against shlwapi.lib only needs to follow MSVC conventions.

git_repository() did not work in local testing, so is swapped for
http_archive(). The latter is also documented as the preferred way
to depend on an external library in bazel.
2018-05-02 11:23:18 +01:00
Alex Strelnikov
b678a2026d Fix bazel config to link against pthread. (#579)
The benchmarks in the test/ currently build because they all
include a dep on gtest, which brings in pthread when needed.
2018-05-01 15:24:38 +01:00
Dominic Hamon
df60aeb266
Rely on compiler intrinsics to identify regex engine. (#555)
Having the copts set on a per-target level can lead to ODR violations
in some cases. Avoid this by ensuring the regex engine is picked
through compiler intrinsics in the header directly.
2018-03-23 11:45:15 +00:00
jmillikin-stripe
a9beffda0b Add support for building with Bazel. (#533)
* Add myself to CONTRIBUTORS under the corp CLA for Stripe, Inc.

* Add support for building with Bazel.

Limitations compared to existing CMake rules:
* Defaults to using C++11 `<regex>`, with an override via Bazel flag
  `--define` of `google_benchmark.have_regex`. The TravisCI config sets
  the regex implementation to `posix` because it uses ancient compilers.
* Debug vs Opt mode can't be set per test. TravisCI runs all the tests
  in debug mode to satisfy `diagnostics_test`, which depends on `CHECK`
  being live.

* Set Bazel workspace name so other repos can refer to it by stable name.

This is recommended by the Bazel style guide to avoid each dependent
workspace defining its own name for the dependency.
2018-03-08 12:48:46 +00:00