]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
benchtests: Support for cross-building benchmarks
authorSiddhesh Poyarekar <sid@reserved-bit.com>
Wed, 20 Apr 2016 07:49:01 +0000 (13:19 +0530)
committerSiddhesh Poyarekar <sid@reserved-bit.com>
Wed, 20 Apr 2016 07:49:01 +0000 (13:19 +0530)
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
benchtests/Makefile
benchtests/README

index f26f8f8f1a97843c3bf37c6887c319b60a142201..ded10937faa4db5266541f61fbd75d8d78f759ce 100644 (file)
--- 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
index 779eb395d5d10ce537743c1b8ccb708e4a15df5e..144b32ea3891ce181c54426d5656a787bee03966 100644 (file)
@@ -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 \
index 847df87c9614cd9b5dfe5d29d091e35f5183c3c8..2c5f38113593ea7da90895266c8fd523fa21c5a1 100644 (file)
@@ -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:
 ===============================