cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

Makefile (2742B)


      1# SPDX-License-Identifier: GPL-2.0
      2#
      3# This is a simple wrapper Makefile that calls the main Makefile.perf
      4# with a -j option to do parallel builds
      5#
      6# If you want to invoke the perf build in some non-standard way then
      7# you can use the 'make -f Makefile.perf' method to invoke it.
      8#
      9
     10#
     11# Clear out the built-in rules GNU make defines by default (such as .o targets),
     12# so that we pass through all targets to Makefile.perf:
     13#
     14.SUFFIXES:
     15
     16#
     17# We don't want to pass along options like -j:
     18#
     19unexport MAKEFLAGS
     20
     21#
     22# Do a parallel build with multiple jobs, based on the number of CPUs online
     23# in this system: 'make -j8' on a 8-CPU system, etc.
     24#
     25# (To override it, run 'make JOBS=1' and similar.)
     26#
     27ifeq ($(JOBS),)
     28  JOBS := $(shell (getconf _NPROCESSORS_ONLN || egrep -c '^processor|^CPU[0-9]' /proc/cpuinfo) 2>/dev/null)
     29  ifeq ($(JOBS),0)
     30    JOBS := 1
     31  endif
     32endif
     33
     34#
     35# Only pass canonical directory names as the output directory:
     36#
     37ifneq ($(O),)
     38  FULL_O := $(shell cd $(PWD); readlink -f $(O) || echo $(O))
     39endif
     40
     41#
     42# Only accept the 'DEBUG' variable from the command line:
     43#
     44ifeq ("$(origin DEBUG)", "command line")
     45  ifeq ($(DEBUG),)
     46    override DEBUG = 0
     47  else
     48    SET_DEBUG = "DEBUG=$(DEBUG)"
     49  endif
     50else
     51  override DEBUG = 0
     52endif
     53
     54define print_msg
     55  @printf '  BUILD:   Doing '\''make \033[33m-j'$(JOBS)'\033[m'\'' parallel build\n'
     56endef
     57
     58define make
     59  @$(MAKE) -f Makefile.perf --no-print-directory -j$(JOBS) O=$(FULL_O) $(SET_DEBUG) $@
     60endef
     61
     62#
     63# Needed if no target specified:
     64# (Except for tags and TAGS targets. The reason is that the
     65# Makefile does not treat tags/TAGS as targets but as files
     66# and thus won't rebuilt them once they are in place.)
     67#
     68all tags TAGS:
     69	$(print_msg)
     70	$(make)
     71
     72ifdef MAKECMDGOALS
     73has_clean := 0
     74ifneq ($(filter clean,$(MAKECMDGOALS)),)
     75  has_clean := 1
     76endif # clean
     77
     78ifeq ($(has_clean),1)
     79  rest := $(filter-out clean,$(MAKECMDGOALS))
     80  ifneq ($(rest),)
     81$(rest): clean
     82  endif # rest
     83endif # has_clean
     84endif # MAKECMDGOALS
     85
     86#
     87# Explicitly disable parallelism for the clean target.
     88#
     89clean:
     90	$(make) -j1
     91
     92#
     93# The build-test target is not really parallel, don't print the jobs info,
     94# it also uses only the tests/make targets that don't pollute the source
     95# repository, i.e. that uses O= or builds the tarpkg outside the source
     96# repo directories.
     97#
     98# For a full test, use:
     99#
    100# make -C tools/perf -f tests/make
    101#
    102build-test:
    103	@$(MAKE) SHUF=1 -f tests/make REUSE_FEATURES_DUMP=1 MK=Makefile SET_PARALLEL=1 --no-print-directory tarpkg make_static make_with_gtk2 out
    104
    105build-test-tarball:
    106	@$(MAKE) -f tests/make REUSE_FEATURES_DUMP=1 MK=Makefile SET_PARALLEL=1 --no-print-directory out
    107
    108#
    109# All other targets get passed through:
    110#
    111%: FORCE
    112	$(print_msg)
    113	$(make)
    114
    115.PHONY: tags TAGS FORCE Makefile