change cmp_xchg to work better
[benchmarks.git] / Makefile
1 .PHONY: all clean configure
2
3 host_arch = $(shell uname -m)
4 ifeq ($(host_arch),x86_64)
5 enabled_arches = ppc64le aarch64 x86_64
6 else ifeq ($(host_arch),aarch64)
7 # debian 10 doesn't have cross-compilers for ppc64le from aarch64
8 enabled_arches = aarch64 x86_64
9 else ifeq ($(host_arch),ppc64le)
10 enabled_arches = ppc64le aarch64 x86_64
11 else
12 $(error unsupported arch $(host_arch))
13 endif
14
15 all: $(foreach arch,$(enabled_arches),build-$(arch)/benchmarks)
16
17 common_cmake_flags = -S .
18 common_cmake_flags += -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE
19 common_cmake_flags += -DCMAKE_BUILD_TYPE=RelWithDebInfo
20
21 reset_make_env = "MAKEFLAGS=" "MFLAGS=" "MAKELEVEL=" "MAKE_TERMERR=" "MAKE_TERMOUT="
22
23 .installed-dependencies: install-deps.sh
24 ./install-deps.sh $(enabled_arches)
25 touch .installed-dependencies
26
27 build-ppc64le/Makefile: toolchain-powerpc64le-linux-gnu.cmake CMakeLists.txt .installed-dependencies
28 rm -fr build-ppc64le
29 env $(reset_make_env) cmake $(common_cmake_flags) -B build-ppc64le -DCMAKE_TOOLCHAIN_FILE=toolchain-powerpc64le-linux-gnu.cmake
30
31 build-aarch64/Makefile: toolchain-aarch64-linux-gnu.cmake CMakeLists.txt .installed-dependencies
32 rm -fr build-aarch64
33 env $(reset_make_env) cmake $(common_cmake_flags) -B build-aarch64 -DCMAKE_TOOLCHAIN_FILE=toolchain-aarch64-linux-gnu.cmake
34
35 build-x86_64/Makefile: toolchain-x86_64-linux-gnu.cmake CMakeLists.txt .installed-dependencies
36 rm -fr build-x86_64
37 env $(reset_make_env) cmake $(common_cmake_flags) -B build-x86_64 -DCMAKE_TOOLCHAIN_FILE=toolchain-x86_64-linux-gnu.cmake
38
39 configure: $(foreach arch,$(enabled_arches),build-$(arch)/Makefile)
40
41 .PHONY: __force-run
42
43 build-ppc64le/benchmarks: build-ppc64le/Makefile __force-run
44 $(MAKE) -C build-ppc64le benchmarks
45
46 build-aarch64/benchmarks: build-aarch64/Makefile __force-run
47 $(MAKE) -C build-aarch64 benchmarks
48
49 build-x86_64/benchmarks: build-x86_64/Makefile __force-run
50 $(MAKE) -C build-x86_64 benchmarks
51
52 clean:
53 rm -fr build-ppc64le build-aarch64 build-x86_64 .installed-dependencies
54