linux/scripts/mkmakefile
<<
>>
Prefs
   1#!/bin/sh
   2# SPDX-License-Identifier: GPL-2.0
   3# Generates a small Makefile used in the root of the output
   4# directory, to allow make to be started from there.
   5# The Makefile also allow for more convinient build of external modules
   6
   7# Usage
   8# $1 - Kernel src directory
   9# $2 - Output directory
  10# $3 - version
  11# $4 - patchlevel
  12
  13
  14test ! -r $2/Makefile -o -O $2/Makefile || exit 0
  15# Only overwrite automatically generated Makefiles
  16# (so we do not overwrite kernel Makefile)
  17if test -e $2/Makefile && ! grep -q Automatically $2/Makefile
  18then
  19        exit 0
  20fi
  21if [ "${quiet}" != "silent_" ]; then
  22        echo "  GEN     $2/Makefile"
  23fi
  24
  25cat << EOF > $2/Makefile
  26# Automatically generated by $0: don't edit
  27
  28VERSION = $3
  29PATCHLEVEL = $4
  30
  31lastword = \$(word \$(words \$(1)),\$(1))
  32makedir := \$(dir \$(call lastword,\$(MAKEFILE_LIST)))
  33
  34ifeq ("\$(origin V)", "command line")
  35VERBOSE := \$(V)
  36endif
  37ifneq (\$(VERBOSE),1)
  38Q := @
  39endif
  40
  41MAKEARGS := -C $1
  42MAKEARGS += O=\$(if \$(patsubst /%,,\$(makedir)),\$(CURDIR)/)\$(patsubst %/,%,\$(makedir))
  43
  44MAKEFLAGS += --no-print-directory
  45
  46.PHONY: __sub-make \$(MAKECMDGOALS)
  47
  48__sub-make:
  49        \$(Q)\$(MAKE) \$(MAKEARGS) \$(MAKECMDGOALS)
  50
  51\$(filter-out __sub-make, \$(MAKECMDGOALS)): __sub-make
  52        @:
  53EOF
  54