diff --git a/benchtests/Makefile b/benchtests/Makefile index 1530939a8c..4fcd73131a 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -110,11 +110,23 @@ else bench-malloc := $(filter malloc-%,${BENCHSET}) endif -$(addprefix $(objpfx)bench-,$(bench-math)): $(libm) -$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm) -$(addprefix $(objpfx)bench-,$(bench-pthread)): $(shared-thread-library) -$(addprefix $(objpfx)bench-,$(bench-malloc)): $(shared-thread-library) -$(addprefix $(objpfx)bench-,pthread-locks): $(libm) +ifeq (${STATIC-BENCHTESTS},yes) ++link-benchtests = $(+link-static-tests) +link-libc-benchtests = $(link-libc-static) +libm-benchtests = $(common-objpfx)math/libm.a +thread-library-benchtests = $(static-thread-library) +else +link-libc-benchtests = $(link-libc) ++link-benchtests = $(+link-tests) +thread-library-benchtests = $(shared-thread-library) +libm-benchtests = $(libm) +endif + +$(addprefix $(objpfx)bench-,$(bench-math)): $(libm-benchtests) +$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm-benchtests) +$(addprefix $(objpfx)bench-,$(bench-pthread)): $(thread-library-benchtests) +$(addprefix $(objpfx)bench-,$(bench-malloc)): $(thread-library-benchtests) +$(addprefix $(objpfx)bench-,pthread-locks): $(libm-benchtests) @@ -270,9 +282,9 @@ bench-link-targets = $(timing-type) $(binaries-bench) $(binaries-benchset) \ $(bench-link-targets): %: %.o $(objpfx)json-lib.o \ $(link-extra-libs-tests) \ - $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ + $(sort $(filter $(common-objpfx)lib%,$(link-libc-benchtests))) \ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) - $(+link-tests) + $(+link-benchtests) $(bench-link-targets): LDFLAGS += $(link-bench-bind-now) diff --git a/benchtests/README b/benchtests/README index 44736d7e63..4d83a05b4b 100644 --- a/benchtests/README +++ b/benchtests/README @@ -62,6 +62,16 @@ 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. +Building benchmarks as static executables: +========================================= + +To build benchmarks as static executables, on the build system, run: + + $ make STATIC-BENCHTESTS=yes bench-build + +You can copy benchmark executables to another machine and run them +without copying the source nor build directories. + Running subsets of benchmarks: ==============================