From: Siddhesh Poyarekar <sid@reserved-bit.com>
To: libc-alpha@sourceware.org
Subject: [COMMITTED] benchtests: Support for cross-building benchmarks
Date: Wed, 20 Apr 2016 07:51:00 -0000 [thread overview]
Message-ID: <20160420075118.GA9386@devel.intra.reserved-bit.com> (raw)
This patch adds full support for cross-building benchmarks. Some
benchmarks like those that need locales to be generated cannot be
built and are hence skipped for cross builds.
Tested by cross building for aarch64 on x86_64 and then running the
generated benchmark on aarch64.
* benchtests/Makefile (wcsmbs-benchset): Include only for
native builds and runs.
(LOCALES): Likewise.
(bench-build): Build timing-type here instead of the bench
target. Generate locale only for native builds.
* benchtests/README: Add note for cross-building.
---
ChangeLog | 7 +++++++
benchtests/Makefile | 23 +++++++++++++++++++----
benchtests/README | 4 +++-
3 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f26f8f8..ded1093 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2016-04-20 Siddhesh Poyarekar <sid@reserved-bit.com>
+ * benchtests/Makefile (wcsmbs-benchset): Include only for
+ native builds and runs.
+ (LOCALES): Likewise.
+ (bench-build): Build timing-type here instead of the bench
+ target. Generate locale only for native builds.
+ * benchtests/README: Add note for cross-building.
+
* benchtests/Makefile (bench-clean): Clean up extra-objs.
* benchtests/README: Update README to include instructions on
diff --git a/benchtests/Makefile b/benchtests/Makefile
index 779eb39..144b32e 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -39,11 +39,19 @@ string-benchset := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok \
strcoll memcpy-large memmove-large memset-large
+
+# Build and run locale-dependent benchmarks only if we're building natively.
+ifeq (no,$(cross-compiling))
wcsmbs-benchset := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
wcscmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk wcscspn \
wmemchr wmemset wmemcmp
+else
+wcsmbs-benchset :=
+endif
+
string-benchset-all := $(string-benchset) ${wcsmbs-benchset}
+ifeq (no,$(cross-compiling))
# We have to generate locales
LOCALES := en_US.UTF-8 tr_TR.UTF-8 cs_CZ.UTF-8 fa_IR.UTF-8 fr_FR.UTF-8 \
ja_JP.UTF-8 si_LK.UTF-8 en_GB.UTF-8 vi_VN.UTF-8 ar_SA.UTF-8 \
@@ -51,6 +59,7 @@ LOCALES := en_US.UTF-8 tr_TR.UTF-8 cs_CZ.UTF-8 fa_IR.UTF-8 fr_FR.UTF-8 \
he_IL.UTF-8 is_IS.UTF-8 es_ES.UTF-8 hi_IN.UTF-8 sv_SE.UTF-8 \
hu_HU.UTF-8 it_IT.UTF-8 sr_RS.UTF-8 zh_CN.UTF-8
include ../gen-locales.mk
+endif
stdlib-benchset := strtod
@@ -131,10 +140,16 @@ bench-clean:
rm -f $(timing-type) $(addsuffix .o,$(timing-type))
rm -f $(addprefix $(objpfx),$(bench-extra-objs))
-bench: $(timing-type) $(gen-locales) bench-build bench-set bench-func \
- bench-malloc
-# Target to only build the benchmark without running it.
-bench-build: $(binaries-bench) $(binaries-benchset) $(binaries-bench-malloc)
+bench: bench-build bench-set bench-func bench-malloc
+# Target to only build the benchmark without running it. We generate locales
+# only if we're building natively.
+ifeq (no,$(cross-compiling))
+bench-build: $(gen-locales) $(timing-type) $(binaries-bench) \
+ $(binaries-benchset) $(binaries-bench-malloc)
+else
+bench-build: $(timing-type) $(binaries-bench) $(binaries-benchset) \
+ $(binaries-bench-malloc)
+endif
bench-set: $(binaries-benchset)
for run in $^; do \
diff --git a/benchtests/README b/benchtests/README
index 847df87..2c5f381 100644
--- a/benchtests/README
+++ b/benchtests/README
@@ -49,7 +49,9 @@ benchmarks from the build directory as usual:
$ make bench
make sure the copy preserves timestamps by using either rsync or scp -p
-otherwise the above command may try to build the benchmark again.
+otherwise the above command may try to build the benchmark again. Benchmarks
+that require generated code to be executed during the build are skipped when
+cross-building.
Adding a function to benchtests:
===============================
--
2.5.5
reply other threads:[~2016-04-20 7:51 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160420075118.GA9386@devel.intra.reserved-bit.com \
--to=sid@reserved-bit.com \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).