1*b016a0ddSIngo Molnar 2*b016a0ddSIngo Molnar# 3*b016a0ddSIngo Molnar# Clear out the built-in rules GNU make defines by default (such as .o targets), 4*b016a0ddSIngo Molnar# so that we pass through all targets to Makefile.perf: 5*b016a0ddSIngo Molnar# 6*b016a0ddSIngo Molnar.SUFFIXES: 7*b016a0ddSIngo Molnar 8bd69cc28SIngo Molnar# 9bd69cc28SIngo Molnar# Do a parallel build with multiple jobs, based on the number of CPUs online 10bd69cc28SIngo Molnar# in this system: 'make -j8' on a 8-CPU system, etc. 11bd69cc28SIngo Molnar# 12bd69cc28SIngo Molnar# (To override it, run 'make JOBS=1' and similar.) 13bd69cc28SIngo Molnar# 14bd69cc28SIngo Molnarifeq ($(JOBS),) 15bd69cc28SIngo Molnar JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null) 16bd69cc28SIngo Molnar ifeq ($(JOBS),) 17bd69cc28SIngo Molnar JOBS := 1 18bd69cc28SIngo Molnar endif 19bd69cc28SIngo Molnarendif 20c29ede61SArnaldo Carvalho de Melo 21bd69cc28SIngo Molnarexport JOBS 22bd69cc28SIngo Molnar 2373a725f0SIngo Molnardefine print_msg 2473a725f0SIngo Molnar @printf ' BUILD: Doing '\''make \033[33m-j'$(JOBS)'\033[m'\'' parallel build\n' 2573a725f0SIngo Molnarendef 2673a725f0SIngo Molnar 2773a725f0SIngo Molnardefine make 2873a725f0SIngo Molnar @$(MAKE) -f Makefile.perf --no-print-directory -j$(JOBS) $@ 2973a725f0SIngo Molnarendef 30bd69cc28SIngo Molnar 31bd69cc28SIngo Molnar# 32bd69cc28SIngo Molnar# Needed if no target specified: 33bd69cc28SIngo Molnar# 34a3d1ee10SMichael Wittenall: 3573a725f0SIngo Molnar $(print_msg) 3673a725f0SIngo Molnar $(make) 3786470930SIngo Molnar 3873a725f0SIngo Molnar# 3973a725f0SIngo Molnar# The clean target is not really parallel, don't print the jobs info: 4073a725f0SIngo Molnar# 4173a725f0SIngo Molnarclean: 4273a725f0SIngo Molnar $(make) 4373a725f0SIngo Molnar 4473a725f0SIngo Molnar# 4573a725f0SIngo Molnar# All other targets get passed through: 4673a725f0SIngo Molnar# 47bd69cc28SIngo Molnar%: 4873a725f0SIngo Molnar $(print_msg) 4973a725f0SIngo Molnar $(make) 50